Skip to content

Move the Odoo images to Python 3.14 behind a preview-lane proof, then raise the Ruff target #373

Closed

Description

@shiny-code-app

Why

Chris, November 3, 2026, in the Supervisor session: the plan is to standardize on Python 3.14. The Odoo images for OPW and CM run 3.13.15 today under Odoo 19 and 20. The shared style guide (skills/references/python-odoo-style.md) orders the move: upgrade the images first, then raise the Ruff target-version in one change and let the UP rules modernize the code. Director decision Q1217 on #302 set the shared inspection profile to check 3.13 and 3.14 together in the meantime, so code that would break on 3.14 is flagged before the images move. Python 3.14 defers annotations, which removes the import-time failure for quoted Odoo types beside |, but modules still need from __future__ import annotations because the registry and inspection read annotations.

This touches the runtime of live products, so it lands the way the Launchplane milestone "A breaking update stops at a preview" describes: one preview lane first, then testing, then the Client's accepted release; never straight to production.

Finish Line

Scope under the Supervisor’s November4 clarification: Python3.14 adoption is for Odoo20; Odoo19 remains on Python3.13. The earlier “everywhere” wording is not authority to upgrade19 or remove its compatibility checks.

  1. Odoo20 support and compiled-dependency compatibility are qualified by the existing image-owner evidence. Reuse the completed trial and normal build provenance; repeat qualification only for a genuinely changed input, not this coordination note.
  2. One CM20 preview consumes the qualified3.14 image through the existing reviewed pin path, with matching serving source/image, in-image Python provenance and normal checks green. Preserve the currently IN_USE CM290 lane while arranging that actual adoption through its existing source owner.
  3. CM and OPW Odoo20 testing adoption follows the preview through their existing delivery owners. Production follows only each Client’s accepted release. This source work supplies no production or unrelated19 upgrade authority.
  4. After the actual20 preview-first proof, deliver the single shared Ruff target raise and appropriate UP changes through review/current-head checks and the normal train. Preserve effective lint/inspection compatibility for supported19/Python3.13 consumers. After Ruff landing, retire only the obsolete20 temporary dual target; independently supported19/root-tool13 profiles remain.302 is already closed and is not reopened merely to repeat retirement.

Report Removed: and Net lines:.

Current Status

State: complete. Remaining scoped source follow-through landed through the normal train as #419 at1f4399aa029c76aafb307a0324a72061518c602a. This issue is closed/completed; native relationships and status reconciled with complete coverage. Programme277 was not edited.
Next actor: agent:01a1a78b-2c93-7c91-af85-11d5396a26d1
Next action: consume the finite DK373-RUFF-FINISH-1109 result. No source task or decision remains on this issue. Existing tenant pin-adoption owners should include the recorded CM ten-file formatter-only exception syntax updates when adopting this devkit; this is no runtime/testing/production adoption instruction.

Ruff now uses each consumer's existing requires-python through normal discovery: actual CM20 source resolves3.14, OPW19 and root tools remain3.13. Metadata-free shared source uses Ruff's conservative default, remains3.13 compatible and has identical clean lint before/after. The shared profile still serves supported19/root13 and20/14; no separate20-only temporary entry existed to retire. No new profile or policy surface.

The weighed Anthropic claude-sonnet-5-5 review and explicit unsupported native-inspection coverage, exact-head source/consumer receipts and checked Ready are complete. Main CI42723179500 and Push-on-main42723179002 pass at the actual landing. Local default checkout is clean and fast-forwarded to that landing. Native inspection remains UNKNOWN because the exact changed TOML/Markdown selection is unsupported; no code/profile inspection pass is claimed.

Historical preview-first proof remains https://github.com/cbusillo/odoo-tenant-cm/pull/356#issuecomment-6709242810, not a current preview/testing/production claim. No image qualification/native data trial, runtime/preview mutation, package/image change, Client acceptance carry or production action occurred. OPW030 and CM5206/3590 custody and all real Client/data/use/needed-copy/release gates remain separate. Original cited refs, trees and evidence are preserved.

Removed: shared hard-coded Ruff target and obsolete global-runtime wording. Net lines:+8 (14 added,6 removed), for documentation of built-in inference and supported profile scope.

