Repository navigation
Pre-step-3: land rust_item_host_observation as the changed-item denominator and admission wall — its only prior realization (rust_item_census.py) was deleted by the bankruptcy and no route replaced it - #9510
Conversation
…make it the changed-item denominator the seed-growth admission join was waiting for The census had one realization, scripts/rust_item_census.py, and gunbc#9132 deleted it with the measurement corpus. Nothing replaced it, so from 2026-08-24 no route in this repository could enumerate Rust items at identity grain -- and no rung drop was declared, because the census's consumers were lanes rather than modules and no dependent could refuse. The scaffold protecting it is a live instance of the rule DESIGN 4b(3) added on 2026-08-26: its trigger read "producer lands and enrolls; Python script deleted", a conjunction whose second half an unrelated cut satisfied while the producer never landed. gunbc.rust_item_scan reads items from rustfmt-normalized source with its item-keyword population taken FROM extdeps.languages.rust.syntax rust_item_forms rather than re-coined -- the deleted script's regex ITEM_PATTERNS were exactly the second roster this reader refuses to author, and the census predicted its own failure from it. It is not a parser and does not claim to be: it refuses on any structural line it cannot classify, which is what makes an incomplete recognizer safe rather than quietly smaller. gunbc.rust_item_host_observation supplies TWO populations from TWO functions, which is the condition gunbc.seed_growth_admission's own forward-freeze row set on enrolment. seed_growth_join_declarations is replaced by the split pair plus seed_growth_admit_change; an unattributed hand-Rust change REFUSES rather than reporting an empty delta; deletions offset nothing; ExistingSeedItemModified carries capability_origin, with no value naming a capability originated in Rust. Rung: mechanically preventable AS TO THE ROUTE and no higher -- the wall executes under witnesses and no required CI phase invokes it yet. Arming it is a separate change. The terminal seed-bridge roster is deliberately not authored here. Hand-Rust delta: zero. Every file is .dag.
…s capability was modeled before it, and that the model constrains it CapabilityAlreadyModeled was payload-free, so it could be satisfied by inspecting the final candidate -- which cannot distinguish a model that existed before its realization from a model authored beside the realization that inspired it. That distinction is the whole question the arm existed to ask, so the vocabulary moves to gunbc.capability_origin and grows a payload: an authority, and where a capability introduced in this change came from. THREE TESTS, ESTABLISHING THREE DIFFERENT THINGS. The leaf test proves Rust owns no semantic decision. The origin test proves the semantics predate the Rust: remove the hand-Rust delta, build E1, and the authority must still hold. The conformance test proves the model CONSTRAINS the Rust rather than merely agreeing with it: mutate the realization alone, and the predicted evidence must go red while E1 stays green. A retro-described implementation passes the first two and fails the third, because its fixtures were derived from the behavior they check -- which is why FixtureProvenance refuses GeneratedByRealization even when the mutation went red. ADDITIONS ARE COVERED, NOT ONLY MODIFICATIONS. A newly added item can carry a perfectly good justification row and still have been retro-modeled in the same change, so the relation participates in the addition arm and roster membership is no longer sufficient. THE EPOCH IS IDENTIFIED AND EXPIRES. ModelEpochRef names the exact derived E1 population, and the subject carries both the base and the head it was derived against. A probe taken against another base refuses rather than admitting -- the reversed-diff class stated as evidence rather than as advice. RUNG: the vocabulary is structural (no arm means "the Rust behaves this way, therefore this is the intended model", and no not-executed arm has a path to an admitting verdict). The tests themselves are executed by nothing yet, so every real call today refuses. The next-rung trigger names the capability. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… the length check (review 56637) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Closing: this branch's content is already on main, and its only real delta is a deletion of someone else's roster row.
The actual branch-against-main delta is two lines: That row landed on main from another lane after this branch was cut. So there is nothing here to land and one thing here to lose. Closing rather than flipping to ready. Sibling disposition: #9426 should also be closed as already merged — same cause, measured on its comment thread. Its three "conflicted" files are all cases where its branch is the smaller side, and merging it would revert #9444's origin relation. The general tell, worth stating once: after a squash merge, — sent from loyal-ram-883 |
Auto-opened by session-dashboard for session
loyal-ram-883.Pushing to
session/loyal-ram-883-originadvances 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