Repository navigation
Description
Purpose
Track A develops the independent interpreter toward full Python 3.14 language and builtin semantics, followed by explicitly qualified standard-library and pure-Python package coverage. Completion of the finite O1–O96 contract (#123) is the starting point, not a claim of complete Python compatibility.
Track B (#601) will build an application engine on this foundation. A useful intermediate A+ profile should enable real applications before every language/library gap is closed. Shared language/runtime prerequisites have one owning issue and evidence may satisfy both tracks.
Naming and delivery
LA-N identifies focused language deliverables; LB-N identifies application deliverables. These identifiers continue after the first seven items without creating another fixed-size O-series. Existing issues retain ownership of their scopes. Deliver a complete logical interpreter milestone locally, using focused Python and Chromium checks plus the complete local PR suite before publishing one feature branch and PR. Squash merge accepted work and reuse unchanged passing evidence.
First two batches — practical container APIs
These are finite slices of #116, with CPython 3.14.7 as the pinned semantic oracle. Each implementation includes source/reference cases, exact signatures, error/callback order, ownership and interruption coverage. Classes-source/1 admits owned protocols; core-source/1 admits the explicitly shared primitive cases.
Batch 1:
- LA-1: Adopt practical container contracts and basic list methods #602 — LA-1: list copy/clear/reverse, exact receiver/argument validation, shallow aliases and mutation behavior; establish the practical-container corpus and API table.
- LA-2: Implement indexed list insert and pop #603 — LA-2: list insert/pop with integer/index conversion, mutation during callbacks, bounds and returned identity.
- LA-3: Implement list and tuple count and index #604 — LA-3: list/tuple count/index with positional start/stop, owned equality/truth callbacks and mutation-visible scans.
- LA-4: Implement bounded iterable list extension #605 — LA-4: list extend over adopted primitive and owned iterables, self-extension, partial mutation on errors, bounded work and explicit length-hint boundaries.
Batch 2:
- LA-5: Implement dictionary get, setdefault and pop #606 — LA-5: dict get/setdefault/pop using owned hash/equality, exact default/key/value identity and mutation/error behavior.
- LA-6: Expose live dictionary keys, values and items views #607 — LA-6: dict keys/values/items as live views with ordered iteration, mutation checks and detached-owner lifetimes.
- LA-7: Accept practical container source and offline composition #608 — LA-7: composed practical-container programs through Node/Chromium drain, step and parked drivers; offline new-source execution and stop/restart; reconcile inventory and remaining INT-SEQ-01: Expand sequence construction and traversal APIs #116 APIs.
- LA-6A: Retain dictionary subtype owners through view iterators #616 — LA-6A: retain dictionary subtype owners through temporary-view iterators and release them on exhaustion.
- LA-7A: Register retained practical-container source boundaries #618 — LA-7A: register retained source boundaries in the global scope inventory.
Broader dict construction/update, enumerate/zip/reversed, aggregate/map/filter/sorted APIs, text methods and remaining hint/equality/hash families stay under #116. This initial batch does not close that issue.
Continuing language roadmap
| Area | Canonical owner | Acceptance |
|---|---|---|
| Remaining container/builtin traversal APIs | #116 | Exact per-API signatures, ordering, aliasing, callbacks and resource behavior. |
| Exception subclasses, arguments, chaining, traceback fidelity, groups/except* | #124 | Ordinary and grouped control flow, original source frames and interruption. |
| repr/str/ascii/format, f-strings and t-strings | #127 | Finite format grammar, conversion/evaluation order, structured template values. |
| Context managers and pattern matching | #121 | Sync protocol cleanup and matching semantics, including failure paths. |
| Generators/comprehensions and binary/set/buffer APIs | #120, #117 | Close retained finite refusals; add exact protocol/API coverage. |
| Python 3.14 annotations and generics | #125 | Deferred annotation semantics, generic syntax and introspection. |
| Numeric completeness | #184 | Remaining exact numeric APIs and edge cases. |
| Coroutine/await and async protocols | #34, shared with Track B | Language semantics belong to conformance; host capabilities/application evidence belong to B. |
| Standard library | #126 | Start with json, math and selected utilities; qualify APIs individually, then maintain an explicit module/API gap register. Full stdlib support requires each remaining module to be resolved. |
| Real package uses | #128 | Pinned original and reduced source, exact entry points/closure/licenses, unchanged workload behavior. |
| Conformance inventory and residual gaps | #99 and follow-up LA issues | Reconcile every admitted/refused/unsupported grammar, builtin and library surface; create finite owners for uncovered gaps. |
| Independent interpreter candidate | #36 | Compatibility promise, reproducible assets, installed artifacts and supported-host evidence. Publication remains a separate decision. |
Progress and completion gates
- A1 — practical container API slice accepted (LA-1–LA-7 and the LA-6A/LA-7A follow-ups).
- A2 — exceptions and formatting needed by ordinary reusable code accepted.
- A+ — a documented useful language/library profile runs at least one pinned real pure-Python workload unchanged, including failure paths; prerequisite probes select the next APIs.
- A3 — retained source-language, builtin and async semantic gaps reconciled against a versioned Python 3.14 reference inventory and implemented.
- A4 — standard-library coverage reconciled by module/API with explicit supported-host differences; package uses remain measured rather than inferred.
- A5 — full Python 3.14 support claim accepted only against the declared versioned scope, with no silent omission of intentional refusals, retained divergences or platform restrictions.
Report four separate indicators: versioned language-corpus results (fixed denominator; supported, divergent, refused and untested reported separately), exact builtin/API coverage, certified package workloads, and candidate/release gates. Stage counts and supported-name counts are not an overall Python-completion percentage.
Relationship and limits
Track B can consume A+ and proceed on independent scheduling/host work while A continues. Browser OS/process/native-extension restrictions must remain visible; they cannot be hidden inside a full-compatibility claim. The later C/Rust/Wasm backend (#40–#42) is independent of both tracks. No dependency/service, release upload, hosted deployment or new backend is selected by this tracker.
Initial language batches accepted — 2026-10-31
Two focused batches are accepted through squash merges #609, #610, #611, #612 and #613, #614, #615, #617, #619. The seven planned tasks and the iterator-owner / boundary-inventory follow-ups are complete.
All 16 corrected regression jobs pass. Evidence includes 330 container source/lifecycle tests, 194 class observations (189 semantic/error comparisons and five explicit refusals), 121 shared core cases, Node/Chromium drain/step/parked execution, nine runner tests, 20 installed-wheel offline checks and the unchanged eight execution resource cases. The global source audit records 136 owned refusal sites. The CI-discovered inventory omission is corrected by #619.
Final main is 015fa54, clean and synchronized, with final-main smoke and local wheel/installed-CLI/interpreter-startup checks passing. Completed branches are removed after dependent reconciliation; the unrelated code-cells stash is preserved.
This accepts the finite practical-container slice. User hints, missing definitions, dictionary-subclass view proxies, view set operations and the remaining #116 APIs stay open; general exception arguments remain #124. Track A #600 and application Track B #601 continue. #124/#125 are Ready after their recorded prerequisites closed. Candidate #36 and library/package/host/release gates remain separate.
Ordinary exception batches accepted — 2026-10-31
Two focused batches (three PRs followed by four) are accepted through squash merges #626–#630, #632 and #633.
- LA-8: Preserve ordinary exception arguments and defer message callbacks #620 — LA-8: constructor argument identity and lazy message callbacks (feat(LA-8): preserve ordinary exception arguments and lazy messages #626).
- LA-9: Adopt mutable exception arguments and chaining metadata #621 — LA-9: atomic mutable arguments and chaining metadata (feat(LA-9): adopt mutable exception arguments and chain metadata #627).
- LA-10: Execute explicit exception causes on the owned machine #622 — LA-10: explicit causes, suppression and original source frames (feat(LA-10): execute explicit exception causes and preserve chains #628).
- LA-11: Construct ordinary exception subclasses with native storage #623 — LA-11: named generic exception subclass construction/storage (feat(LA-11): construct ordinary exception subclasses with owned storage #629).
- LA-12: Raise and catch ordinary exception subclasses #624 — LA-12: owned class normalization and actual-ancestry handlers (feat(LA-12): normalize and catch ordinary exception subclasses #630).
- LA-12A: Preserve arguments of runtime-generated exceptions #631 — LA-12A: lazy runtime message arguments and actual failed mapping keys (fix(LA-12A): preserve arguments of runtime-generated exceptions #632).
- LA-13: Accept composed ordinary exception programs and reconcile scope #625 — LA-13: composed module/dynamic/generator/offline acceptance (test(LA-13): accept composed ordinary exception source and offline execution #633).
The pinned CPython 3.14.7 corpus records 123 observations: 115 semantic/error comparisons and eight explicit refusals, with 24 cases shared by core-source/1. Both Node and Chromium pass drain, step and parked execution. The final 16-job regression run passes, alongside 518 focused exception/iteration/container/generator/execution tests, nine runner tests, 17 installed-wheel offline checks, and the 140-site source-refusal audit. Accounting revision 19 records the intended single-string identity change; the eight resulting execution observations remain stable through the remaining slices.
Final main is dd0613d, clean and synchronized, with wheel/installed-CLI/interpreter-startup smokes and the final-main CI smoke passing. Completed task branches are removed and the unrelated code-cells stash is preserved.
Remaining #124 work is exception groups/except* splitting/merging, general handler expressions/named tuple values, traceback objects/mutation, notes, and structured native exception constructors/fields/subclasses. User-class generator throw remains #120; multiple-argument/container/default native exception display families remain #127. The exact profile and runnable example are documented in the ordinary exception contract.
A2 remains open because the remaining exception contracts and formatting families are unfinished. A+ package qualification, broader source/builtin/async reconciliation, standard-library coverage and candidate #36 retain their separate evidence gates. Package certification and publication/deployment status are unchanged by these two language batches.
Handler expressions and notes accepted — 2026-11-01
Four focused squash merges #637, #638, #639 and #641 complete this batch:
- LA-14: Evaluate ordinary exception handler expressions #634 — LA-14: lazy handler expressions, named/empty flat tuples, full validation and actual-ancestry matching.
- LA-15: Adopt exception notes and exact add_note behavior #635 — LA-15: positional BaseException.add_note, lazy ordinary notes storage, subtype identity and owned attribute hooks.
- LA-16: Accept composed handler and note programs offline #636 — LA-16: composed modules/dynamic source, reraises, suspended generator selection and installed offline cancellation/restart.
- LA-16A: Reconcile the general source corpus after handler admission #640 — LA-16A: reconcile the general source corpus after empty-handler admission.
The pinned CPython 3.14.7 exception corpus has 174 cases: 167 semantic/error comparisons and seven explicit refusals, with 39 cases explicitly shared by core-source/1. All six Node and six Chromium drivers pass. The general source corpus preserves its 408-case denominator and passes 378 supported comparisons plus 30 explicit refusals on both targets. These are finite corpus results, not an overall Python-completion percentage.
Exact API additions include BaseException.add_note(note, /) and inherited bound/unbound calls, lazy notes dictionary storage, replacement/deletion, string/list subtype identity, native append behavior and owned getter/setter/fallback failures. Handler calls, attributes, subscripts and tuple values evaluate lazily through verified modern-bytecode expression blocks. Classes-source/1 owns note callbacks; the shared core cases remain explicit. Logical teardown, cancellation and shared work/allocation budgets pass, including cyclic notes and suspended handler selection. Host summaries retain their copied diagnostic contract without executing note getters or formatting arbitrary manually stored notes.
All 16 corrected batch regression jobs pass. Local evidence includes 227 focused exception/source/lifecycle/verifier tests, nine runner tests, 26 isolated installed-wheel offline checks and the 138-site source-refusal audit. Accounting revision 20 records the intended handler-expression instructions/pool/validation costs in three composed cases and retains revision 19 counters; the note/acceptance slices preserve all eight resulting resource observations.
Final main is de363e3, clean and synchronized, with wheel/installed-CLI/interpreter-startup smokes and final-main CI passing. Each dependent retained its reviewed contents and focused diff during parent-squash reconciliation. The four task issues are closed and their Project items are Done; completed branches are removed and the unrelated code-cells stash is preserved.
Remaining #124 work includes exception groups/except* splitting/merging, traceback objects/mutation and note rendering/export, and structured native exception constructors/fields/subclasses. User-class generator throw remains #120; remaining representations/formatting remain #127. The exact exception contract and runnable example document the accepted profile.
A2 remains open. Package qualification, broader source/builtin/async reconciliation, standard-library coverage and candidate/release gates retain their separate evidence requirements. Certified package workloads and publication/deployment status are unchanged by this batch.
Native exception delivery plan — 2026-11-01
Two further focused batches continue #124 without waiting on the separate formatting/annotations gates.
Batch 1:
- LA-17: Adopt NameError and UnboundLocalError constructors and fields #642 — LA-17: NameError/UnboundLocalError constructors, native fields and subclasses.
- LA-18: Adopt AttributeError constructors and fields #643 — LA-18: AttributeError constructors, native fields and subclasses.
- LA-19: Accept composed structured-name and attribute exception programs #644 — LA-19: composed name/attribute exception programs and installed offline acceptance.
Batch 2:
- LA-20A: Respect actual MRO across mixed native exception bases #651 — LA-20A: repair actual-MRO native exception lookup exposed by mixed bases.
- LA-20: Adopt ImportError and ModuleNotFoundError constructors and fields #645 — LA-20: ImportError/ModuleNotFoundError constructors, native fields and subclasses.
- LA-21: Adopt StopIteration subclass construction and value storage #646 — LA-21: StopIteration subclass construction and independent value storage.
- LA-21A: Forward native StopIteration.value through yield-from #655 — LA-21A: forward independent native values through yield-from.
- LA-22: Accept composed native exception families offline #647 — LA-22: composed native exception families and installed offline acceptance.
Each slice requires pinned CPython 3.14.7 signatures, identity/error-order cases, explicit profile admission, owned lifecycle/budget checks and full PR CI. Runtime-generated enrichment is qualified separately from explicit construction/storage. Groups/except*, traceback objects, SyntaxError/Unicode structured families, remaining representations and the independent candidate/release gates remain open. Deliver as a three-PR batch followed by a five-PR batch; squash in dependency order.
Native exception batches accepted — 2026-11-01
Two further Track A batches are accepted through eight focused, dependency-ordered squash merges.
Batch 1:
- LA-17: Adopt NameError and UnboundLocalError constructors and fields #642 — LA-17: NameError/UnboundLocalError constructors, native fields and subclasses (#648).
- LA-18: Adopt AttributeError constructors and fields #643 — LA-18: AttributeError constructors, native fields and subclasses (#649).
- LA-19: Accept composed structured-name and attribute exception programs #644 — LA-19: composed name/attribute failures and installed offline acceptance (#650).
Batch 2:
- LA-20A: Respect actual MRO across mixed native exception bases #651 — LA-20A: actual-MRO native exception lookup across mixed bases (#652).
- LA-20: Adopt ImportError and ModuleNotFoundError constructors and fields #645 — LA-20: ImportError/ModuleNotFoundError fields and exact-string message selection (#653).
- LA-21: Adopt StopIteration subclass construction and value storage #646 — LA-21: StopIteration subclasses, independent value storage and actual-ancestry exhaustion/PEP 479 (#654).
- LA-21A: Forward native StopIteration.value through yield-from #655 — LA-21A: native delegated return values (#656).
- LA-22: Accept composed native exception families offline #647 — LA-22: composed native exception families and installed offline acceptance (#657).
All 16 final regression jobs pass. The automated CPython 3.14.7 exception corpus records 310 cases: 301 semantic/error comparisons and nine explicit refusals; 53 cases are explicitly shared with core-source/1. Node and Chromium pass every drain, step and parked driver. Two separately recorded macOS arm64 pinned-reference crash probes remain qualified divergences, outside successful differential counts; Node and installed offline Chromium check safe None behavior. These are finite corpus/API observations, not an overall Python-completion percentage.
Local acceptance includes 395 exception/source/lifecycle/qualification tests, nine runner tests, 53 isolated installed-wheel offline checks, the 139-site refusal audit and all eight unchanged deterministic execution resource observations. The isolated browser compatibility inventory passes 756 observations (717 supported, 35 deferred and four host-restricted), with its own denominator. Browser conformance retains its commands/matrix and now uses the existing 15-minute integration bound after two 12-minute cancellations interrupted the final compatibility command. Passing reviewed-content CI was retained through parent-squash reconciliation; duplicate ancestry-only runs were cancelled.
Final main is bd8b212, clean and synchronized, with local wheel/isolated installed-CLI/interpreter-startup smokes and final-main CI passing. All eight task issues are closed and Project items are Done; completed branches are removed and the unrelated code-cells stash is preserved. The exact API contract and native exception example record the accepted profile.
A2 and #124 remain open for groups/except*, traceback objects/mutation and note rendering/export, automatic attribute/import failure enrichment, and remaining structured native families including SyntaxError/Unicode. User-class generator throw and the two delegated NULL-payload qualifications remain #120; remaining representations/formatting remain #127. Package/library qualification, the broader language/async inventory and candidate #36 retain separate evidence gates. Certified package workloads and publication/deployment status are unchanged by these batches.
Runtime metadata and syntax exception delivery plan — 2026-11-01
Batch 1:
- LA-23: Enrich runtime attribute lookup failures #658 — LA-23: runtime attribute-read metadata, identity and owned setter order.
- LA-24: Populate runtime import failure metadata #659 — LA-24: runtime import failure metadata within the verified registry.
- LA-25: Accept runtime failure metadata in composed offline programs #660 — LA-25: composed module/dynamic/generator and installed offline acceptance.
Batch 2:
- LA-26: Adopt SyntaxError family constructors and native fields #661 — LA-26: SyntaxError/IndentationError/TabError constructors, native fields and subclasses.
- LA-27: Render native SyntaxError messages and locations #662 — LA-27: native SyntaxError message/location rendering and callback order.
- LA-28A: Reconcile the accepted syntax-rendering refusal inventory #670 — LA-28A: remove the stale rendering refusal restored during squash reconciliation (fix(LA-28A): remove resolved syntax rendering refusal #671).
- LA-28: Accept structured syntax exceptions offline #663 — LA-28: composed structured syntax exception and installed offline acceptance.
- LA-28B: Preserve legacy syntax exception scalar messages #672 — LA-28B: preserve version-3 scalar SyntaxError-family messages (fix(LA-28B): preserve legacy syntax exception messages #673).
Each slice requires CPython 3.14.7 reference cases, explicit source-profile admission, native ownership/interruption tests and full relevant PR CI. Groups/except*, traceback objects, Unicode families, parser diagnostics, broader formatting and candidate/release gates remain separately owned. Deliver as a three-PR batch followed by a five-PR batch, starting ready dependent work while prior CI runs and squash-merging passing work in dependency order.
Runtime metadata and syntax exception batches accepted — 2026-11-01
Two further Track A batches are accepted through eight focused, dependency-ordered squash merges.
Batch 1:
- LA-23: Enrich runtime attribute lookup failures #658 — LA-23: runtime AttributeError read metadata, original receiver/name identity and owned setter behavior (#664).
- LA-24: Populate runtime import failure metadata #659 — LA-24: registry import failure messages, name/path/name_from and original module origin (#665).
- LA-25: Accept runtime failure metadata in composed offline programs #660 — LA-25: composed module/dynamic/generator metadata and installed offline acceptance (#666).
Batch 2:
- LA-26: Adopt SyntaxError family constructors and native fields #661 — LA-26: SyntaxError/IndentationError/TabError constructors, native fields, subclasses and detail iteration (#667).
- LA-27: Render native SyntaxError messages and locations #662 — LA-27: native message/location rendering, callback order and explicit host contract (#668).
- LA-28A: Reconcile the accepted syntax-rendering refusal inventory #670 — LA-28A: remove the stale rendering refusal restored during squash reconciliation (#671).
- LA-28: Accept structured syntax exceptions offline #663 — LA-28: composed structured syntax failures, original frames and installed offline cancellation/restart (#669).
- LA-28B: Preserve legacy syntax exception scalar messages #672 — LA-28B: preserve legacy version-3 scalar SyntaxError-family messages (#673).
All 16 final regression jobs pass. The pinned CPython 3.14.7 exception corpus records 438 cases: 430 semantic/error comparisons and eight explicit refusals, with 76 explicitly shared core-source/1 cases. All six Node and six Chromium drain/step/parked drivers pass. Four qualifications remain outside successful differential counts: two existing macOS arm64 pinned-reference delegated-return crash probes and two SyntaxError host differences. Native location rendering uses POSIX separators and signed 64-bit C long behavior on every interpreter host; the separate Windows expectations are derived from pinned implementation/configuration and do not certify Windows-native parity.
Final local evidence includes 582 focused function/exception/execution tests, 71 isolated installed-wheel offline checks and the 139-site source-refusal audit. Accounting revision 22 records the owned module-origin storage edge and associated work/bytes; all eight resulting deterministic execution resource observations remain stable through the syntax slices and final legacy follow-up. Passing reviewed-content CI was retained through parent-squash reconciliation; duplicate ancestry-only runs were cancelled.
Final main is 8533231, clean and synchronized, with wheel/isolated installed-CLI/interpreter-startup smokes and final-main CI passing. All eight task issues are closed and Project items are Done; completed branches are removed and the unrelated code-cells stash is preserved. The exact API contract, runtime metadata example and syntax exception example record the accepted profile.
A2 and #124 remain open for groups/except*, traceback objects/mutation, note rendering/export, write/delete attribute metadata, custom import provenance, parser-generated syntax fields, Unicode structured families and the declared host qualifications. User-class generator throw and the two delegated crash qualifications remain #120; broader displays/formatting remain #127. Package/library qualification, broader language/async reconciliation and candidate #36 keep their separate evidence gates. Certified package workloads and publication/deployment status are unchanged by these batches.
Unicode translation exception batch accepted — 2026-11-01
Three focused, dependency-ordered squash merges complete this finite #124 batch under Track A #600:
- LA-29: Adopt UnicodeTranslateError native construction and fields #674 — LA-29: UnicodeTranslateError construction, five native fields, ordered index conversion, reinitialization and subclasses (#677).
- LA-30: Render native UnicodeTranslateError messages #675 — LA-30: native character/range rendering, reason callback mutation/error order, absent-field behavior and legacy scalar messages (#678).
- LA-31: Accept composed Unicode translation exceptions offline #676 — LA-31: composed record/module/dynamic/generator programs and installed offline cancellation/restart (#679).
All 16 final regression jobs pass. The pinned CPython 3.14.7 exception corpus now records 543 cases: 535 semantic/error comparisons and eight explicit refusals, with 109 cases explicitly shared by core-source/1. Node and Chromium pass every drain, step and parked driver. Four existing host/crash qualifications remain outside successful differential counts. These are finite corpus/API observations, not an overall Python-completion percentage.
Local evidence includes 750 focused exception/function/operation/execution checks, nine runner tests, 83 isolated installed-wheel offline checks and the 139-site scope audit. All eight deterministic execution observations retain accounting revision 22. Parent-squash conflicts preserved the reviewed implementation and focused diffs; affected composition/translation checks and asset/scope audits passed after resolution. Passing implementation CI was retained through ancestry reconciliation.
Final main is d0b4462, clean and synchronized, with local wheel/isolated CLI/interpreter startup smokes and final-main CI passing. All three task issues are closed and Project items are Done; completed branches are removed and the unrelated code-cells stash is preserved. The exact exception contract and record translation example record the accepted surface.
A2 and #124 remain open for groups/except*, traceback objects/mutation, note rendering/export, remaining attribute/import/parser metadata, Unicode Encode/Decode structured families and the declared qualifications. User-class generator throw remains #120; broader representations/formatting remain #127. Package/library qualification and candidate #36 retain their separate evidence gates.
Unicode encoding and decoding delivery plan — 2026-11-01
Batch 1:
- LA-32: Adopt UnicodeEncodeError construction and native fields #680 — LA-32: UnicodeEncodeError construction, native fields and subclasses.
- LA-33: Render native UnicodeEncodeError messages #681 — LA-33: native encoding message rendering and callback order.
- LA-34: Accept Unicode encoding exceptions offline #682 — LA-34: composed encoding failures and installed offline acceptance.
Batch 2:
- LA-35: Adopt UnicodeDecodeError construction and native fields #683 — LA-35: UnicodeDecodeError construction, native bytes/buffer fields and subclasses.
- LA-36: Render native UnicodeDecodeError messages #684 — LA-36: native decoding message rendering and callback order.
- LA-37: Accept Unicode decoding exceptions offline #685 — LA-37: composed decoding failures and installed offline acceptance.
Each finite slice requires pinned CPython 3.14.7 signatures, identity and validation-order cases, explicit profiles and retained boundaries, owned lifecycle/interruption/budget checks and full relevant PR CI. Begin ready dependent work while earlier CI runs; squash passing work in dependency order. Groups/except*, traceback objects, note export, automatic codec metadata and other remaining #124/#127 gates stay separately qualified. No publication or deployment is included.
Unicode encoding and decoding batches accepted — 2026-11-01
Two focused Track A batches are accepted through dependency-ordered squash merges.
Batch 1:
- LA-32: Adopt UnicodeEncodeError construction and native fields #680 — LA-32: UnicodeEncodeError construction, independent native fields, ordered index validation and compatible subclasses (#686).
- LA-33: Render native UnicodeEncodeError messages #681 — LA-33: native character/range messages, reason-before-encoding callbacks, mutation/error order and safe host summaries (#687).
- LA-34: Accept Unicode encoding exceptions offline #682 — LA-34: composed record/module/dynamic/generator and installed offline acceptance (#688).
Batch 2:
- LA-35: Adopt UnicodeDecodeError construction and native fields #683 — LA-35: UnicodeDecodeError construction, bytes/subtype identity, mutable-buffer and contiguous-view copying, native fields and subclasses (#689).
- LA-36: Render native UnicodeDecodeError messages #684 — LA-36: native byte/range rendering, callback order, absent/mutated fields and legacy scalar diagnostics (#690).
- LA-36A: Preserve the accepted decoding boundary inventory after reconciliation #692 — LA-36A: remove the obsolete decoding-rendering refusal restored in the committed scope inventory during parent-squash reconciliation (#693).
- LA-37: Accept Unicode decoding exceptions offline #685 — LA-37: composed decoding failures, copied-buffer lifetimes and installed offline acceptance (#691).
All 16 jobs in the final reviewed-content regression run pass. The pinned CPython 3.14.7 exception corpus has 728 cases: 718 semantic/error comparisons and ten explicit refusals, including 173 explicitly shared core-source/1 cases. Node and Chromium pass every drain, step and parked profile/driver combination. Four existing host/crash qualifications remain outside these successful differential counts. These finite corpus/API observations do not measure overall Python completion.
Local validation includes 1,002 exception/function/operation/execution checks, nine runner tests, 106 isolated installed-wheel offline Chromium checks, the 139-site source inventory audit and asset/distribution/installed-CLI checks. All eight deterministic execution resource cases retain accounting revision 22. Passing unchanged-content CI was retained across squash reconciliation; only the two interrupted rendering jobs were retried, and redundant ancestry-only runs were cancelled. LA-36A restores the reviewed inventory without runtime changes; its committed scope/asset audits and retained full LA-36/LA-37 evidence cover the manifest-only correction.
Final main is 1153c0e, clean and synchronized, with final-main CI smoke passing. All seven task issues are closed and their Project items are Done; completed branches are removed and the unrelated code-cells stash is preserved. The exact exception contract, encoding example and decoding example record the adopted surface.
A2 and #124 remain open for groups/except*, traceback objects/mutation, note rendering/export, remaining attribute/import/parser metadata and automatic codec metadata, plus the declared qualifications. The latter has two named field-read boundaries in the corpus. User-class generator throw remains #120; general representations/formatting remain #127. Package/library qualification and candidate #36 retain their separate evidence gates. No publication or deployment occurred.
Runtime codec metadata delivery plan — 2026-11-01
Batch 1:
- LA-38: Adopt runtime ASCII and Latin-1 encoding exception metadata #694 — LA-38 — Adopt runtime ASCII and Latin-1 encoding exception metadata
- LA-39: Adopt runtime UTF-8 surrogate encoding exception metadata #695 — LA-39 — Adopt runtime UTF-8 surrogate encoding exception metadata
- LA-40: Accept runtime encoding failures in composed offline programs #696 — LA-40 — Accept runtime encoding failures in composed offline programs
Batch 2:
- LA-41: Adopt runtime ASCII decoding exception metadata #697 — LA-41 — Adopt runtime ASCII decoding exception metadata
- LA-42: Adopt runtime UTF-8 decoding spans and reasons #698 — LA-42 — Adopt runtime UTF-8 decoding spans and reasons
- LA-43: Accept runtime decoding failures in composed offline programs #699 — LA-43 — Accept runtime decoding failures in composed offline programs
Each slice requires CPython 3.14.7 identity/argument/span/reason cases, explicit source profiles, lifecycle/interruption/shared-budget evidence and relevant PR CI. Begin ready dependent work while earlier CI runs; squash passing work in dependency order. Wider codecs/error policies, groups/except*, traceback objects, note export and remaining native metadata stay separately owned under #124/#117. A2, package qualification and candidate/release gates remain open.
Runtime codec metadata batches accepted — 2026-11-01
Two focused Track A batches are accepted through six dependency-ordered squash merges.
Batch 1:
- LA-38: Adopt runtime ASCII and Latin-1 encoding exception metadata #694 — LA-38: runtime strict ASCII/Latin-1 encoding fields, original string/subtype identity and contiguous failure ranges (#700).
- LA-39: Adopt runtime UTF-8 surrogate encoding exception metadata #695 — LA-39: runtime UTF-8 surrogate fields, canonical labels/reasons and code-point ranges (#701).
- LA-40: Accept runtime encoding failures in composed offline programs #696 — LA-40: composed runtime encoding failures and installed offline acceptance (#702).
Batch 2:
- LA-41: Adopt runtime ASCII decoding exception metadata #697 — LA-41: runtime strict ASCII decoder fields and immutable exact-bytes snapshots (#703).
- LA-42: Adopt runtime UTF-8 decoding spans and reasons #698 — LA-42: runtime UTF-8 invalid-start/continuation/truncation spans and exact reasons, including all leading bytes and special continuation boundaries (#704).
- LA-43: Accept runtime decoding failures in composed offline programs #699 — LA-43: composed runtime decoding failures, released input graphs and installed offline acceptance (#705).
All 16 jobs in the final reviewed-content regression run pass. Only a timed-out interpreter shard was retried; the other 15 passing results were retained. The same complete 96-check shard passes locally in 308 seconds. The pinned CPython 3.14.7 exception corpus records 852 cases: 844 supported semantic/error comparisons and eight explicit refusals, with 267 explicitly shared core-source/1 cases. Node and Chromium pass every drain, step and parked driver/profile combination. Five host/crash/cache qualifications remain outside successful differential counts; the added one-byte decoder snapshot identity qualification has the existing #117 owner. These finite observations do not measure overall Python completion.
Local evidence includes 1,244 focused exception/value/execution checks, 18 contract/asset/runner checks, 128 isolated installed-wheel offline checks and the 139-site scope audit. Final reconciliation passes 237 affected runtime checks and repeats all 128 offline checks. The audit caught and corrected an automatically restored obsolete UTF-8 inventory boundary before the reconciliation commit. All eight deterministic execution resource observations retain accounting revision 22. Reviewed contents and focused PR diffs were retained while appending parent squashes without rewriting shared history.
Final main is f3cbb47, clean and synchronized, with local wheel/isolated installed-CLI/interpreter-startup smokes and the final-main CI smoke passing. All six task issues are closed and Project items are Done; completed task branches are removed. The exception contract, runtime encoding example and runtime decoding example record the accepted surface.
A2 and #124 remain open for groups/except*, traceback objects/mutation, note rendering/export and remaining attribute/import/parser metadata. Wider codec/error-policy APIs and general bytes-cache identity remain #117; user-class generator throw remains #120; general representations/formatting remain #127. Package/library qualification and candidate/release gates retain their separate evidence requirements. No publication or deployment occurred.
Generic attribute mutation delivery plan — 2026-11-01
A focused stacked batch continues the remaining mutation metadata scope in #124:
- LA-44: Adopt generic instance write failure metadata #706 — LA-44: failed generic writes to object and dictionary-free source instances, selective native fields and receiver/key ownership.
- LA-44A: Accept string subtypes in native attribute wrappers #709 — LA-44A: repair native attribute wrapper validation for string-subtype keys.
- LA-45: Adopt generic instance deletion failure metadata #707 — LA-45: failed generic dictionary/dictionary-free instance deletions and owned callback order.
- LA-46: Accept generic attribute mutation failures offline #708 — LA-46: composed modules/dynamic source/generators and installed offline acceptance.
- LA-46A: Qualify dictionary mutation reference crashes #714 — LA-46A: qualify the intermittent pinned-reference dictionary replacement crash and identify failing reference inputs.
Pinned CPython 3.14.7 reference cases, Node/Chromium drain/step/parked execution, interruption/shared budgets and PR CI qualify each finite slice. Other native/module/class mutation layouts, parser/import metadata, groups/except*, tracebacks and note export retain #124. General formatting retains #127; A2, library/package and candidate/release gates remain open. No publication or deployment is included.
Generic attribute mutation batch accepted — 2026-11-01
Five focused, dependency-ordered squash merges complete this finite Track A batch:
- LA-44: Adopt generic instance write failure metadata #706 — LA-44: selective generic instance write fields, original receiver/key ownership and dictionary-free storage (#710).
- LA-44A: Accept string subtypes in native attribute wrappers #709 — LA-44A: native attribute wrapper validation for string-subtype keys, including owned dictionary and method forwarding (#711).
- LA-45: Adopt generic instance deletion failure metadata #707 — LA-45: selective generic deletion fields, empty slots, replaced/reset dictionaries and callback KeyError subclass conversion (#712).
- LA-46: Accept generic attribute mutation failures offline #708 — LA-46: composed module/dynamic/generator programs, original frames and installed offline acceptance (#713).
- LA-46A: Qualify dictionary mutation reference crashes #714 — LA-46A: explicit qualification of the intermittent native reference crash and case-identifying subprocess diagnostics (#715).
All 16 jobs in the corrected regression run pass. The pinned CPython 3.14.7 exception corpus records 940 scored cases: 929 supported semantic/error comparisons and 11 explicit refusals, with 267 cases explicitly shared by core-source/1. Every Node and Chromium drain/step/parked driver/profile combination passes. Six host/crash/cache qualifications remain outside successful differential counts. These finite corpus/API observations do not measure overall Python completion.
The exact additions cover name/obj selection for dictionary-free generic writes/deletions, read-only non-data attributes, empty slots, string-subtype names and explicitly replaced/reset instance dictionaries. Native object/type/module/method/super attribute wrappers validate native string content while preserving owned keys where adopted. Callback KeyError subclasses follow native mutation conversion; other owned hook/descriptor errors preserve their identities. Original-instance exact-string deletion fields retain two named shared-key/inline-storage refusals, and type-namespace subtype-key publication retains its hash gate. Other native/module/class mutation layouts remain separately qualified.
The additional crash qualification retains dictionary replacement from inside a key-comparison callback: 3 of 16 isolated pinned macOS arm64 probes exited with SIGSEGV (-11). Two Linux CI corpus invocations also crashed before case-identifying diagnostics existed. The input continues to pass safe interpreter and installed offline checks; automated reference runs exclude it. Failed reference processes now identify the fixture and exit code or timeout without suppressing the original failure.
Local acceptance includes the complete 940-case Node parked matrix, all newly adopted Chromium parked cases, 142 isolated installed-wheel offline checks, focused ownership/interruption/budget and original-frame checks, 11 diagnostic/runner checks and the 139-site scope audit. All eight deterministic execution resource observations retain accounting revision 22. Affected reconciliation checks and asset/scope audits pass; focused diffs and reviewed contents were retained without rewriting shared history. Passing corrected descendant CI supplies the batch evidence.
Final main is 06be41d, clean and synchronized, with local wheel/isolated installed-CLI/interpreter-startup smokes and final-main CI passing. All five task issues are closed and Project items are Done; completed branches are removed after immediate-dependent reconciliation. The exception contract and record mutation example record the accepted profile.
A2 and #124 remain open for groups/except*, traceback objects/mutation, note rendering/export, original-instance deletion fields, remaining native/module/class attribute/import/parser metadata and the declared qualifications. General formatting remains #127; generator throw and broader codec/bytes identity retain #120/#117. No new library or package workload is certified. Broader language/async/library reconciliation and candidate/release gates retain their separate evidence requirements. No publication or deployment occurred.
Module, class, callable and view metadata delivery plan — 2026-11-01
Two focused batches continue the remaining native attribute-mutation metadata scope in #124.
Batch 1:
- LA-47: Adopt module attribute mutation failure metadata #716 — LA-47: native/source module mutation failures, selective fields and owned hooks.
- LA-48: Adopt class attribute mutation failure metadata #717 — LA-48: heap class/type mutation failures, native descriptors and metaclass callbacks.
- LA-49: Accept module and class mutation failures offline #718 — LA-49: composed module/class programs and installed offline acceptance.
Batch 2:
- LA-50: Adopt callable attribute mutation failure metadata #719 — LA-50: source/native callable mutation failures and selective descriptor fields.
- LA-51: Adopt namespace and dictionary-view mutation failure metadata #720 — LA-51: namespace mapping proxies and dictionary-view mutation failures.
- LA-52: Accept callable and view mutation failures offline #721 — LA-52: composed callable/view programs and installed offline acceptance.
Each slice requires pinned CPython 3.14.7 identity/validation/callback-order cases, explicit source profiles, lifecycle/interruption/shared-budget checks and relevant PR CI. Begin ready dependent work while earlier CI runs; squash passing work in dependency order. Original-instance shared-key deletion metadata, type subtype-key publication, other native layouts, import/parser metadata, groups/except*, traceback objects and note export retain #124; broader formatting retains #127. A2, package/library and candidate/release gates remain open.
Module, class, callable and view metadata batches accepted — 2026-11-01
Two focused Track A batches are accepted through six dependency-ordered squash merges.
Batch 1:
- LA-47: Adopt module attribute mutation failure metadata #716 — LA-47: module mutation fields, original key/receiver identity, module subclasses, read-only fields and dictionary callback conversion (#722).
- LA-48: Adopt class attribute mutation failure metadata #717 — LA-48: heap-class mutation fields, exact-string name canonicalization, native type descriptors and metaclass callbacks (#723).
- LA-49: Accept module and class mutation failures offline #718 — LA-49: composed module/class failures, original source frames, suspended cleanup and installed offline acceptance (#724).
Batch 2:
- LA-50: Adopt callable attribute mutation failure metadata #719 — LA-50: source/native callable mutation fields, read-only storage, temporary bound receivers and function dictionary callback conversion (#725).
- LA-51: Adopt namespace and dictionary-view mutation failure metadata #720 — LA-51: namespace proxies and live dictionary-view mutation fields, native wrappers/descriptors and detached owners (#726).
- LA-52: Accept callable and view mutation failures offline #721 — LA-52: composed callable/view failures, original frames, owner cycles, suspended cleanup and installed offline Stop/Restart acceptance (#727).
All 16 jobs in the final reviewed-content regression run pass. The first implementation also has its own complete passing regression run. Superseded ancestor runs were cancelled to release queued capacity; passing descendant coverage supplies their batch evidence.
The pinned CPython 3.14.7 exception corpus adds 282 cases and now records 1,222 scored cases: 1,211 supported semantic/error comparisons and 11 explicit refusals, with 267 cases explicitly shared by core-source/1. Every Node and Chromium drain/step/parked profile combination passes. Six existing host/crash/cache qualifications remain outside successful differential counts. These finite corpus/API results do not measure overall Python completion.
Exact additions distinguish populated missing-name failures from empty native fields on read-only descriptors/non-data attributes. Module, function, callable and view failures preserve adopted key identity; missing class deletions canonicalize subtype names to exact strings without hash/format callbacks. Dictionary comparison KeyError subclasses become fresh AttributeErrors while other owned callback errors preserve identity and dispatch order. Existing source profile boundaries remain explicit.
Local acceptance includes 1,661 focused exception/class/execution checks, the complete 1,222-case Node parked matrix, every newly adopted Chromium parked case, 164 isolated installed-wheel offline checks, 18 asset/runner/reference-diagnostic checks and the 139-site source audit. All eight deterministic execution resource observations retain accounting revision 22. Affected checks and engine/scope audits pass after conflict resolution. Focused diffs and reviewed contents were preserved through ordinary parent-squash merges without rewriting shared history; redundant ancestry-only CI was skipped after successful batch coverage.
Final main is c04de41, clean and synchronized, with local wheel/isolated installed-CLI/interpreter-startup checks and final-main CI smoke passing. All six task issues are closed and Project items are Done. Completed branches are removed after immediate-dependent reconciliation; the unrelated code-cells stash is preserved. The exception contract, namespace cleanup example and callable/view example record the accepted surface.
A2 and #124 remain open for groups/except*, traceback objects/mutation, note rendering/export, original-instance shared-key deletion, remaining native attribute/import/parser metadata and the declared qualifications. Type subtype-key publication retains its hash boundary; broader representations/formatting and remaining container/codec APIs retain #127/#116/#117. Library/package qualification, broader language/async reconciliation and candidate/release gates retain their separate evidence requirements.
Scalar, container, generator and iterator metadata delivery plan — 2026-11-01
Two focused batches continue the remaining native attribute-mutation metadata scope in #124.
Batch 1:
- LA-53: Adopt scalar attribute mutation failure metadata #728 — LA-53: Adopt scalar attribute mutation failure metadata.
- LA-54: Adopt container and buffer mutation failure metadata #729 — LA-54: Adopt container and buffer mutation failure metadata.
- LA-54A: Route direct value mutations through selective native metadata #736 — LA-54A: repair direct-value mutation bytecode bypass exposed by composed acceptance.
- LA-55: Accept scalar and container mutation failures offline #730 — LA-55: Accept scalar and container mutation failures offline.
Batch 2:
- LA-56: Adopt generator mutation failure metadata #731 — LA-56: Adopt generator mutation failure metadata.
- LA-57: Adopt native iterator mutation failure metadata #732 — LA-57: Adopt native iterator mutation failure metadata.
- LA-58: Accept generator and iterator mutation failures offline #733 — LA-58: Accept generator and iterator mutation failures offline.
- LA-58A: Scale bounded differential runner deadlines with corpus size #742 — LA-58A: scale the bounded differential Node process deadline with the growing corpus after Linux CI timeouts.
- LA-58B: Allow complete growing browser conformance shards #744 — LA-58B: retain complete browser conformance with a measured finite 20-minute bound after two 15-minute job cancellations.
Each slice requires pinned CPython 3.14.7 identity/validation/error-selection cases, explicit source profiles, lifecycle/interruption/shared-budget checks and relevant PR CI. Start dependent work while earlier CI runs; squash passing PRs in dependency order. Frames/code/cells, other native attribute/import/parser metadata, original-instance shared-key deletion, groups/except*, traceback objects and note export retain #124; broader formatting and container/codec APIs retain their existing owners. A2, library/package and candidate/release gates remain open.
Value, generator and iterator mutation batches accepted — 2026-11-01
Two focused Track A batches are accepted through nine dependency-ordered squash merges.
Batch 1:
- LA-53: Adopt scalar attribute mutation failure metadata #728 — LA-53 (734).
- LA-54: Adopt container and buffer mutation failure metadata #729 — LA-54 (735).
- LA-54A: Route direct value mutations through selective native metadata #736 — LA-54A (737).
- LA-55: Accept scalar and container mutation failures offline #730 — LA-55 (738).
Batch 2:
- LA-56: Adopt generator mutation failure metadata #731 — LA-56 (739).
- LA-57: Adopt native iterator mutation failure metadata #732 — LA-57 (740).
- LA-58: Accept generator and iterator mutation failures offline #733 — LA-58 (741).
- LA-58A: Scale bounded differential runner deadlines with corpus size #742 — LA-58A (743).
- LA-58B: Allow complete growing browser conformance shards #744 — LA-58B (745).
The complete corrected regression run passes all 16 jobs. The pinned CPython 3.14.7 exception corpus adds 519 scored cases and now records 1,741: 1,730 supported semantic/error comparisons and 11 explicit refusals, with 267 explicitly shared core-source/1 cases. Every Node/Chromium drain, step and parked profile combination passes. Six existing host/crash/cache qualifications remain outside those counts. These finite observations do not measure overall Python completion.
The exact additions cover selective name/obj fields for missing versus read-only scalar/container/buffer attributes, direct storage descriptors, generator state/name mutation and adopted native iterator layouts. Original receiver/string-subtype key identity survives args replacement; generator names retain string subtypes. Native object wrappers and direct source syntax agree. Subtype dictionaries, owned hooks and existing core admission remain explicit.
Local acceptance includes 2,167 exception/class/execution checks, all 1,741 Node parked cases, every newly adopted Chromium parked case, 192 isolated installed-wheel offline checks, the complete 44-check browser shard locally in 485.824 seconds, and the 139-site source audit. The eight deterministic execution resource observations remain unchanged. Affected source/ownership, diagnostic/runner, script and asset/scope checks pass after parent-squash reconciliation; unchanged passing evidence was retained without rewriting shared history.
Two fixed-30-second Linux differential subprocess timeouts led to the bounded case-count deadline in LA-58A. Two 15-minute browser-job cancellations reached the final compatibility command after preceding checks passed; LA-58B retains all commands/shards with a finite 20-minute conformance limit and the existing 15-minute integration limit. The corrected complete workflow passes.
Final main is b6d280c, clean and synchronized, with local wheel/isolated installed-CLI/interpreter-startup checks and final-main CI smoke passing. All nine task issues are closed and Project items are Done. Completed branches are removed after immediate-dependent reconciliation; the unrelated code-cells stash is preserved. The exception contract, value failure example and iterator failure example record the accepted surface.
A2 and #124 remain open for frame/code/cell/property/super mutation layouts, direct scalar storage descriptors, original-instance shared-key deletion, other native/import/parser metadata, groups/except*, traceback objects/mutation and note export. Wider formatting, container/iterator/codec APIs, user-class generator throw, library/package qualification and candidate/release gates retain their existing owners.
Reflective mutation milestone accepted — 2026-11-02
- LA-59–LA-61: Complete reflective native mutation failure metadata #756 — LA-59–LA-61: reflective native mutation metadata, direct scalar storage descriptors and composed/offline acceptance (#758).
- LA-62: Qualify callback-bearing native attribute mutation keys #757 — LA-62: qualify callback-bearing native attribute mutation keys and reconcile the other native mutation layouts.
One complete milestone was implemented and validated locally, then pushed as a single feature commit and squash merged. All 678 shared local PR-check IDs pass, including all 388 Node checks, all 274 Chromium conformance checks and nine browser integrations. The final exception unit run passes 2,257 tests; isolated installed-wheel offline acceptance passes 215 checks, including original dynamic diagnostics, retained owner cycles, Stop/Restart and reduced-profile updates. The global source audit records 140 owned refusal sites. All eight deterministic execution resource observations retain revision 22. Failed local browser module-loading attempts were retried in one runner, with one residual check isolated to one worker; other successful evidence was retained.
The pinned CPython 3.14.7 exception corpus now records 1,828 cases: 1,808 supported semantic/error comparisons and 20 explicit refusals, with 267 explicitly shared core-source/1 cases. Every Node/Chromium drain, step and parked profile combination passes. Six existing host/crash/cache qualifications remain outside successful differential counts. These are finite corpus/API observations, not an overall Python-completion percentage.
Missing frame/code/cell/frame-locals-proxy/property/super attributes preserve the original receiver and reflected string-subtype key independently of args. Read-only attributes and direct int/float/complex storage descriptors leave native name/obj fields absent; writable cell/property fields and numeric subclass dictionaries retain their behavior. Custom key hash/equality on the reflective layouts and frame tracing/jumping retain explicit refusals. The exact contract and runnable example are in docs/interpreter-exceptions.md and examples/interpreter_reflective_failures.py.
Final main is 56e19c1, clean and synchronized, with main smoke passing. Merge reused the complete local validation; the automatically triggered duplicate PR workflow was cancelled. #756 is complete and its Project item is Done. A2/#124 remain open for #757, original-instance shared-key deletion, other native/import/parser metadata, groups/except*, traceback objects/mutation and note export. Broader formatting, container/iterator/codec APIs, library/package certification and candidate/release gates retain their separate owners; no package workloads gain certification from this milestone.
Native attribute key milestone accepted — 2026-11-02
- LA-62: Qualify callback-bearing native attribute mutation keys #757 — LA-62: callback-bearing native attribute mutation keys, descriptor selection, suppressed lookup errors and composed/offline acceptance (#760).
- LA-63: Qualify rejected native attribute key probe sequences #759 — LA-63: qualify rejected native type-key comparisons and their hash-seed-dependent sparse probe sequences.
One complete milestone was implemented and validated locally, published as a single feature commit, and squash merged. All 678 shared local PR-check IDs pass on macOS arm64 with pinned CPython 3.14.7 and Node 24.19.0: Python/runtime/distribution checks, all 388 Node checks, all 274 Chromium conformance checks, nine browser integrations and browser preparation. Four browser worker-startup interruptions passed isolated one-worker retries; unchanged passing evidence was retained. The final descriptor-binding/type-snapshot browser cases pass, and isolated installed-wheel offline acceptance passes 223 checks. The automatically triggered duplicate PR workflow was cancelled; merge reused the local results.
The exception corpus adds 615 cases and adopts six former reflective-key refusals. It now records 2,443 cases: 2,387 supported semantic/error comparisons and 56 explicit refusals, with 267 explicitly shared core-source/1 cases. All Node and Chromium drain/step/parked profile combinations pass. Seven host/crash/cache qualifications remain outside successful differential counts. These finite results do not measure overall Python completion.
Existing setattr/delattr/native mutation wrappers now run owned key hash, equality and truth callbacks before selecting the actual stored descriptor, including aliases. Lookup errors are suppressed before storage or selective AttributeError fields; descriptor and dictionary errors retain their normal behavior, including independent storage hashing. Writable native fields, original key/receiver identity, callback-visible partial changes, source hooks/descriptors, original receiver-type capture and function-name subtype identity are covered. Parked collection, cancellation/close, shared limits, modules/dynamic source, suspended cleanup and offline Stop/Restart pass. The source audit retains 140 owned refusal sites and all eight revision-22 resource observations remain stable.
A first rejected native type-key comparison remains an explicit refusal after its effects. Sixteen isolated seeded probes produced two or three comparisons for the same int doc mutation, so that raw input earns no supported differential credit. #759 owns that qualification. The exact contract and runnable example record the accepted surface.
Final main is 5072ae1, clean and synchronized; its automatic main smoke passes. The merged feature branches are removed. #757 is complete and its Project item is Done. A2/#124 remain open for #759, original-instance shared-key deletion, other native/import/parser metadata, groups/except*, tracebacks and note export. Exact builtin/API coverage above does not add a certified package workload; library/package and candidate/release gates retain their existing owners.
Activity
ellainng commentedon Nov 1, 2026
Next finite exception batch under #124: #674 (LA-29 UnicodeTranslateError construction/native fields), #675 (LA-30 native rendering), and #676 (LA-31 composed/offline acceptance), delivered as focused stacked PRs against CPython 3.14.7. Encode/Decode families and the other retained exception/formatting boundaries remain separately owned.
feat(LA-53): adopt scalar mutation failure metadata (#734)
feat(LA-54): adopt container mutation failure metadata (#735)
fix(LA-54A): preserve direct value mutation metadata (#737)
test(LA-55): accept value mutation failures offline (#738)
feat(LA-56): adopt generator mutation failure metadata (#739)
feat(LA-57): adopt iterator mutation failure metadata (#740)
test(LA-58): accept iterator mutation failures offline (#741)
fix(LA-58A): scale differential process deadlines (#743)
fix(LA-58B): allow complete browser conformance shards (#745)
feat(LA-59): complete reflective mutation failure metadata (#758)
feat(LA-62): qualify native attribute mutation keys (#760)