Exact own release: #373 (comment) . Final full-native audit exits0: claims_clear:true, coverage.complete:true, blocked:[], unresolved_invocations:[], search_errors:[],16requests. Configured retirement preview/apply passed; independent readback confirms this own worktree and local branch absent. Default checkout is clean/current. No task process remains. Private task evidence stays under normal retention for the lead and consumer-pin follow-through; delete after consumption/expiry. All cited originals and other operators custody remain preserved.

Activity

  1. shiny-code-app commented on Nov 3, 2026

    @shiny-code-app
    ContributorAuthor

    Claimed by DK373-1103

    Session: 01a1a207-2152-7273-8fa8-746714261011
    Branch: work/dk373-1103
    Claimed at: 2026-11-03T10:29:50-05:00
    Next action: Research Odoo 20 Python support and exact pinned dependency Python 3.14 artifacts; record step 1 evidence and stop before any image build

    Admission: spare-capacity; #373

    Work record

  2. shiny-code-app commented on Nov 3, 2026

    @shiny-code-app
    ContributorAuthor

    Step 1 result: Odoo 20 declares Python 3.12, 3.13 and 3.14, but the existing image dependency set is not qualified for 3.14. Do not start the image build from this result. This is the DK373-1103 research slice only. No image, wheel or package was built; no container, lane, dependency pin, Ruff target or inspection setting changed.

    Next actor: agent:supervisor. Present this result to the Director, then coordinate the existing odoo-docker#127 Python 3.14 image task for dependency qualification before step 2. I added it as a native blocker of this issue. Its latest recorded scope is Odoo 20 only, with Odoo 19 remaining on 3.13.15. This report does not decide a broader rollout or change its fallback condition. The rest of this issue stays open.

    Odoo's own Python contract

    At the exact Odoo revision in the checked image, release.py declares MIN_PY_VERSION=(3,12) and MAX_PY_VERSION=(3,14). setup.py uses the minimum to declare python_requires >=3.12; it does not impose an upper bound. odoo/init.py also checks the minimum. Thus 3.14 is inside Odoo's declared range, while the open-ended installer metadata is not evidence that 3.15 or every future Python is supported. The current 20.0 head, b9823b8, declares the same range.

    The pinned requirements.txt explicitly selects different releases on 3.14: greenlet 3.3.2, lxml 6.0.2, Pillow 12.1.1, python-stdnum 2.2 and vobject 0.9.9. It still selects gevent 24.11.1 and psycopg2 2.9.10. Python-version markers alone therefore do not prove the entire dependency set works.

    Exact inputs and method

    The research checkout is devkit a7fe4fa. Its live-check workflow pins Community 20 devtools to ghcr.io/cbusillo/odoo-docker:20.0-devtools@sha256:e3038bff93f23677f2fa246c60a721cc1dc4bd5be8e25d8e512c3b6b0508a36c.

    I read that immutable OCI index and both Linux platform manifests, then downloaded only the small layer containing /opt/launchplane/base-python-constraints.txt. Both architectures have the same 68-distribution catalog. Both manifests bind Odoo revision d2218d33df258cae555fe5e90cfed56a29b4c6bc, producer revision 73237ce594d78216bd817021ab9961067136e3ad, and producer build number 462. This is the devkit CI base, not a claim about the currently deployed CM or OPW image.

    The base Dockerfile installs Odoo requirements, then base overrides, then rlpycairo 0.4.0. Devkit adds its runtime-support lock; I also checked its addon-test lock. These contain 82 distinct distributions together.

    For each exact distribution version, I read PyPI's release JSON and tested non-yanked wheel filenames against regular, GIL-enabled CPython 3.14 tags for Ubuntu Noble/glibc 2.39, on Linux x86_64 and aarch64. This includes compatible abi3 wheels and older manylinux tags; it excludes macOS, Windows, musl and cp314t wheels. Availability is an artifact result, not an import, behavior or clean-build result.

    Complete native/binary dependency matrix

    Versions below are the published catalog, except the explicitly named 3.14 marker selection. Each package link is its exact upstream release-file listing.

    Dependency Linux amd64 on 3.14 Linux arm64 on 3.14
    cbor2 5.9.0 cp314 wheel; pure wheel also available Same
    cffi 2.1.1 cp314 wheel cp314 wheel
    charset-normalizer 3.5.2 cp314/abi3 wheels; pure fallback Same
    cryptography 50.0.0 Compatible abi3 wheel Compatible abi3 wheel
    freetype-py 2.5.1 Python-independent wheel bundling FreeType Same
    gevent 24.11.1 No compatible wheel; unqualified source build Same
    greenlet 3.1.1 → 3.3.2, selected by Odoo on 3.14 Old pin has no compatible wheel; selected 3.3.2 has cp314 wheel Same
    libsass 0.22.0 Compatible cp36-abi3 manylinux1 wheel No compatible wheel; source build UNKNOWN
    lxml 6.1.1 cp314 wheel cp314 wheel
    MarkupSafe 2.1.5 No compatible wheel; native build UNKNOWN Same
    maxminddb 3.2.0 cp314 wheel cp314 wheel
    Pillow 13.0.0 cp314 wheel cp314 wheel
    psutil 5.9.8 Compatible cp36-abi3 wheel No compatible wheel; source build UNKNOWN
    psycopg2 2.9.10 No compatible wheel; unqualified source build Same
    pycairo 1.29.2, from rlpycairo No compatible wheel; source build UNKNOWN Same
    pydantic-core 2.50.1, from devkit runtime support cp314 wheel cp314 wheel
    python-ldap 3.4.5 Source distribution only; source build UNKNOWN Same
    rjsmin 1.2.0 No compatible wheel; native build UNKNOWN Same
    zope.interface 8.7 cp314 wheel cp314 wheel

    UNKNOWN means no Linux 3.14 source build was run, not that the package is proven broken. Pure fallbacks do not prove that the native extension built.

    The other distributions are pure Python. In particular reportlab 4.1.0 and rlpycairo 0.4.0 have universal Python wheels; their native rendering chain is covered by Pillow, pycairo and freetype-py above. The pure-Python docopt 0.6.2, ofxparse 0.21 and old vobject 0.9.6.1 are source-only packaging cases, not additional C-extension wheel gaps. Odoo selects the universally wheeled vobject 0.9.9 on 3.14.

    The first upstream install also matters: cbor2 5.6.2 offers a pure wheel, cryptography 42.0.8 offers compatible abi3 wheels, and the marker-selected lxml 6.0.2 and Pillow 12.1.1 offer cp314 wheels on both architectures. First-stage python-ldap 3.4.4 remains source-only. A second override install cannot rescue a failure in the first install, so a future qualification must exercise the actual install order.

    Blockers and smallest next action

    • gevent 24.11.1 has no matching 3.14 wheel and predates upstream 3.14 support. Upstream's changelog adds initial alpha support in 25.4.1 and beta support in 25.5.1. 25.9.1 has cp314 wheels on both target architectures. That is a candidate to qualify, not a pin change made here.
    • psycopg2 2.9.10 has no matching Linux wheel and predates advertised 3.14 support. Upstream's release notes add 3.14 support in 2.9.11. The regular psycopg2 2.9.11 package still requires a source build on Linux. A psycopg2-binary wheel is a different distribution and was not counted as a pass.
    • The remaining source-build cells above need exact-version Linux 3.14 compile/import proof. Upstream support and version metadata are not a clean-build receipt. This slice therefore does not satisfy a positive “every compiled dependency has a wheel or builds cleanly” gate.
    • Devkit's addon-test project explicitly excludes 3.14, and its lock targets ==3.13.*. That consumer constraint must be reconciled in the existing image task before its native tests can qualify 3.14.

    Recommendation: keep the image build held. Use the existing base-image task to qualify the smallest supported dependency set and every source-only cell, preserving the exact Odoo/addon refs and the preview-first order already agreed here. No new implementation design, fallback, quality exception or release decision is made by this report.

    Validation here was read-only source, OCI-catalog and PyPI-artifact research. Code tests, CI, native IDE inspection and tenant consumer image checks are not applicable to this zero-source-change slice; no runtime pass is claimed. Private task evidence retains the registry manifests, both catalogs and release JSON responses for the next worker; this comment carries the public-safe result and upstream links.

    Removed: none. Net lines: 0 maintained source. No PR or merge is needed for this research-only slice.

  3. shiny-code-app commented on Nov 3, 2026

    @shiny-code-app
    ContributorAuthor

    Released claim 6607902644

    Step 1 research is complete with a blocked dependency result, recorded with primary-source links and the full native dependency matrix at #373 (comment) . Odoo 20 declares Python 3.12 through 3.14; gevent 24.11.1 and psycopg2 2.9.10 predate advertised 3.14 support, and the remaining no-wheel cells lack Linux 3.14 source-build proof. No image or package build ran. The full migration issue remains open and natively blocked by cbusillo/odoo-docker#127; no positive dependency or runtime pass is claimed.

    Next actor: agent:supervisor
    Next action: Present the recorded findings to the Director, then coordinate the existing base-image task to qualify the dependency set before any step-2 image build. Preserve its Odoo-20-only scope and the agreed preview-first rollout; ask the Director before changing an agreed outcome.

    Current Status is updated. This session made zero source changes and opened no PR. Code tests, CI, IDE inspection and tenant image builds are not applicable to this research-only slice. The outside-comment radar is clear. There is no new Director question or quality/design choice made here.

    The task branch work/dk373-1103 and its linked worktree are clean at the published default-history commit a7fe4fa with no unique commits or untracked/ignored files. Research uses only private evidence outside the worktree. After exact release verification I will run qualified retirement; any guard hold preserves the checkout with its reason. The Supervisor holds the private OCI catalogs, manifests and PyPI responses for the dependency-qualification successor, to remove after consumption; normal task-evidence expiry applies. No task-owned container, browser, image-build job, reviewer or package-build process exists.

    Removed: none. Net lines: 0 maintained source.
    Session outcome: {"landed_without_rescue": false, "review_findings_acted_on": 0}

    Session: 01a1a207-2152-7273-8fa8-746714261011

  4. shiny-code-app commented on Nov 3, 2026

    @shiny-code-app
    ContributorAuthor

    The research slice is closed out. Step 1 findings and Current Status are current; the full migration remains open and natively blocked by odoo-docker#127 base-image qualification. Next actor: agent:supervisor, to present the findings and coordinate that existing task. No image or package build ran.

    The claim is released. The native claim check reports claims_clear: true, complete coverage, no blocked claims and no unresolved invocations. Qualified retirement removed the untouched task worktree and branch. The primary checkout is clean. Private research evidence remains for the Supervisor's qualification handoff; there is no source or PR to land and no task-owned process remains.

    Removed: none from maintained source; retired the disposable research worktree and branch. Net lines: 0.

    Love Gate
    Love: exact-source and both-architecture artifact evidence, with no image or runtime mutation.
    Do not love: dependency source-build qualification remains incomplete and is explicitly blocked, not passed.

    Session outcome: {"landed_without_rescue": false, "review_findings_acted_on": 0}
    Safe to exit: yes

  5. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    ODOO20LEAD5-1104: adopted into programme277. Image127 is CLOSED at2026-11-04T08:56:09Z with its recorded OPW552/Shared258 qualification; no repeat dependency trial is requested. Next worker confirms exact preview-first proof for the existing Odoo20/Python3.14 chain, then delivers the single Ruff target raise. Once it lands, retire the temporary dual inspection profile from Q1217 on302 and close superseded temporary work. Odoo19 stays Python3.13.15; this is no19 runtime migration.

    Staffing is queued after CM290 and the Q1266 deletion are covered. The latest OPW testing correction still governs priority and all four slots are occupied; no373 worker is launched now. Actual preview adoption, consumer compatibility and Client/release evidence remain separate from the completed dependency/native trial. The worker owns source checks/review/inspection/current-head delivery and reports Removed: and Net lines:. No source, profile, lane, data or production action follows from this routing.

  6. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    Claimed by O20W373-RUFF-1104

    Session: 01a1a986-71c9-7821-8c9f-44eea380b733
    Branch: work/o20w373-ruff-1104
    Claimed at: 2026-11-04T21:26:12-05:00
    Next action: Verify existing preview-first receipts and actual shared Ruff consumers; deliver bounded Odoo20-only Ruff follow-through, preserving Odoo19 Python3.13.15

    Admission: milestone; https://github.com/cbusillo/direction/issues/4

    Work record

  7. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    The required Python 3.14 CM preview proof is still missing. The published Odoo20 images are qualified, but the actual serving CM consumer has not taken them. No Ruff or inspection target was changed.

    Fresh service preview-history read identifies serving generation16, preview-cm-odoo-tenant-cm-pr-290-odoo-8c98c734e9303e9a21b7, with deploy/verify/health passing, source c348d7afa93498a0509fe490e897ea7809edcb64, service artifact alias artifact-cm-run-41947406860-1 and image sha256:160199063c02e87ef22891909ccc7e7e97c6d4d63815464058b9e987f3f6d286. Trace launchplane_req_5cc175b0cd7e4387951acb8238228d00. This is service-owned runtime identity, not a health endpoint inference.

    The matching normal Build41947406860 artifact13379087877 contains the same source/image. Its manifest ID is artifact-cm-160199063c02e87e, distinct from the service's run alias. Its dependency_provenance.python_environments.linux/amd64.python_version is 3.13.15. Its exact runtime/devtools bases are 7f63618b2efb18ef361c50bc8b4643cb143985a4b6a793cb2f19cf1f6318eec1 / 8bf1a55cf3d947704b1f32e20187f45e1b86b3be17a004ae84e1ea2a8e18cb99, producer 92563fdeefe0482233cb953a59a18dc53e70b269. Producer466, retained publication artifact13050413349 and hash-verified OCI index/platform manifests/configs agree with this older chain. A green Odoo20 preview is therefore not yet the Python3.14 preview required here.

    The completed 127 qualification and 211 publication receipt remain valid. Landed devkit379 and OPW451 provide compatibility, not CM adoption. OPW323 at 1f9280a481edc5d5cca70b144beb848d9da772ac declares the qualified20 pair 7c77124e / 97fd8874 and Python3.14, but its serving-preview lifecycle remains separately owned by O20W323-REFRESH-RESET-1104, native01a1a955-011d-7312-90bc-3c859dff4616, after the existing5188 repair. No323 action or additional trial ran here.

    Next actor: agent:01a1a78b-2c93-7c91-af85-11d5396a26d1. Coordinate this exact missing event through existing CM252/290 ownership: a reviewed CM20 consumer actually takes the already-qualified Python3.14 base through its normal source/build/preview path, and the serving generation/source/image agrees with its in-image Python3.14 provenance and normal checks. Preserve the current IN_USE CMpreview and its Client-acceptance/data/QA/reset holds; no blind new preview, source replacement, duplicate custody search or new dependency/image trial follows from this report.

    Independent source preparation is complete: the exact one-line quality/ruff.toml target patch is saved privately as ruff-target-after-preview.patch, unapplied. A nonmutating ruff check --target-version py314 --select UP --diff . on devkit d387875eb09a89e56ab22f62324982274218b2c4 exits0 with no proposed UP source changes. No broad modernization, new test, config-text assertion or policy machinery is justified. This is preparation, not a reviewed/ready/landed PR. Root pyproject.toml independently supports the Python3.13 host CLI; its setting cannot be deleted merely as a duplicate Odoo20 fact.

    Actual configuration consumers also prevent treating every3.13 inspection as temporary: fresh fetched CMmain ca3c2f45e5b53a9c5b65eb69fbc332eebf692676, OPWmain 04b8e64d81cace500c2f5fa619452b081c6b3eee and Sharedmain f17c4ef60f0b8ca83eafffd4373cfb032df161d0 extend the canonical shared Ruff configuration. Both tenant main manifests still declare Odoo19/Python3.13 and use the shared inspection profile. Q1217's3.13 compatibility target remains independently needed for that supported consumer scope. Do not remove it globally. Requalify the actual consumers before applying the approved20 target patch; after actual Ruff landing, retire only the obsolete20-scoped temporary targets. No new decision or hypothetical quality waiver is requested.

    #373 remains open for this named adoption event and subsequent source delivery. #302 is already completed/closed; no temporary record is newly closed without meeting its finish line. No migrated-data, staff QA, Client or production acceptance is inferred. Source CI, consumer builds, IDE inspection and model review are not run for this unapplied preparation; they remain required for a future actual source PR. All original proof, retained19 inputs, other workers' custody and current323/CM290/website215 fences are preserved.

    Removed: none from maintained source. Net lines:0. No dependency/native-trial counts are repeated.

  8. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    Waiting for Existing CM252/290 source and preview delivery owner, coordinated by lead01a1a78b-2c93-7c91-af85-11d5396a26d1: actual CM20/Python3.14 preview adoption. This ends when Normal reviewed CM consumer build takes the existing qualified Python3.14 image and its serving preview source/image identity matches in-image Python3.14 provenance with normal checks passing; current IN_USE and Client/data/QA holds remain protected. An agent rechecks it on 2026-11-05.

  9. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    Released claim 6647994426

    Finite evidence/source-preparation slice is complete with the precise missing adoption event at #373 (comment) . Current Status and the checked wait #373 (comment) are current. The original published image qualification remains complete; this worker ran no new image/native trial.

    Next actor: agent:01a1a78b-2c93-7c91-af85-11d5396a26d1
    Next action: consume the exact CM290 serving/build manifest evidence and coordinate its existing CM252/290 delivery owner for actual Python3.14 preview adoption, protecting the IN_USE preview and existing Client/data/QA holds. Requalify actual19consumers before the source target raise; only after actual Ruff landing retire obsolete20-scoped temporary inspection targets. Existing OPW323/5188 owners retain their work. No decision, new grant or operational apply is requested.

    CM290 servinggen16/sourcec348/image160199 matches Build41947406860's manifest; actual in-image dependency provenance says3.13.15, not3.14. The single-line shared Ruff candidate and empty nonmutating py314 UP result are prepared privately, unapplied. There is no source commit, push, PR or retained source branch to adopt. No current-head source CI, consumer build, IDE inspection or model review pass is claimed or needed for this no-source-change slice. Those gates remain for later real source delivery. The actual shared profile still independently protects supported19/3.13 consumers, so it was not globally changed.373remains OPEN;302was already closed and was not changed. Broader migration/QA/Client/production holds remain.

    The lead was notified through the verified native queue; queuedSubmissionId01a1a98d-ff0c-7e13-a599-b6a38a915025. All task-local commands finished; no watcher, provider reviewer, browser, runtime or heavy process was started. The own task tree at /Volumes/Developer-Artifacts/worktrees/odoo-devkit/o20w373-ruff-1104 is unchanged at default-history d387875 with no unique source; after exact release/full claim coverage, retire it through the configured qualified route. Only this task's generated venv/Ruff caches are disposable cleanup. Evidence and the unapplied patch stay under task-evidence/odoo-devkit/o20w373-ruff-1104 for the open issue/lead, subject to normal retention; original qualification evidence and every other session's source/profile/runtime remain untouched.

    Removed: none from maintained source. Net lines:0. No dependency/native-trial source counts are repeated.
    Love: the real serving artifact disproves the premature preview claim without touching an active lane.
    Do not love: actual Python3.14 CM adoption and the subsequent source/profile delivery remain unfinished on their named owner/event.
    Session outcome: {"landed_without_rescue": false, "review_findings_acted_on": 0}

    Session: 01a1a986-71c9-7821-8c9f-44eea380b733

  10. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    O20W373-RUFF-1104 finite closeout. Native session: 01a1a986-71c9-7821-8c9f-44eea380b733.

    Exact missing preview proof and prepared source delta, Current Status and named owner/event wait are current. Serving CM290's matching build manifest records Python3.13.15. The published3.14 qualification is not disputed; actual CM consumer adoption remains missing. Lead01a1a78b was notified through the verified native queue. No Ruff/profile change, source PR, new image/native trial, operational action or wider closure occurred.

    Exact claim release is verified. The final full native claim check exits0 with claims_clear:true, coverage.complete:true, blocked:[], unresolved_invocations:[], search_errors:[] across26requests. Passing configured retirement preview/apply removed this session's untouched task tree and branch, with independent absent readback. Primary checkout is clean; the other worker's tree remains in place. Private source-preparation/provenance evidence remains under the existing retention policy for this issue/lead. No watcher or task process remains.

    Removed: this task's generated venv/Ruff caches and unused worktree/branch; no maintained source removed.
    Net lines:0 maintained source.

    Love Gate
    Love: matching serving-runtime identity and immutable build provenance expose the real missing adoption event.
    Do not love: the3.14 CM preview, subsequent Ruff landing and appropriately scoped profile retirement remain unfinished with the named lead/owner.
    Session outcome: {"landed_without_rescue": false, "review_findings_acted_on": 0}
    Safe to exit: yes

  11. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    Source sequencing recorded for the next owner: #389 landed ec2521a, then #390 landed b2c3839. The source owner reports no edits to quality/ruff.toml, root pyproject.toml or inspection profiles; the next Ruff source should start from390 or a verified later descendant, preserving the delivered comparison/style-only/secretless behavior.

    The important interface is retained OPW366 on Odoo19/Python3.13: its ruff.toml inherits shared quality/ruff.toml without a target override, and the action executes the consumer-declared Ruff command with its pinned devkit. A central target change reaches19 on pin adoption. The future373 owner must preserve the explicitly recorded19-stays313 contract and qualify effective lint/inspection compatibility. The stale “images on3.14 everywhere” criterion is narrowed to the Supervisor’s20-only scope; this adds no19 runtime upgrade, repeated image trial or new Client question.

    The actual CM20/Python3.14 consumer preview remains missing as recorded at #373 (comment) . Existing source/IN_USE/current-head Client gates remain; no Ruff/profile edit, worker relaunch, native/CI rerun or operational action was performed by this coordination. The former373 worker is already guardedly closed, so this remains with the issue/next source owner. Removed: obsolete global19-upgrade/profile-removal implication in plan wording. Net lines:0 maintained source.

  12. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    Waiting for Existing CM252 new focused source PR owner coordinated by Root: actual CM20 Python3.14 serving preview. This ends when Normal reviewed CM consumer Build adopts the actual qualified public20 Python3.14 pair and an actual current serving preview source/image matches in-imagePython3.14 provenance with normalchecks passing. Then373source may deliver its single Rufftargetraise and scopedprofile retirement, preserving supported19/13 and allactualuse/Client/data/QAholds. Publishedbase or greenconsumerBuild alone is not this event.. An agent rechecks it on 2026-11-06.

  13. shiny-code-app commented on Nov 5, 2026

    @shiny-code-app
    ContributorAuthor

    CM's independent source adoption is delivered as cbusillo/odoo-tenant-cm#356 at73143ec6683089ec728584101bdeabdd8ca9e9ae. Normal Build42126028876 and full366/0/0 native consumer tests pass; downloaded manifest binds the qualified public pair/native3a00 and actual in-image Python3.14.10. This is Build proof only.

    The required serving-preview event is NOT earned. Actual source-triggered original operation reports reconcile_required/unknown provider outcome, mutation_attempted=true; no serving generation exists in preview history. Exact lifecycle wait/source handoff and own release and engineering waiting handoff retain the plan/trace and all current gates.

    Next actor: agent:01a1a78b-2c93-7c91-af85-11d5396a26d1
    Next action: route original reconciliation through existing cbusillo/launchplane#5206/native lifecycle custody, then qualify normal preview source/image/Python/health and actual source/use/copy/separation facts. No replay/newkey/alternate preview; no plainReady, Client invitation or testing adoption. Shared Ruff/profiles and supported19/Python3.13 remain unchanged. This issue's preview-first finish line and later source/testing/release sequence stay open.

    Session:01a1ade6-8d0f-7700-893b-56e378c8a5e4. Removed: tenant3.13-only constraint/wheel selection and stale duplicate prose in the CM source change. Net lines:+16CM;0shared source here.

  14. shiny-code-app commented on Nov 9, 2026

    @shiny-code-app
    ContributorAuthor

    Nothing here is waiting on a person or event.

  15. shiny-code-app commented on Nov 9, 2026

    @shiny-code-app
    ContributorAuthor

    Claimed by DK373-RUFF-FINISH-1109

    Session: 01a1c29e-c9e8-7032-97c0-843f5f226888
    Branch: work/dk373-ruff-finish-1109
    Claimed at: 2026-11-09T18:24:38-05:00
    Next action: Root explicitly dispatched this remaining source scope: qualify actual shared consumers and deliver Odoo20-only Ruff follow-through while preserving Odoo19/root Python3.13 compatibility

    Admission: milestone; https://github.com/cbusillo/direction/issues/5

    Work record

  16. shiny-code-app commented on Nov 9, 2026

    @shiny-code-app
    ContributorAuthor

    Confirmed default-branch landing: #419 at 1f4399a. This issue is already closed as completed; a reference alone does not prove its finish line. Planning metadata reconciled through the existing close preflight; retained artifact custody remains on the source PR/handoff.

  17. shiny-code-app commented on Nov 9, 2026

    @shiny-code-app
    ContributorAuthor

    Released claim 6754214669

    DK373-RUFF-FINISH-1109 source delivery is complete. Native session: 01a1c29e-c9e8-7032-97c0-843f5f226888.

    Source delivery merged through checked Ready and the scheduled train at1f4399aa029c76aafb307a0324a72061518c602a; weighed review/inspection coverage and exact-head consumer receipts are complete. Main CI42723179500/Push-on-main42723179002 pass. The local default checkout is clean/current. Issue373 is closed/completed with complete native relationship reconciliation; programme277 and other operators' custody were untouched.

    Next actor: agent:01a1a78b-2c93-7c91-af85-11d5396a26d1
    Next action: consume this finite source result through the native queue. No source work or decision remains on373. Future ordinary tenant pin adoption includes CM's ten-file formatter-only exception-syntax changes, as already recorded on419; existing runtime/testing/Client/data/release gates remain independent.

    No retained open delivery PR. The completed own worktree/branch work/dk373-ruff-finish-1109 is fully published and will be retired through the configured qualified route after this exact release and complete full-session claim readback. Only its generated venv/Ruff/bytecode caches are disposable. Private review/source/consumer/closeout evidence remains under the printed task-evidence unit's normal retention for the lead and pin-adoption follow-through; delete after consumption/expiry. Every cited existing original/tree/ref/evidence is preserved. All task-owned reviewer, watcher and consumer commands have ended.

    The shared Ruff fixed target is removed; existing consumer metadata gives adopted20 source3.14 and supported19/root tools3.13. Metadata-free shared source remains conservatively3.13 compatible. The shared inspection profile still independently serves both versions and contains no20-only temporary entry. IDE coverage is explicitly UNKNOWN for unsupported changed TOML/Markdown; no code/profile clean pass is claimed.

    Removed: shared hard-coded target and obsolete global-runtime wording.
    Net lines:+8 (14 added,6 removed).
    Love: one deleted pin lets existing consumer metadata own the runtime distinction.
    Do not love: native TOML/Markdown inspection is unavailable; the exact configuration was exercised by Ruff and both consumer builds.
    Session outcome: {"landed_without_rescue": true, "review_findings_acted_on": 0}

    Session: 01a1c29e-c9e8-7032-97c0-843f5f226888

    Retained PR handoff: #419

  18. shiny-code-app commented on Nov 9, 2026

    @shiny-code-app
    ContributorAuthor

    DK373-RUFF-FINISH-1109 is complete. Native session: 01a1c29e-c9e8-7032-97c0-843f5f226888.

    Source delivery landed at1f4399aa through checked Ready and the scheduled train. Review/IDE disposition, source/consumer gates, main CI and local default freshness are verified. This issue is closed and Current Status is final; no programme or runtime custody changed.

    Exact own release is confirmed. Final post-retirement full-native check exits0 with claims_clear:true, coverage.complete:true, blocked:[], unresolved_invocations:[], search_errors:[],16requests. Configured retirement removed only this task's completed worktree/local branch and generated caches; absent readback and clean/current main are verified. No task process remains. Private evidence stays under normal retention for the lead and ordinary consumer-pin follow-through; original cited evidence/refs/trees remain preserved.

    Next actor: agent:01a1a78b-2c93-7c91-af85-11d5396a26d1
    Next action: consume this finite result through the verified native queue. No source work or decision remains on373. Later CM pin adoption includes the already-recorded10-file formatter-only changes; no testing/production adoption is inferred.

    Removed: shared hard-coded Ruff target and obsolete global-runtime wording.
    Net lines:+8 (14 added,6 removed).

    Love Gate
    Love: existing consumer metadata owns the Python-version distinction with one deleted pin.
    Do not love: native TOML/Markdown coverage is UNKNOWN; actual Ruff and both normal consumer builds cover this configuration change.
    Session outcome: {"landed_without_rescue": true, "review_findings_acted_on": 0}
    Safe to exit: yes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent:codexAssigned to the Codex agent family

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions