Skip to content

Register birthless identities through the existing declaration lifecycle - #2634

Merged
trissim merged 3 commits into
integration/backend-cli-rosters-mainfrom
next/birthless-declaration-registry
Oct 23, 2026
Merged

trissim merged 3 commits into
integration/backend-cli-rosters-mainfrom
next/birthless-declaration-registry

Conversation

@trissim

@trissim trissim commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

The private birth-marker hook registered abstract classes as decoders, then failed when a saved identity tried to instantiate one. BirthlessIncarnation now gives its existing WIRE_BIRTH declaration to AutoRegisterMeta; ThreadIncarnationRecord reads that library-owned registry. The private hook/map are deleted. No new metaclass, production class or marker roster.

Stacked continuation on #2635 (integration/backend-cli-rosters-main, head 534cb07ccb86af072f660f01290f90ed59c645ee). The original source checkpoint 067532a10492dffd97bd3060766a35d6a30feec2, implementation c921abad3 and their exact-head source review are preserved as ancestors. Normal merge head 8dd402e465234d27d4932e384cf236d4daaa9b17 brings in the coherent current-main/backend/CLI/bus/phase base without rewriting those commits.

The merge was clean, including the shared thread_identity.py file. #2623's backend default and this birth-marker registration change both survive. Relative to the coherent base, this remains exactly two changed files: src/agent_comms/thread_identity.py and tests/test_birthless_declarations.py. The four-head integration #2635 remains unchanged and excludes this slice.

External markers (-2/-1/0) and positive recorded births keep their existing wire/CLI owners. Core's watcher retains its class-owned decoding name. Unknown/nonfinite births still fail through recorded-identity validation. Concrete duplicate declarations now use the library's DuplicateRegistryKeyError instead of the private hook's TypeError; abstract declarations are excluded before registration or duplicate checking.

Final focused confirmation on the coherent base: 18 passed in 3.97s, including actual wire/CLI boundaries, concrete/abstract/duplicate declarations, saved identity/equality, isolated release-store consumers and fresh CLI/UI-model imports. git diff --check passes. The original accepted source checkpoint also had 18 passing checks; its initial failed watcher-name expectation and correction remain in the evidence.

Original NRA source/consumer inventories, the old-source crash reproduction and both check outputs are retained under /home/ts/.cache/agent-scratch/birthless-declaration-family. This continuation changes the base through a normal merge; it introduces no further implementation or audit surface.

The accepted review on original head 067532a10 is source acceptance. This PR does not claim installed acceptance. No installer, live-runtime, producer-freshness or typed_table.py work was added. Critical #2633 and the accepted four-slice delivery remain independent.

@trissim trissim left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accepted source checkpoint at 067532a. The private hook registered abstract decoder classes before ABC construction completed; BirthlessIncarnation now declares its existing WIRE_BIRTH key once to AutoRegisterMeta, whose actual lifecycle excludes abstract classes before duplicate checks/registration. ThreadIncarnationRecord reads that library-owned registry, and the private hook/map are deleted. I read the complete production/test diff, the original NRA consumer inventory (including ThreadProvenance and inherited ReleasedOwner boundary), the installed metaclass implementation, and the retained base-source crash. The existing -2/-1/0 markers and positive recorded births retain their owners, including CoreWatcher's class-owned decoding name; unknown/nonfinite values still fail at RecordedThreadIncarnation. New-case/declaration controls invoke real declarations without mutating the canonical registry. Owner's actual focused result is 18 passed in 3.95s; I inspected the assertions and output and did not rerun that batch. This is source acceptance for integration, not installation or remaining registry-phase closure. The shared thread_identity.py backend-default change in #2623 is disjoint and must survive integration. Critical route #2633/install does not wait on this side slice.

@trissim
trissim changed the base branch from integration/bus-current-main to integration/backend-cli-rosters-main October 23, 2026 06:01
@trissim
trissim merged commit 8dd402e into integration/backend-cli-rosters-main Oct 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant