Repository navigation
Lane B: interpreter roster R1 — invert dispatch authority from Rust to the .dag roster - #7624
Merged
Merged
Conversation
briansrls
marked this pull request as ready for review
August 1, 2026 20:46
briansrls
pushed a commit
that referenced
this pull request
Aug 2, 2026
Adds the closing contract v1-interpreter-primitive-roster never had, then accepts the node against it. The closing check is deliberately structural, not a population pin: named dispatch sites contribute derived rows, duplicate row keys refuse, shadows are exactly the known set by name, declared rows carry their own dissolution triggers, an arm with no semantic primitive identity stays representable, and an unrecognised form label refuses rather than defaulting. Binding it to counts would have recreated at the acceptance layer the defect #7615 removed from the witness layer -- the five deleted witnesses pinned live-population numbers copied from the tree, which DESIGN.md §5 rules is not an oracle, and they duly behaved as change detectors that redded main twice. One handback clause of the node was genuinely amended, not reworded: it demanded "witnesses asserting exact values rather than lower bounds", and those witnesses no longer exist on main. Every exact assertion grounded in a named identity or a controlled fixture survived #7615 untouched; only the tree-copied census literals went, and the three denominators gained a better consumer at D1 that joins census to roster by identity. The digest moves because the bar moved; read it as a real amendment. Criteria digest f0f450f4ddc82fe9 derived by execution via node_criteria_digest against the live amended node, with the pre-amendment wording yielding d2e455ab49e472e2 as the control that the pin tracks the criteria text. Also corrects the record on PR #7624, whose title claimed R1 but whose entire merged diff is two lines adding an import. R1 is unstarted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls
pushed a commit
that referenced
this pull request
Aug 2, 2026
* WIP: v1 deletion * Bind and accept the interpreter primitive roster (R0) Adds the closing contract v1-interpreter-primitive-roster never had, then accepts the node against it. The closing check is deliberately structural, not a population pin: named dispatch sites contribute derived rows, duplicate row keys refuse, shadows are exactly the known set by name, declared rows carry their own dissolution triggers, an arm with no semantic primitive identity stays representable, and an unrecognised form label refuses rather than defaulting. Binding it to counts would have recreated at the acceptance layer the defect #7615 removed from the witness layer -- the five deleted witnesses pinned live-population numbers copied from the tree, which DESIGN.md §5 rules is not an oracle, and they duly behaved as change detectors that redded main twice. One handback clause of the node was genuinely amended, not reworded: it demanded "witnesses asserting exact values rather than lower bounds", and those witnesses no longer exist on main. Every exact assertion grounded in a named identity or a controlled fixture survived #7615 untouched; only the tree-copied census literals went, and the three denominators gained a better consumer at D1 that joins census to roster by identity. The digest moves because the bar moved; read it as a real amendment. Criteria digest f0f450f4ddc82fe9 derived by execution via node_criteria_digest against the live amended node, with the pre-amendment wording yielding d2e455ab49e472e2 as the control that the pin tracks the criteria text. Also corrects the record on PR #7624, whose title claimed R1 but whose entire merged diff is two lines adding an import. R1 is unstarted. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Assert roster representability structurally, not as join progress review 46974 caught a real defect. The representability clause discharged "the roster can carry an arm with no semantic primitive identity" with primitive_d0_derived_rows_missing_identity_count() > 0, which measures how far the semantic identity join has got rather than what the roster can represent. It would have gone RED exactly when that join succeeded for every derived row -- legitimate downstream progress reddening an upstream node's acceptance check. That is the same defect class #7615 removed from the census witnesses, relocated onto join state, and it contradicts this PR's own framing. The structural fact is that InterpreterPrimitiveDispatchArm carries an interpreter-local arm identity and no semantic-primitive-identity field at all, so every row already is such an arm. The clause now constructs one and shows the roster's operations are total over it, plus that no live row carries an empty interpreter-local identity. The std.primitive_identity dependency is gone. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Correct the denominator-consumer claim; re-derive the digest review 46995 is right on both counts, and this was the same failure the repository keeps paying for: a sentence that reads well while the evidence it cites does not establish it. The amended handback claimed each of the three denominators has "a live consumer that joins them by identity". Neither half held. dispatch_site_count has NO external consumer at all — the only mention outside its own carrier was the acceptance note asserting it had one. And w_interpreter_census_consumes_roster_authority does not join by identity. It executes distinct_arm_identity_count, authored_spelling_count and v1_interpreter_row_count, asserting the ordering relation plus primitive_d0_interpreter_census_matches_roster — which is primitive_d0_interpreter_surface_row_count() == v1_interpreter_row_count(), a count equality between two independent derivations. That is a legitimate cross-derivation reconciliation and not a tree-copied literal, but DESIGN.md §5 is explicit that completeness is an identity join rather than a count equality, so it must not be described as one. Citing that very expression as proof of an identity join was the error. The handback clause now claims only what is delivered: three denominators derived from the roster rather than pinned as literals. The acceptance note records the retraction, states the count-equality distinction, names dispatch_site_count as consumer-less residue, and carries a dissolve-on for the D0 identity join reaching arm grain. Digest re-derived by execution: 581758f45921b40a. The two superseded values (d2e455ab49e472e2 pre-amendment, f0f450f4ddc82fe9 pre-correction) are recorded as the control that the pin tracks the criteria text. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Mint the ArmEnumeration dissolution-trigger accessor; both readers consume it review 47180 is right that a second hand-rolled match over ArmEnumeration is duplication, so the fix is the single authority rather than a disposition: the carrier now owns arm_declares_dissolution_trigger, and BOTH readers consume it — the new acceptance contract and the pre-existing witness that first hand-rolled the match. Migrating only the new one would have left the duplication in place while claiming it was removed. Two things in the review did not check out and are recorded rather than silently accepted. There was no canonical accessor to consume — this commit creates the first one. And DESIGN.md contains no 'predicate/walker dissolution rule' by that name; the correct grounding for the change is DESIGN §2 minimize-redundancy and §3 single-authority, which the fix satisfies. Contract green, surface witnesses 19/19. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * WIP: v1 deletion * Revert "WIP: v1 deletion" This reverts commit a3a45ad. * Scope the ticket-brief budget to authored nodes; drop a ledger from one boundary Two independent causes, both surfaced by accepting R0. FIRST: roadmap_ticket_brief_violations walked doc_all_nodes(roadmap_authority()), which includes the DERIVED closing-contract task nodes whose boundary is a fixed prefix plus the target node's red_control. That made the page budget a second, undeclared constraint on red_control length — accepting any node could push a DIFFERENT node over budget, because acceptance makes the next node startable-and-unbound and derives a closing-contract row for it. Accepting v1-interpreter-primitive-roster did exactly that to v1-interpreter-primitive-dispatch-authority, whose six-clause red_control then overran. The only remedies available were to trim a carefully authored acceptance bar to satisfy a page constraint, or to leave every PR touching roadmap_authority.dag red. A derived brief is a projection of a field already governed where it is authored, so the budget now walks declared_roadmap_nodes(). The planted-fixture RED control is untouched and still refuses at the threshold. SECOND: native-selected-witness-bundle's boundary was 105 words because it was carrying a mutable execution ledger — PR number, head SHA, session name, date, PASS count, timing measurements — in a criteria field, which witness_authority_contains_no_mutable_execution_ledger exists to forbid. Replaced with the node's actual boundary at 98 words. The node has no acceptance receipt, so no stored criteria digest moves. roadmap_page_witness_test 35/35, roadmap_authority_test 39/39. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Regenerate ROADMAP.md from the merged authority The merge resolution staged main's side of ROADMAP.md and the subsequent regeneration did not make it into the merge commit, so the committed projection still showed v1-interpreter-primitive-roster active. Re-derived from the merged authority: the accepted node leaves the active projection and v1-interpreter-primitive-dispatch-authority moves up as the frontier successor, which is what accepting R0 means. Generated file, so re-derived rather than hand-edited (generated-file conflict policy row 1). --------- Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Auto-opened by session-dashboard for session
jolly-stag-843.Pushing to
session/jolly-stag-843advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan