Skip to content

Judge roster completion by internal declarations and preserve producer ABI - #2627

Closed
trissim wants to merge 3 commits into
mainfrom
next/phase-rosters
Closed

trissim wants to merge 3 commits into
mainfrom
next/phase-rosters

Conversation

@trissim

@trissim trissim commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Ordered prerequisite targeting main. Pushed head ab2d06a828e7075aefb5b94bd076549ddf6a0bcd normally merges current main 69c5b0e4e; accepted source head 98a2305f1 remains an ancestor. All three production/test files match that accepted source exactly. The sync had no conflicts. Focused roster/submodule controls and fresh package imports pass (5 cases, 6.02s).

Land this PR before #2622; that delivery must merge this prerequisite before landing because both own changes in the phase evidence family. Source acceptance remains distinct from installed qualification. Aggregate #2635 is preserved as a parked merge-resolution checkpoint.


7 lines removed; 78 added. RostersPhase ordered deletion of the independent Pi producer ABI manifest, matched its own grep declaration, and ignored five actual internal registries. This replaces that false requirement with the named internal declaration conditions.

Before/after ownership:

  • Keep PI_0_85_1_EVENT_KINDS and the independent producer/converter coverage checks unchanged.
  • Judge THREAD_CAPABILITIES and thread-serving flag declarations, plus Carry.declared, ThreadRename.kinds, BirthlessIncarnation.members, CliToolArguments.types and PiTurnPhase._start_phases/_end_events.
  • Extend the existing ClassFlagsAbsent evidence with optional class-name selection. An unrelated owner's members field and a function-local types variable do not become the old registry. Existing MainTree and Classes own committed-source reading and class traversal.
  • In a separate commit, make MainTree.grep explicitly stay within the parent repository's committed tree, matching MainTree.module/modules. Inherited submodule.recurse=true previously returned files under a gitlink, then parent git show failed because those blobs belonged to another repository.

The two reviewable commits are d3d5769 (roster conditions) and 98a2305 (committed-tree reader). Final head: 98a2305. Base: integration/bus-current-main at acb2ddd.

This screens the named registry findings. It does not certify all display-name, sigil, path or other plan 6.4 work. Class names are syntactic selectors rather than fully resolved identities; aliases, renamed registries and dynamic bindings remain source-review obligations. THREAD_CAPABILITIES uses anchored declaration matching rather than full Python binding analysis. No file exclusion was added. Dependency gitlinks intentionally remain separate repository trees outside MainTree's source scope.

NRA evidence preceded edits: ModuleSyntaxIndex retained every original ClassDef and the canonical inheritance projection over 929 Core production/test modules: 5,132 original classes, 4,942 projected, nine selected owner/evidence classes, zero parse omissions. Before/after roster source leads are retained, including unprojected syntax; class counts remain unchanged. The final MainTree follow-through records 50 declaration/consumer leads over the same 929-module corpus. Lexical leads are not behavioral or dynamic binding proofs. The ownership defect is MEMB-1/2 for internal rosters; independent producer ABI coverage is a separate external-contract obligation.

Validation:

PYTHONPATH=$PWD/src TMPDIR=/home/ts/.cache/agent-scratch timeout 60 /home/ts/code/projects/agent-comms/.venv/bin/python -m pytest -n 0 tests/test_phase_evidence.py tests/test_agent_backend.py::test_converter_family_must_cover_exactly_the_runtime_event_kinds tests/test_agent_backend.py::test_pi_event_family_matches_pi_0_85_1_when_imported_fresh -q --tb=short
# Initial roster repair: 10 passed, 2.21s

PYTHONPATH=$PWD/src TMPDIR=/home/ts/.cache/agent-scratch timeout 60 /home/ts/code/projects/agent-comms/.venv/bin/python -m pytest -n 0 tests/test_phase_evidence.py -q --tb=short
# After committed-tree reader repair: 9 passed, 0.88s

The committed-source controls include both actual evidence files, a preserved producer manifest, unrelated/local fields, and nine declaration forms; each remaining internal form independently holds the phase open. Existing converter tests check missing and extra kinds and fresh-import coverage of the Pi manifest. The reader control uses an actual submodule with recursive search enabled: recursive Git grep sees the dependency, while MainTree grep/module traversal consistently read only the parent tree.

Actual committed-tree replay via PlanReading/MainTree succeeds and correctly keeps RostersPhase open at base acb2ddd, candidate 98a2305, and accepted backend-cleanup commit 0d76980. At the backend cleanup commit, the capability roster and serving flags clear, while all five registry owners still fail their conditions. No main ref was rewritten. git diff --check acb2ddd..HEAD passes.

Evidence lives at /home/ts/.cache/agent-scratch/phase-rosters-{before,after,committed-source,tree-reader-source}.json and the corresponding check/failure text files. The first real-tree attempt's submodule failure is recorded; it was not claimed as a successful phase reading.

This repairs phase judgment, not the registries or installation. The backend owner retains tool_calls.py and the plan prose; broad 6.4 completion remains open. Accepted bus deletion remains published separately at 194957e in PR #2622.

@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. The previous gate demanded deletion of independent producer coverage, matched its own quotation and ignored the internal registries it purported to judge. This uses existing ClassFlagsAbsent with exact named-owner selection and anchored declarations; the preserved producer manifest no longer makes the gate fail. Each known remaining internal registry independently keeps it open. This remains a named-declaration screen, not a proof of all plan 6.4 work or dynamic Python identity. The separate MainTree fix gives grep the same committed-repository boundary as module/modules; recursive Git settings must not make it return submodule blobs the parent commit cannot read. I read the actual base/candidate/backend-cleanup committed-tree comparisons and independently replayed the preserved-manifest/remaining-registry controls plus real submodule/config control: 2 passed in 0.53s. No registry migration, installed behavior or broad phase closure is claimed.

@github-actions

Copy link
Copy Markdown

debt-tools at 6744498, every finding:

grew StringIdentity:src/agent_comms/plan_phases.py +5

@github-actions

Copy link
Copy Markdown

debt-src at 6744498, every finding:

grew StringIdentity:src/agent_comms/plan_phases.py +5
grew Unformatted:src/agent_comms/phase_evidence.py +1
grew Unformatted:src/agent_comms/plan_phases.py +1

@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.

Ordered landing checkpoint accepted at ab2d06a. Compared the previously source-accepted 98a2305 against this current-main sync: phase_evidence.py, plan_phases.py and tests/test_phase_evidence.py are byte-for-byte unchanged. The original bounded source verdict and focused controls therefore retain their stated scope; no duplicate test run was requested just for ancestry. This PR lands before #2622, which must incorporate it. No installed-runtime or complete roster-phase claim. Hosted checks retain their actual state; auto-merge is an enqueue request, not a merged claim.

@trissim
trissim marked this pull request as ready for review October 23, 2026 06:19
Copilot AI balanced review requested due to automatic review settings October 23, 2026 06:19
@trissim
trissim added this pull request to the merge queue Oct 23, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 23, 2026
@trissim
trissim added this pull request to the merge queue Oct 23, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 23, 2026
@trissim

trissim commented Oct 23, 2026

Copy link
Copy Markdown
Contributor Author

Closed by the commander: every commit is patch-equivalent to main (git cherry shows 0 unmerged); landed through #2635.

@trissim trissim closed this 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.

2 participants