Repository navigation
INT-OBJECT-01: Expand object construction and reflection #123
Description
Scope
- Specify new, super, richer type/isinstance/issubclass, builtin subclassing and metaclass construction as separate reviewed protocol slices.
- Adopt getattr/setattr/delattr/hasattr, dir/vars/globals/locals/id and arithmetic/reflected/in-place slots only through explicit type/identity/mutation contracts. Separate dynamic exec/eval/compile/import source admission from host grants.
Evidence and limits
Pinned CPython 3.14.7 is the semantic oracle. Run independently compiled Python source in Node and Chromium; record supported signatures, explicit refusals and zero logical teardown. Core-source and classes-source admission remain explicit. Library/package coverage, browser capabilities and native ABI support are separate claims. No publication or deployment is included.
Dependencies and readiness
- INT-EQ-01: Adopt equality and hashing protocols #114
- INT-FUNC-01: Expand function binding and scope mutation #118
Readiness: Ready. Equality/hash #114 and function binding #118 are accepted on main. Dependent work may use focused stacked PRs.
Tracked by the versioned broad-compatibility inventory in #99. The parent class milestone #33 and async milestone #34 remain open.
Existing object protocol boundaries
Bound-method and slice hashing, ordering and further object identities/reflection retain separately reviewed finite contracts. The delivered #114 equality/hash slice does not imply adoption of these forms; container-specific follow-ups remain under #116.
Finite generator/object checkpoint — 2026-10-26
Merged #240, #241, #242, #243, #244 and the focused diagnostic correction #246. Final main is a760a5bceb16e3d210c15edc79f1fbd2594e639c; all five final-main CI jobs pass. Each dependent tree and focused diff was preserved after the actual parent squash and fresh checks, without rewriting shared history. All six child issues are closed and their Project items are Done.
- INT-GEN-01A: Define generator and object protocol contracts #235 — finite protocol/reference contract.
- INT-OBJECT-01A: Execute attribute reflection through descriptors #238 — positional getattr/setattr/delattr/hasattr on adopted class attributes, descriptor precedence, arbitrary bounded string names, AttributeError-only suppression and bounded mutation.
- INT-OBJECT-01B: Execute arithmetic and reflected slots #239 — twelve binary/reflected/in-place operator families, unary +/−/~, divmod and two/three-argument power hooks with subclass priority, same-type suppression, NotImplemented fallback and owned callbacks.
The O1/O2 contract and generator console record exact scope and composed acceptance.
Validation: 368 Node tests and 60 Python tests; generators have 36 class and 33 shared core observations across all eight Node/Chromium, drain/step, class/core combinations. Object protocols have 46 observations across four target/driver combinations. The twelve retained protocol reports contain 460 passing observations, 436 measured zero logical teardown records and 40 exact injected frame/context observations. Their corpora and 55 source/script hashes match final main. Offline acceptance has 416 program comparisons, 42 acceptance groups and 90 Stop/Restart cycles. The eight prior composed resource baselines remain unchanged. Both demonstration consoles build. No dependency, host capability, release, publication or deployment change is included.
This parent remains open / In Progress. The finite construction/type/metaclass batch is delivered below; builtin instance layouts and additional metaclass protocols retain their own slices. Custom attribute hooks, ordering, dir/vars/globals/locals/id, bound-method/slice hashing and dynamic exec/eval/compile/import remain unfinished. User-valued power modulus, matrix multiplication and ordinary list/tuple/text repetition also retain explicit boundaries; the existing bytes and list in-place repetition forms use adopted index hooks. Broader exception/annotation/library/package milestones remain separate.
Construction and type protocols delivered — 2026-10-26
Six focused squash merges (#252, #253, #254, #255, #256, #258) deliver #247–251 and the focused #257 correction. All six issues are closed and their Project items are Done.
The finite O3/O4/O5 contract adopts inherited/descriptor-valued new, conditional initialization using the returned instance's actual type, explicit/zero-argument super, lexical class cells, canonical adopted types and tuple type relations. Type-derived metaclasses support selection/conflicts, new/init/call, descriptor precedence and ordinary dictionary namespaces. Required advertised class lookups refuse before hook effects; real type identity and successful actual-type checks remain valid.
Final main is 2c50f2413d1504df0dce05bfc498682aa56c7cd3; all five final-main CI jobs pass. All 387 Node tests pass. The 118-case matrix (106 adopted comparisons/12 refusals) passes across Node/Chromium drain/step: 472 observations and 456 measured zero logical teardown records. Retained reports match final source/corpus/script hashes and the engine fingerprint. Offline acceptance passes 488 program comparisons and 45 groups with 98 Stop/Restart cycles. Eight existing composed resource observations are unchanged.
The construction console builds on final main; its payload record verifies all 38 files and receipt hashes (593,610 bytes). A fresh rebuild matches exactly. This is a construction example payload, not a performance comparison. Reviewed child trees and focused patches were preserved after every actual parent squash and fresh CI; completed branches were removed after checking for open dependents.
#123 and #33 remain open / In Progress. Broader dir/vars/globals/locals/id, custom attribute/advertised-class hooks, ordering, builtin instance layouts, additional metaclass preparation/mapping/special-slot protocols, bound-method/slice hashing and dynamic source admission remain separate finite follow-ups. Async #34 remains Ready for cooperative scheduling, parked ownership, persistent callbacks/events and an adopted awaited capability. No dependency, host authority, publication or deployment change accompanies this batch.
Instance attribute protocols delivered — 2026-10-27
Five focused squash merges (#264–268) deliver #259–263. Main is 2b2414db0523541bf748e7cf3790e42435b61c66, clean and synchronized locally; its tree exactly matches the final accepted PR. All five PRs passed their fresh checks after dependency-order reconciliation, preserving every reviewed child tree and focused patch without rewriting shared history. All five final-main CI jobs pass. Their retained protocol/offline reports match the final source, corpus, driver and engine hashes and zero logical teardown.
The O6/O7/O8 contract adopts actual-type-selected getattribute/getattr, setattr/delattr, native object defaults, and advertised class reads/checks. Descriptor binding, original fallback snapshots, AttributeError-only recovery, tuple error/short-circuit order, super fallback and real-type priority use owned frames and continuations. Deferred metaclass hooks refuse before class-body effects. Core admission, lexical class cells and implicit special lookup retain their existing boundaries.
Validation: 481 Node tests and 13 focused Python tests pass. The 92-case matrix passes all four Node/Chromium drain/step combinations: 368 observations and 352 measured zero logical teardown records. The installed offline console passes 551 program comparisons and 47 acceptance groups with 105 Stop/Restart cycles. Source/corpus/driver hashes and engine receipts match; eight prior composed resource observations are unchanged. All 38 files in the 604,860-byte attribute console payload match a fresh rebuild. No performance or package claim follows.
#123 and #33 remain open / In Progress for namespace/identity reflection (dir/vars/globals/locals/id), ordering, builtin layouts, further metaclass construction/checking hooks, bound-method/slice hashing and dynamic source admission. Async #34 remains Ready for its separate cooperative scheduling, parked ownership, persistent callbacks/events and adopted awaited-capability contract. No dependency, host grant, release, publication or deployment change accompanies this batch.
Custom type checking delivered — 2026-10-27
Five focused squash merges (#273–276 and #278) deliver #269–272 and the focused #277 callable-reflection correction. All five child issues are closed and their Project items are Done. Final main is 1725cb0709414a0c7650b5be03bb85fad8ffa369; all five final-main CI jobs pass. Every reviewed child tree and focused patch was preserved after the actual parent squash and fresh checks, without rewriting shared history. Completed branches were removed only after their immediate dependents were reconciled and accepted.
The O9/O10/O11 contract adopts metaclass and ordinary checker instancecheck/subclasscheck, descriptor binding, truth conversion, exact-type instance bypass, callback-before-subclass-validation, tuple error/short-circuit order and native type defaults. The native checking helpers have canonical unbound/bound callable identities and metadata, owned receiver lifetimes, no Python-method func and a TypeError construction boundary. Broader descriptor APIs are not implied.
Validation: 575 Node tests; 86-case Node/Chromium drain/step matrix with 83 adopted comparisons and three explicit refusals per combination, totaling 344 observations and 336 measured zero logical teardown records. Retained reports verify all 55 source/driver hashes and the corpus hash. Collection, cancellation, close, source frames, temporary owners and real recursion/work/instruction/allocation failures are covered; the eight composed resource observations are unchanged. Installed-wheel offline acceptance passes 607 program comparisons, 50 groups and 111 Stop/Restart cycles. Isolated wheel/source-distribution checks pass. The updated 38-file payload record verifies the 610,170-byte example, receipt hashes and an identical fresh rebuild.
#123 and #33 remain open / In Progress for namespace/identity reflection (dir/vars/globals/locals/id), ordering, builtin layouts, further metaclass construction/attribute protocols, bound-method/slice hashing and dynamic source admission. Async #34 remains Ready for cooperative scheduling, parked ownership, persistent callbacks/events and an adopted awaited capability. No dependency, host grant, release, publication or deployment change accompanies this batch.
Rich ordering delivered — 2026-10-27
Five focused squash merges (#284–288) deliver #279–283. All five child issues are closed and their Project items are Done. Final main is c31b590d6b86ee499bc6448c556e2b4ee61c1ce5; all five final-main CI jobs pass. Each reviewed child tree and focused patch was preserved after the actual parent squash and fresh checks. Completed branches were removed after every immediate dependent was reconciled and accepted.
- INT-OBJECT-01S: Specify finite rich ordering and slice comparison #279 — finite O12/O13/O14 contract and pinned reference matrix.
- INT-OBJECT-01T: Execute owned rich ordering methods #280 — owned lt/le/gt/ge, reflected subtype priority, descriptor binding, raw results and NotImplemented fallback.
- INT-OBJECT-01U: Execute owned list and tuple ordering #281 — owned list/tuple lexicographic ordering with identity/equality scans, truth conversion and callback-visible replacement, deletion and growth.
- INT-OBJECT-01V: Execute owned slice comparisons #282 — equality/inequality/ordering over raw slice fields, nested slices, reflected peers, membership and callable sentinels.
- INT-OBJECT-01W: Validate ordering in the offline console #283 — offline console acceptance, compatibility inventory and exact example payload evidence.
The finite ordering contract retains explicit core/class admission and metaclass, user-key set ordering, hashing and broader descriptor boundaries. Missing ordering fallback raises TypeError; equality does not supply a default order. Callback binding/body/truth failures retain source frames, shared budgets and owned cleanup.
Validation: 693 Node tests; 60 Python tests with one optional runtime skip locally; 112 ordering cases (109 comparisons/three refusals) through Node/Chromium drain/step plus shared core cases, totaling 456 passing observations and 456 measured zero logical teardown records. The retained 108 source reports match all source/driver hashes; their 54 Node/browser pairs agree on 4,152 case observations. Eight composed resource observations remain unchanged. Installed-wheel offline acceptance passes 696 program comparisons and 53 groups with 117 Stop/Restart cycles. Wheel/source allowlists and isolated default/compiled installations pass.
The ordered-note example composes raw ordering results, truth, slice insertion, prefix/slice comparisons and generators. Its payload record verifies all 38 files and receipt hashes at 612,319 bytes, with an identical fresh rebuild. This is payload evidence, not a performance comparison.
#123 and #33 remain open / In Progress for namespace/identity reflection (dir/vars/globals/locals/id), builtin layouts, further metaclass protocols, bound-method/slice hashing and dynamic source admission. Broader ordering consumers and user-key set ordering retain their separate finite slices. Async #34 remains open / Ready for cooperative scheduling, parked ownership, persistent callbacks/events and an adopted awaited capability. No dependency, host grant, release, publication or deployment change accompanies this batch.
Method/slice hashing and scheduling checkpoint — 2026-10-27
The finite hash contract adopts ordinary Python and finite native bound methods, raw slice fields and callback-bearing tuple hashes. Receiver/function identity bypasses receiver hash hooks; slice fields run in start/stop/step order through owned callbacks, with errors, dictionary behavior and shared budgets preserved.
#123 and #33 remain open / In Progress for namespace/identity reflection (dir/vars/globals/locals/id), builtin layouts, further metaclass/descriptor protocols and dynamic source admission. Broader set/sequence consumers retain their own finite slices. Async execution/persistence progress is recorded in #34; native coroutine/await and host adapters remain open.
Five focused squash merges (#294–#298) complete #289–#293. All five child issues are closed and their Project items are Done. Each reviewed child tree and focused diff was preserved after its actual parent squash and fresh passing checks; no shared history was rewritten. Final main is ae141567bccfe230211b4d2f58afd9317f033a74, clean and synchronized locally, and exactly matches the last accepted PR tree. Completed branches were removed after dependent acceptance.
Validation: 782 Node tests; all eight existing composed resource baselines unchanged; 122 compatibility probes; 300 current Node/Chromium hash/parked-execution/callback observations with 300 measured zero logical teardown records and verified input hashes. Installed offline class acceptance has 728 program comparisons, 54 groups and 117 Stop/Restart cycles. Source-console acceptance has 18 checks, including executing-loop cancellation/recovery and persistent event state, cancellation, stale handles and fresh generations. Final wheel/source allowlists and four isolated default/compiled installations pass. The counter payload record verifies all 38 files at 629,464 bytes and an identical rebuild. No performance, device or package compatibility claim follows.
Final-main verification: all five CI jobs pass at ae141567bccfe230211b4d2f58afd9317f033a74. No dependency, host grant, release, publication or deployment change accompanies this batch.
Finite identity and namespace reflection delivered — 2026-10-27
Six focused squash merges (#304, #305, #306, #310, #307 and #308) complete #299–303 and the focused #309 ordering correction. All six issues are closed and their Project items are Done. Each reviewed child tree and focused patch was preserved against its actual parent squash and fresh passing checks, without rewriting shared history. Completed branches were removed after dependent acceptance.
The O15–O17 contract adopts stable owned object IDs, fresh optimized-function locals/vars snapshots, sorted local names, custom instance dict reads and actual-type/metaclass dir. Descriptor, call and iteration phases retain ordinary owned frames. Namespace order follows parameter/cell/free and operand/control-flow rules, including defaults, assignment expressions and try/else. Existing cell allocation/root order and all eight composed resource observations remain unchanged.
Final main is d739ce33e3c4659519c45cd53169947c33c58f1b, clean and synchronized locally; all five final-main CI jobs pass. Validation includes 876 Node tests, a 98-case Node/Chromium drain/step matrix (82 adopted comparisons and sixteen refusals), 392 passing observations with 392 measured zero logical teardown records, and 125 compatibility probes. All 58 source/driver hashes and corpus hashes match. Installed-wheel offline acceptance passes 795 program comparisons, 57 groups and 122 Stop/Restart cycles. The Python suite, wheel/source allowlists and four isolated installations pass, with one optional runtime skip locally.
The 38-file payload record verifies the 638,936-byte reflection example. A fresh final-main assembly matches every file and receipt hash. No performance or broader package claim follows.
#123 and #33 remain open for live globals/module/class mappings, ordinary instance dictionaries and mapping proxies, default directories, namespace reflection around inlined comprehensions, unboxed integer identity, builtin layouts, further metaclass protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Directory copying and generator-expression namespaces delivered — 2026-10-27
Five focused squash merges (#316–320) complete #311–315. All five issues are closed and their Project items are Done. Each reviewed tree and focused patch was preserved after the actual parent squash and fresh passing checks, without rewriting shared history. Completed branches were removed after every dependent was accepted.
The O18–O20 contract adopts fresh generator-expression locals/vars snapshots and directory names, including the acquired iterator under .0, bound targets and captured cells. Custom user-iterable directory copies acquire iteration before length/hint callbacks, preserve descriptor-versus-call TypeError recovery and distinguish signed-size conversion order. Stable owned less-than/truth sorting retains raw entry identities and the original iterable. Source profiles and host grants remain unchanged.
Main is 5c435055b53cd05a97b0e4e640bfd9620addd7a0, clean and synchronized locally; all five final-main CI jobs pass. Validation: 952 Node tests; 164 reflection cases (151 adopted comparisons/thirteen refusals) through Node/Chromium drain/step, totaling 656 passing observations and 656 measured zero logical teardown records. All 58 source/driver hashes match; 128 compatibility probes pass on both targets. Retained final-main artifacts contain 167 reports with 7,366 recorded input hashes verified against the owning sources and corpora. Installed-wheel offline acceptance passes 845 program comparisons, 58 groups and 130 Stop/Restart cycles. The 60-test Python suite, archive allowlists and four isolated installations pass, with one optional runtime skip locally. Eight composed resource baselines remain unchanged.
The updated payload record verifies all 38 files and 37 receipt members at 645,931 bytes; a fresh rebuild is identical. This is payload evidence, without a performance or package claim.
#123 and #33 remain open / In Progress for live globals/module/class mappings, ordinary instance dictionaries and mapping proxies, default directories, inlined-comprehension namespaces, unboxed integer identity, builtin layouts, further metaclass protocols and dynamic source admission. Cooperative scheduling, parked ownership and persistent callbacks/events remain delivered; native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Inlined comprehension namespace reflection delivered — 2026-10-27
Five focused squash merges (#325, #326, #327, #328 and #330) complete #321–324 and the focused #329 admission correction. All five issues are closed and their Project items are Done. Each reviewed child tree and focused patch was preserved after its actual parent squash and fresh passing checks. Completed branches were removed after checking for open dependents; shared history was not rewritten.
The O21/O22 contract adopts fresh locals/vars snapshots and sorted zero-argument directories inside list/dict/set comprehensions. Optimized scopes expose enclosing bindings; module/class comprehensions expose isolated namespaces. Nested target masking, captured-cell ordering, aliases, escaped values and success/error restoration retain owned execution. Deferred bindings in lambda defaults now refuse before application effects while ordinary lambda bodies and computed defaults retain their existing scope.
Final main is bb5ff0aaa03545f6ef281c84d6bd5d97bbd4f45d, clean and synchronized locally, and exactly matches the final accepted tree. All five final-main CI jobs pass. Validation: 1,069 Node tests; 275 reflection cases (261 adopted comparisons/fourteen refusals) in Node/Chromium drain/step, totaling 1,100 observations and 1,096 measured zero logical teardown records; four observations reject source before execution. The ordinary-syntax matrices pass 104 class and 81 core cases on both targets, including six deferred lambda-default forms. All 132 compatibility probes pass per target. The 60-test Python suite passes with one optional runtime skip; archive allowlists and four isolated installations pass. Eight composed resource baselines remain unchanged.
The retained final-main artifacts contain 167 reports with 7,366 input hashes and 166 corpus digests verified against owning sources, plus 10,314 zero closed-state entries. Installed-wheel offline acceptance passes 950 program comparisons, 60 acceptance groups and 132 Stop/Restart cycles. The updated payload record verifies all 38 files and 37 receipt members at 653,280 bytes, with an identical fresh rebuild. This is payload evidence, without a performance, device or package claim.
#123 and #33 remain open / In Progress for live globals/module/class mappings, ordinary instance dictionaries and mapping proxies, default directories, unboxed integer identity, builtin layouts, further metaclass protocols and dynamic source admission. Broader comprehension assignment-expression adoption remains under #120/#123. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Ordinary sequence repetition delivered — 2026-10-27
Five feature PRs (#336, #337, #338, #339 and #342) complete #331–335. The focused #341 correction completes #340 and was squash-merged into #337 before that feature reached main. All six child issues are closed and their Project items are Done.
The finite R1–R3 contract adopts shallow list/tuple repetition and Unicode text multiplication with primitive factors in both source profiles. Class-profile index callbacks run after numeric/reflected candidates, preserve descriptor binding and owned operands, and copy the list after callback-visible mutation. Signed-size overflow, empty/negative counts, immutable identity reuse and bounded growth have pinned CPython 3.14.7 cases. Legacy bytecode 2/3 refusal, native descriptor lookup, existing bytes and in-place list quotas, builtin subclasses and bytearray resizing retain their declared boundaries.
Final main is d78bbc5f958b0646a417a2733ceb4724445fb83d, clean and synchronized locally, with the exact final accepted tree. All five final-main CI jobs pass. Each dependent tree and focused patch was preserved after the actual parent squash and fresh checks, without rewriting shared history. Completed branches were removed after dependent acceptance; no open PR remains.
Validation: 1,274 Node tests; the 60-test Python suite with one optional runtime skip locally; 784 Node/Chromium drain/step and shared-core observations with 784 measured zero logical teardown records; 135 compatibility probes per target; and legacy bytecode 2/3 conformance on both targets. All eight composed resource observations are unchanged. Installed-wheel offline acceptance passes 1,031 program comparisons, 63 groups and 138 Stop/Restart cycles. Archive allowlists and four isolated default/compiled installations pass. Final-main verification checks 580 retained input-hash entries, current corpora, offline script identity and the exact payload.
The repetition example and payload record verify all 38 files and 37 receipt members at 652,764 bytes, with an identical rebuild. This is finite source/payload evidence, without a performance, device or package claim.
#123 remains open / In Progress for live namespace mappings, ordinary instance dictionaries and mapping proxies, default directories, unboxed integer identity, builtin layouts, further metaclass protocols and dynamic source admission. Broader sequence consumers retain their separate slices. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Subclass initialization and class keywords delivered — 2026-10-27
Five focused PRs (#347, #348, #349, #350 and the focused #352 correction) complete #343–346 and #351. The correction was squash-merged into the acceptance branch before that feature reached main. All five issues are closed and their Project items are Done.
The finite O23/O24 contract adopts inherited init_subclass after class-cell setup and descriptor notifications, C3/super and descriptor binding, automatic definition-time classmethod wrapping, native method identity/metadata and explicit named class keyword forwarding through type/metaclass construction. Ordinary classmethod targets, including None, retain self/func reflection. Late mutation, ignored results, metaclass keyword consumption, source diagnostics and shared quotas use the common owned execution machine. Expanded class bases/keyword mappings, custom preparation and callable metaclass factories retain their separate boundaries.
Final main is 7abaf9cd4b86846f364552a5cc835fc9973e392b, clean and synchronized locally, with the exact final accepted tree. All five final-main CI jobs pass. Each dependent tree and focused patch was preserved against its actual parent squash and fresh checks, without rewriting shared history. Completed branches were removed after dependent acceptance; no open PR remains from this batch.
Validation: 1,342 Node tests; the 60-test Python suite with one optional runtime skip locally and its localhost HTTP test separately rechecked with socket access; 256 Node/Chromium drain/step observations with 240 measured zero logical teardown records; and 138 compatibility probes per target. All eight composed resource observations are unchanged. Installed-wheel offline acceptance passes 1,080 program comparisons, 66 groups and 140 Stop/Restart cycles. Archive allowlists and four isolated default/compiled installations pass. Final-main retained reports verify 348 input hashes, current corpus/inventory digests, offline script identity and engine fingerprint.
The class registration console and its payload record verify all 38 files and 37 receipt members at 657,524 bytes, including an identical fresh main rebuild. These are finite source/payload observations, without a performance, device or package compatibility claim.
#123 and #33 remain open / In Progress for live namespace mappings, ordinary instance dictionaries and mapping proxies, default directories, unboxed integer identity, builtin layouts, further metaclass/descriptor protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Metaclass attribute protocols delivered
Five focused squash merges (#357, #358, #359, #361 and #362) complete #353–356 and the focused #360 correction. All five issues are closed and their Project items are Done.
The finite O25/O26 contract adopts actual-metaclass getattribute/getattr and setattr/delattr, owned descriptor binding, original AttributeError fallback snapshots, native type attribute defaults, reflected wrapper identities and metadata precedence. Class MRO values retain priority when a metaclass hides the native name descriptor. Real-type checks and implicit special lookup retain their priority. Binding/body failures, collection, cancellation and shared budgets use ordinary owned execution.
Final main is be6c5712c250d98cd142c34c96430d5be2151ddc, clean and synchronized locally, with the exact final accepted tree. All five final-main CI jobs pass. Each reviewed child tree and focused patch was preserved after its actual parent squash, retargeting and fresh passing checks, without rewriting shared history.
Validation: 1,448 Node tests; the 60-test Python suite with one explicit optional WASM fixture skip locally; 102 pinned cases through Node/Chromium drain, step and parked execution, totaling 612 observations and 600 measured zero logical teardown records; and 144 compatibility probes per target. All eight composed resource observations are unchanged. Installed-wheel offline acceptance passes 1,146 program comparisons, 69 groups and 146 Stop/Restart cycles. Archive allowlists and four isolated default/compiled installations pass. Final-main verification checks 464 retained input hashes, current corpus/inventory digests, offline script identity, engine fingerprint and three focused smoke cases.
The class metadata example and its payload record verify all 38 files and 37 receipt members at 660,355 bytes, including an identical rebuild. These are finite semantic/source/payload observations, without a performance, device or package compatibility claim.
#123 and #33 remain open / In Progress for live namespace mappings, ordinary instance dictionaries and mapping proxies, default directories, unboxed integer identity, builtin layouts, further metaclass/descriptor protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Nested descriptor hooks delivered — 2026-10-28
Five focused PRs (#363, #364, #365, #367 and #366) deliver the finite O27/O28 contract. The report-retention correction #367 was accepted into the acceptance branch before it reached main.
- O27: property/custom-descriptor-valued set and delete bind on the descriptor's actual type, then invoke with the original target/value. Native object/type helpers and attribute builtins preserve ignored results and original failures.
- O28: property/custom-descriptor-valued set_name preserves original names, notification snapshots, class cells and subclass/decorator ordering. Binding AttributeError propagates and failed construction retains the old binding.
- Offline source acceptance, Stop/Restart in binding/body phases, reduced-profile updates, compatibility probes and retained parked/reference reports.
Final main is 4effa703686960f5e30821708ecc3f301919adbf, clean and synchronized locally, with the exact final accepted tree. All five final-main CI jobs pass. Completed branches are removed.
Validation: 1,504 Node tests and the 60-test Python suite; 42 pinned CPython 3.14.7 cases in Node/Chromium drain, step and parked execution, totaling 252 observations and 246 measured zero logical teardown records; and 150 compatibility probes per target. All eight composed resource observations remain unchanged. Isolated built-wheel offline acceptance passes 1,170 program comparisons, 72 groups and 152 Stop/Restart cycles. Archive allowlists and four isolated default/compiled installs pass. The retained final-main nested-descriptor, compatibility and offline reports verify 464 input hashes, current corpus/inventory/script digests and the engine fingerprint.
The field-hook console and its payload record verify all 38 files and 37 receipt members at 661,205 bytes, including an identical final-main rebuild. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, default directories, builtin layouts, further metaclass/descriptor reflection and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Native descriptor operations delivered — 2026-10-28
Five focused squash merges (#372, #373, #374, #376 and #377) complete #368–371 and the focused #375 correction. All five child issues are closed and their Project items are Done. Each reviewed child tree and focused patch was preserved after its actual parent squash, retargeting and fresh passing checks, without rewriting shared history. Completed branches are removed.
The finite O29/O30 contract adopts explicit bound/unbound property get/set/delete and static/class method binding. Native receiver/positional validation, None/owner rules, ignored mutation results, wrapped-value identity and owned callback/receiver lifetimes match CPython 3.14.7. Class methods wrapping native callables retain Python method identity, callable metadata and equality distinctions from native method-wrapper values.
Final main is c5e24bf771757a4f22ba03d8327607e4cd0fc7dd, clean and synchronized locally, with the exact final accepted tree. All five final-main CI jobs pass.
Validation: 1,598 Node tests; the 60-test Python suite with one optional runtime fixture skip locally; 86 pinned cases through Node/Chromium drain, step and parked execution, totaling 516 observations and 516 measured zero logical teardown records; and 160 compatibility probes per target. All eight composed resource observations are unchanged. Installed-wheel offline acceptance passes 1,221 program comparisons, 75 groups and 155 Stop/Restart cycles. Archive allowlists and four isolated default/compiled installations pass. Final-main retained reports verify 464 input hashes, current corpus/inventory/script digests and the engine fingerprint.
The descriptor console and its payload record verify all 38 files and 37 receipt members at 665,505 bytes, including an identical fresh main rebuild. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, instance dictionaries/mapping proxies, default directories, unboxed integer identity, builtin layouts, further metaclass/descriptor reflection and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Accessor copies and explicit function binding delivered — 2026-10-28
Five focused squash merges (#390, #391, #392, #393 and #395) complete #386–389 and the focused #394 correction. All five child issues are closed and their Project items are Done.
The finite O31/O32 contract adopts native property getter/setter/deleter copies, None accessor retention, native callable metadata and explicit Python function binding with original receiver/function ownership, ignored owners and lazy invocation. Documentation-sensitive getter copies refuse before deferred read-hook effects. Core and legacy profile boundaries remain explicit.
Final main is 9b113c1aa87caa05c2acb2f2cd1fe98a1ae4eec9, clean and synchronized locally, with the exact final accepted tree. All 14 final regression jobs and the final-main smoke run pass. Dependency reconciliation preserved each tested tree and focused diff without rewriting shared history; the PR descriptions retain the passing evidence used under the current validation policy.
Validation: 81 pinned CPython 3.14.7 cases in Node/Chromium drain, step and parked execution, totaling 486 observations and 486 zero logical teardown records; 170 compatibility probes per target; unchanged eight composed resource observations; and VM2/VM3 conformance. An isolated installed wheel passes 1,265 offline program comparisons, 79 acceptance groups and 160 Stop/Restart cycles. Retained corpus/inventory/script digests and the offline engine fingerprint match final main. The binding example builds a 38-file, 668,387-byte payload. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, instance dictionaries/mapping proxies, default directories, integer identity, builtin layouts, further descriptor/metaclass reflection and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Explicit native descriptor rebinding delivered — 2026-10-28
Four focused squash merges (#400, #401, #402 and #403) complete #396–399. All four child issues are closed and their Project items are Done. Dependency-order reconciliation preserved each tested tree and focused main diff without rewriting shared history. Completed branches are removed.
The finite O33/O34 contract adopts explicit bound/unbound method_descriptor.get and wrapper_descriptor.get over the existing native method/wrapper allowlist. Actual native receiver layouts, None/ignored-owner rules, native callable identity/metadata, recursive binding handles and deferred callbacks use owned receiver lifetimes. Binding bypasses advertised-class/read/checking hooks; invocation retains original frames and shared budgets. Core and legacy profile boundaries remain explicit.
Final main is 64ba75f9f28887cfd2cc481804fb33ea0dfc87ef, clean and synchronized locally, with the exact accepted final tree. All 14 regression jobs pass in the acceptance run; the final-main smoke run also passes. PR descriptions retain successful method/wrapper runs and evidence reused for history-only reconciliation under the validation policy.
Validation: 96 pinned CPython 3.14.7 cases (94 adopted comparisons/two refusals) through Node/Chromium drain, instruction-boundary and parked execution, totaling 576 observations with zero logical teardown; 179 compatibility probes per target; passing full Node coverage with all eight composed resource observations unchanged; and cross-platform Python/package regression coverage. Isolated installed-wheel offline acceptance passes 1,314 program comparisons, 82 groups and 163 Stop/Restart cycles. Final-main verification checks 464 retained input hashes, current corpus/inventory/offline identities, the engine fingerprint and every example payload file.
The descriptor console composes rebound accessor copies, native type checks, closures and lazy generators. Its payload record verifies 38 files and 671,693 bytes, with an identical independent rebuild. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, instance dictionaries/mapping proxies, default directories, integer identity, builtin layouts, broader descriptor/metaclass reflection and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Native type hierarchy reflection delivered — 2026-10-28
Five focused squash merges (#404, #405, #406, #407 and #408) deliver the finite O35/O36 contract.
- Native method/wrapper descriptors and bound slot wrappers expose canonical declaring-type metadata through objclass. Native bound methods retain AttributeError; direct and builtin mutation preserve read-only errors, prior output and source frames.
- Native type.mro() and bound/rebound forms return independent lists of actual C3 type identities. Primary-base reflection follows the adopted ordinary/type-derived storage layout. Metaclass reads, detached handles and returned hierarchies retain owned lifetimes.
- Custom metaclass MRO construction and native method qualification requiring custom read hooks remain explicit refusals. Validation now rejects explicit stage filters that omit any adopted corpus stage.
Final main is 8cda717778225ee7f4027b36fcd822ca439356be, clean and synchronized locally. All 14 acceptance regression jobs pass, as does the final-main smoke run. PR descriptions retain passing implementation runs and the focused checks used during dependency-order reconciliation. Shared history was preserved.
Validation: 87 pinned CPython 3.14.7 cases (82 adopted comparisons/five refusals) through Node/Chromium drain, instruction-boundary and parked execution, totaling 522 observations with zero logical teardown; 189 compatibility probes per target; 89 focused Node tests and 140 adjacent class/construction/descriptor/execution tests; and ten focused Python tests including the validation guard. The eight composed resource observations are unchanged. Isolated installed-wheel offline acceptance passes 1,362 program comparisons, 85 groups and 165 Stop/Restart cycles. Retained evidence verifies 464 input hashes, corpus/inventory/script identities and the engine fingerprint.
The hierarchy console composes type inspection, properties, detached native methods and lazy iteration. Its payload record verifies 38 files and 675,436 bytes. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, default directories, builtin layouts, broader descriptor/metaclass protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Property names and native notification delivered — 2026-10-28
Four focused squash merges (#409, #410, #411 and #412) deliver the finite O37/O38 contract.
Property names retain arbitrary adopted values, lazy owned getter-name lookup, deletion semantics and independent accessor copies. Native bound/unbound/rebound property.set_name preserves receiver validation, exact name identities and native callable metadata. Automatic notifications preserve namespace snapshots, aliases, inheritance and subclass/decorator timing. Callback-bearing missing-accessor diagnostics retain explicit refusals before their deferred effects.
Final main is 84660fe850764d12672f6e730c784a056ba0d27a, clean and synchronized locally. All 14 acceptance regression jobs and the final-main smoke pass. Dependency-order reconciliation retained passing implementation coverage without rewriting shared history. Focused checks ran after conflicts; review corrected an older stage filter that Git had reintroduced. Completed branches are removed, and no PRs remain open.
Validation: 1,946 Node unit tests; 68 pinned CPython 3.14.7 cases through six Node/Chromium driver combinations, totaling 408 observations with zero logical teardown; 200 compatibility probes per target; and ten affected Python tests. Isolated installed-wheel offline acceptance passes 1,411 program comparisons, 88 groups and 167 Stop/Restart cycles. The explicit execution-accounting/2 revision retains the original eight resource observations: four property-bearing cases gain a 104-byte name edge and ordinary mutation work charges; instructions/allocation counts and the other four cases remain unchanged.
The property console composes copies, detached native notification and lazy generators. Its payload record verifies 38 files and 678,706 bytes. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, default directories, builtin layouts, property documentation, broader descriptor/metaclass protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Descriptor abstract flags delivered — 2026-10-28
Five focused squash merges (#413, #414, #415, #416 and #417) deliver the finite O39/O40 contract.
Python functions retain arbitrary owned isabstractmethod markers. Properties inspect getter/setter/deleter markers in order; static/class method wrappers inspect their current wrapped marker. Computed flags are read-only. Optional lookup and truth conversion preserve lookup-only AttributeError suppression, live changes, callback order, original source frames and parked lifetimes. Bound methods wrapping custom callables retain ordinary read/fallback hooks. Abstract class enforcement, abc, arbitrary function dictionaries and further metadata remain separate contracts.
Final main is f908ca15b5c4c1418cba34cb58be519e7a5e96c4, clean and synchronized locally. All 14 final batch regression jobs and the final-main smoke run pass. Dependency-order reconciliation retained the reviewed child changes and reran affected checks after conflicts. Passing descendant coverage was reused under the validation policy; shared history was preserved. All five PR Project items are Done, completed branches are removed, and no PRs remain open.
Validation: 108 pinned CPython 3.14.7 cases (104 adopted comparisons/four refusals) through six Node/Chromium driver combinations, totaling 648 passing observations with zero logical teardown; 212 compatibility probes per target; 112 feature unit tests; twelve affected Python tests; and eight unchanged composed resource observations. Isolated installed-wheel offline acceptance passes 1,489 program comparisons, 91 acceptance groups and 171 Stop/Restart cycles. The example payload record verifies 38 files and 683,662 bytes. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, default directories, builtin layouts, property documentation, broader descriptor/metaclass protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Function and property documentation delivered — 2026-10-28
Five focused squash merges (#418, #419, #420, #421 and #422) deliver the finite O41/O42 contract.
Function/class source docstrings follow pinned CPython 3.14.7 indentation and tab cleanup. Functions retain arbitrary owned documentation; bound methods expose live read-only values. Properties perform eager optional getter lookup and preserve exact documents through mutation, deletion and origin-sensitive accessor copies. Lookup-only AttributeError suppression, selected-operand snapshots and post-callback notification names retain owned frames, budgets and parked lifetimes. Native/wrapper documentation and copies from unqualified native origins retain explicit boundaries.
Final main is af72e8b75ae0c31c3115297af885fc7b8b6c7951, clean and synchronized locally. All 14 batch regression jobs and the final-main smoke pass. Reconciliation retained the reviewed child changes and reran affected checks after overlap resolution. Successful descendant coverage was reused under the validation policy; shared history was preserved. All five PR Project items are Done, completed branches are removed, and no PRs remain open.
Validation: 117 pinned cases (111 adopted comparisons/six explicit refusals) through six Node/Chromium drivers, totaling 702 observations and 696 measured zero logical teardowns; six pre-execution refusals create no execution owner. All 119 feature units, 480 adjacent descriptor/execution units, 20 adjacent source/class units and 22 affected Python tests pass. There are 228 compatibility probes per target, and the eight composed resource observations remain unchanged. Installed-wheel offline acceptance passes 1,587 program comparisons, 93 groups and 173 Stop/Restart cycles. Retained evidence verifies 348 runtime/driver hashes, corpus/script identities and the engine fingerprint.
The documentation console composes source documents, native copies, callback-visible names and lazy generators. Its payload record verifies 38 files and 691,188 bytes. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, default directories, builtin layouts, native/wrapper documentation, broader descriptor/metaclass protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Function identity metadata delivered — 2026-10-28
Four focused squash merges (#423, #424, #425 and #426) deliver the finite O43/O44 contract.
Python functions retain exact assigned names/qualifications and definition-time module snapshots. Name mutation validates strings without coercion; arbitrary module values retain owned identities and deletion resets them to None. Renaming preserves code traceback names, closures, binding and persistent callback identity. Bound methods use owned callable lookup for live metadata, including custom descriptor/read/fallback hooks; direct native reads preserve their distinct AttributeError bypass behavior.
Final main is d881ad9a890f2fb544e1c3bf85337ece2d4ac266, clean and synchronized locally. All 14 acceptance regression jobs and the final-main smoke pass. Dependency-order reconciliation retained passing implementation coverage and reran affected checks after conflicts, without rewriting shared history. All four PR Project items are Done and completed branches are removed.
Validation: 86 pinned CPython 3.14.7 cases (83 adopted comparisons/three explicit refusals) through six Node/Chromium drivers, totaling 516 passing observations with zero logical teardown; 242 compatibility probes per target; 90 feature units, adjacent descriptor/execution/callback coverage and 22 affected Python tests. Installed-wheel offline acceptance passes 1,636 program comparisons, 95 groups and 176 Stop/Restart cycles. The explicit execution-accounting/3 extension records the eight revised module-edge observations alongside original and accounting/2 counters; instructions, allocations, collections and root/frame counts remain unchanged.
The metadata console composes retained methods, renamed property getters, custom metadata lookup and lazy generators. Its payload record verifies 38 files and 693,839 bytes, with an identical rebuild. These are finite semantic/source/payload observations.
#123 and #33 remain open / In Progress for live namespaces, default directories, builtin layouts, native/wrapper documentation, broader descriptor/metaclass protocols and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.
Activity
docs(INT-OBJECT-12A): specify native type reflection (#404)
feat(INT-OBJECT-12B): expose native descriptor owners (#405)
feat(INT-OBJECT-12C): expose native type hierarchies (#406)
fix(INT-OBJECT-12D): preserve owner mutation errors (#407)
test(INT-OBJECT-12E): accept type reflection offline (#408)
fix(INT-OBJECT-15D): normalize source docstring indentation (#421)
test(INT-OBJECT-15E): accept documentation protocols offline (#422)
ellainng commentedon Oct 29, 2026
Live function dictionaries delivered — 2026-10-28
Five focused squash merges (#431, #432, #433, #435, #436) deliver the finite O45/O46 contract. Child issues #427–430 and #434 are closed; all ten issue/PR Project items are Done. Completed branches are removed, with dependent reconciliation before parent removal and no shared-history rewrite.
Ordinary Python functions expose one lazy live dictionary for custom attributes, vars and abstract markers. Replacement retains exact dictionary identities and detaches old aliases. Bound methods expose current wrapped-callable attributes and dictionaries through owned lookup, preserving native bypass, data-field priority, errors and parked lifetimes. Explicit supplied names retain insertion/callback identity; equal replacements preserve the first key. The unequal-collision reference checks results without fixing CPython's randomized repeated-probe count.
Validation: 83 pinned CPython 3.14.7 cases (72 adopted comparisons / eleven explicit refusals) through six Node/Chromium drivers, totaling 498 passing observations and 498 zero logical teardowns; 265 compatibility probes per target; 611 adjacent units and 18 affected Python checks. Installed-wheel offline acceptance passes 1,699 program comparisons, 98 groups and 178 Stop/Restart cycles. Six supplemental offline-reload checks cover the final unequal-collision fixture and explicit names. The decorator console and payload record verify 38 files / 699,099 bytes and an identical rebuild. The accounting/4 extension documents lazy dictionary storage; the eight composed resource observations are unchanged.
Final main is
e401ffa58088fdc3357436e4eb7340d5f72811db, clean and synchronized locally. All 14 batch regression jobs and the final-main smoke pass; local engine/library locks and both source-profile startup smokes pass.#123 and #33 remain open / In Progress for ordinary instance/module/class live mappings, default directories, builtin layouts, broader native/wrapper metadata, code/default/annotation objects and dynamic source admission. Native coroutine/await, async protocols, awaited host adapters and durable view/save acceptance remain under open #34. No dependency, host grant, release, publication or deployment change accompanies this batch.