Repository navigation
Record #10727 as an unadjudicated merged instance in v1_seed_standing - #10826
Conversation
gunbc#10727 merged on 2026-09-08 as 7fb62e6 carrying five new exported declarations in the emitted v1 seed while PublicSurfaceGrowth remained a dominating refusal in v1_seed_standing and the boundary question was open and escalated. The row states, in its own words, that the merge settles the disposition of that exact change and NOT the semantics of the PublicSurfaceGrowth class. Three placement constraints hold deliberately: - it is NOT under "what this standing has admitted so far", because that roster records changes that SATISFIED the purpose test; - it mints NO fifth MaintenanceAdmissionInstance arm, which would be the self-authored boundary change this standing warns against; - it is NOT filed only elsewhere, because the dangerous future inference happens while somebody is reading THIS authority. docs/design-failure-modes.md carries the deterministic projection of main's decision_surface_truncation row; it is catch-up, not new content. Verified on this head: docs projection gate regen clean, and claim_executor --required-floor verdict=FloorClean, 3549/3549 terminal, claims_failed=0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF
briansrls
left a comment
There was a problem hiding this comment.
Exact-head whole-diff review of 2677ebf: REQUEST_CHANGES.
The central framing is correct: recording the evidence that existed does NOT, as written, quietly adjudicate PublicSurfaceGrowth. The row repeatedly separates historical evidence from normative disposition, refuses a fifth MaintenanceAdmissionInstance arm, keeps the instance out of the admitted-so-far population, and says future matching changes still require classification or an explicit ruling. I would keep that shape.
Three factual/provenance corrections are required because this row's entire subject is historical precision.
-
THE MERGE IS THE RECORD. There is no review, ruling text or transcript to point atis false as written. #10727 did have reviews; in particular, a native REQUEST_CHANGES explicitly raised PublicSurfaceGrowth on an older head. What is absent is a review/ruling that ADJUDICATED THAT BOUNDARY on the merged change. Say exactly that: no review, ruling text or transcript resolves PublicSurfaceGrowth / licenses this instance. Do not erase the reviews that existed; their existence is part of whyunadjudicatedis the correct word. -
In the placement paragraph,
this change satisfied no testoverstates the negative in the opposite direction. The lane did produce a purpose/self-host argument and supporting measurements; what never happened was an adjudication that those facts satisfied the standing AS A WHOLE after the dominating PublicSurfaceGrowth refusal was applied. Replace the sentence with that grain. Otherwise the row turnsnot adjudicatedinto a negative adjudication, then immediately records evidence offered to satisfy the purpose test. -
The evidence paragraph says
what moved is which non-blocking reason a decline reports. That is not the measured transition matrix: thousands of sites moved between an undecided diagnostic and NO diagnostic in both directions, in addition to reason-to-reason moves. The stable claim is the blocking disposition/refusal set: the same seven refused identities before and after; non-blocking diagnostic/disposition visibility changed. State that, rather than compressing every transition into a changed decline reason.
On the two additions I was asked to attack:
- The
RULINGversusACTION WHILE OPENdistinction is good and should remain after finding 1 is corrected. It is the right boundary between the two neighboring precedent rows and this one. - The generated-mirror measurement does not need to be withdrawn. I checked the surrounding emitter model: v1's Rust LanguageSpec carries one target-level VisibilitySpec, Rust binds it to a keyword visibility whose prefix is
pub, and the emitted mirror census is consistent with that shape. The narrow scope to generated mirrors, plus the explicit refutation of the broaderstage0/srcclaim, is materially better than the earlier version.
The supporting refusal-set and src/v2-share evidence may stay. Its current explicit language — evidence that existed, not a finding that the class permits the change — successfully prevents it from becoming an admission rule once the three historical inaccuracies above are corrected.
CI on this exact SHA is green; content/provenance is the blocker.
The row's architecture is unchanged -- placement outside the admitted roster, no fifth arm, evidence-not-permission framing. These are precision fixes to what it asserts as historical record, each verified in source before writing. 1. "THERE IS NO REVIEW" WAS FALSE, AND FALSE WHERE THE ROW COULD LEAST AFFORD IT, since the ruling-versus-objection distinction IS the row's subject. There WAS a review: the exact-head REQUEST_CHANGES on #10727, GitHub review 5135375330, which is what raised the PublicSurfaceGrowth objection. What never existed is a RULING answering it, so the merge is the only disposition -- and a disposition is not an adjudication. 2. "THIS CHANGE SATISFIED NO TEST" SMUGGLED IN A NEGATIVE ADJUDICATION. Asserting the change FAILED the purpose test is itself a ruling, and this row exists to say no ruling was made. Restated: the purpose test was never adjudicated for this change, so it has no place in a population of adjudicated satisfactions. Same placement conclusion. 3. THE MODAL CLAIM IS RESTORED AND NOW STANDS ON TWO INDEPENDENT LEGS, verified rather than relayed: LEG ONE, the source language cannot ASK -- .dag has no module-private declaration concept; authority is v1.compiler.emit_rust's ceiling note above rust_scalar_checkpoint_reference_base, whose next-rung trigger is "a module-private function boundary in the language". LEG TWO, the emission path cannot ANSWER -- v1.compiler.languages declares VisibilitySpec with ONE prefix per target and no representation of a public/private pair; Rust binds KeywordVisibility { prefix: rust_visibility }, rust_visibility is "pub ", and rust_visibility_prefix takes NO ARGUMENT. The counterexample that looks decisive is recorded and refuted in the row so it is not raised again: emit_cli_root_struct's `public: Bool` is a bespoke local conditional for one hand-written CLI struct, not the declaration path. The 46-mirror census is demoted to observed confirmation of the two legs rather than the proof of them. 4. THE EVIDENCE PARAGRAPH UNDERSTATED THE MATRIX. "What moved is which non-blocking reason a decline reports" omits the direction carrying the repair. The matrix moved BOTH ways: 8425 sites cleared a spurious UndecidableGenericFormal decline outright (diagnostic to none), and the new relation fires at 4989 introduction sites plus 5 peer chains. Reason-to-reason is the third kind, not the only kind. The producer is named so the figures are re-derivable rather than quoted. Verified on this head: projection gate regen clean, and claim_executor --required-floor verdict=FloorClean, 3549/3549 terminal, claims_failed=0, unexpected_failures=0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF
Review 62399 raised two findings on the String note row; both are correct against the authority docs and both are fixed rather than argued. FINDING 1 -- DANGLING DECLARATION (§3c) PLUS UNCLASSIFIED PROSE (§4c). Verified: `git grep` returned exactly one hit for the note row, its own definition, and the four sibling `*_note: String` rows in this file are equally unread. §4c is explicit that a ruling, citation, status or count belongs in a typed carrier and that a String declaration whose sole purpose is commentary is misplaced data -- and this row was precisely a ruling-status record plus a citation plus a census. Prevalence is debt, not precedent; a fifth would have been a third one added by me. The row is now `UnadjudicatedDisposition = MergedWhileObjectionStood`, carrying the change, the merge SHA, the objecting review and the refusal class at issue as FIELDS. It is a separate type and NOT an arm of `MaintenanceAdmissionInstance`, for the reason the previous draft already argued and which the reviewer agreed with: that vocabulary records shapes the purpose test has been satisfied BY, and an unadjudicated merge satisfied nothing and failed nothing, so an arm there would mint the ruling that was asked for and not given. §3c is ANSWERED rather than left dangling, and answered honestly: the consuming route is the one that consumes `v1_seed_standing` itself -- DESIGN states this authority's rung plainly, "the vocabulary is consumed by review diligence, not by any gate" -- so a row here reaches its consumer when a reviewer classifies a proposed v1 change against this standing. That is the declared route, not a claim that a fold reads it. The irreducible rationale moves to a module-scope `//` annotation, which is §4c's own quarantine channel for prose and the shape this file already uses for its operator rulings. FINDING 2 -- TRANSCRIBED MEASUREMENT (§6). The census was a copied count. It is now stated as a PREDICATE anyone can re-run -- over the generated mirrors, count `pub fn` against bare `fn` and `pub` types against bare -- with the reading marked as a DATED OBSERVATION on main after 7fb62e6 and explicitly not the proof of the claim. Its scope limit survives re-derivation: the same predicate over `src/v1/stage0/src` as a whole is FALSE. The behavioural matrix likewise now states what it ESTABLISHED -- refusal set identical by identity, everything else non-blocking and moving in both directions -- and names the instrument instead of leaning on its counts. Verified: projection gate regen clean on this head. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF
…-v1-surface-admission # Conflicts: # docs/design-failure-modes.md
REVIEW 62407 -- the disposition row declined to consume an authority that already exists. `std.types` declares `CommitSha`, named by every Git-head consumer in the tree, and `merged_as: String` was a second name for that one concept (DESIGN §3) on the one declaration in this file that is structured rather than prose. It is now `merged_as: CommitSha`, with the import. The value is also widened from the abbreviated `7fb62e6e5e7` to the full 40-hex head. `CommitSha` is presently an unvalidated alias, but `std.types` homes a located syntax wall beside it -- lowercase 40-hex for an externally supplied Git head -- so an abbreviated value would have been written to be refused the day that wall becomes a constructor. The two remaining `String` leaves are left as they are, deliberately and for the reason the review itself gives: `change` is a repo-plus-number and `objecting_review` is a review reference, and no carrier for either shape exists in `dag/` yet, so minting one here would be the §2 re-invention the `CommitSha` fix exists to avoid. `CommitSha` is different -- it exists. THE PARSE BREAK, and it is why the required floor refused on 828d3ea. In `.dag` a DATA expression may not begin on the line after `=`; the constructor now sits on the equals line, matching `v1_seed_standing` in this same file. The six `type X =` declarations that break to the next line are NOT the same shape and are correct as written. WHAT THIS COST AND WHAT I TAKE FROM IT: my local `--required-floor` run returned FloorClean on the broken form, so the local instrument did not discriminate on this class while CI's did. "The edit is in the file" and "the file parses" are two different facts, and only the second is established by running the parser that CI runs. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF
briansrls
left a comment
There was a problem hiding this comment.
Exact-head post-restructure review of 6973680: REQUEST_CHANGES, with no remaining substantive objection to the typed authority change itself.
The rewrite fixes the earlier findings. UnadjudicatedDisposition keeps the merged action outside both MaintenanceAdmissionInstance and the refusal vocabulary; MergedWhileObjectionStood records the exact change, full CommitSha, objecting review and refusal class without converting the merge into an adjudication. The annotation now distinguishes an objecting GitHub review from the ruling that never existed, and the supporting matrix is explicitly evidence offered at the time rather than permission. I do not think the evidence paragraph silently adjudicates PublicSurfaceGrowth.
The private-surface argument is also grounded now rather than inferred from the emitted census. The existing v1.compiler.emit_rust ceiling note already states that .dag has no function-privacy concept and names a module-private function boundary as its next-rung trigger; the Rust declaration path's rust_visibility_prefix() takes no argument and returns the one target-level KeywordVisibility prefix. The bespoke emit_cli_root_struct(public: Bool) counterexample is correctly bounded as a different hand-written route. CommitSha is also the existing identity carrier, with the lowercase-40-hex validation authority beside it, so using the full merge SHA is the right direction.
Two archival corrections are still required in the PR body. Its code example still shows the superseded abbreviated merged_as: "7fb62e6e5e7" even though the exact diff now carries the full 40-hex CommitSha. And its Verification section still presents --required-floor as the local check even though this very lane established that required-floor was non-discriminating for the parse-break class; the discriminating pre-push/CI route is claim_executor --required-ci --required-lane witnesses, and exact-head run 34200546914 is green on all four required jobs. Please make the body describe the artifact that actually stands.
Separately, this SHA is no longer an integration candidate under the exact-head rule: its base is 801e12f..., while current main is 5e24cc9... (three commits ahead). I compared that main advance and it does NOT touch dag/gunbc/v1/v1_maintenance_standing.dag, so I do not see a semantic overlap; after integrating current main, a conservation-focused re-review should be sufficient if this one-file subject is byte-preserved. But I will not issue landing approval on the stale-base SHA.
Any integrated head is a new review subject. No merge action taken.
…-v1-surface-admission
DESIGN §3 -- the row carried the merge head twice, forty lines apart, once as the full 40-hex `merged_as` value and once abbreviated inside the producers annotation. One fact with two spellings inside a single authority. Both are now the full form. Also carries the merge of origin/main 5e24cc9; the authority subject is byte-preserved across it (identical blob). VERIFIED WITH THE INSTRUMENT THAT ACTUALLY REACHES THIS SUBJECT: `claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane witnesses` -- exit 0, zero adjudication BLOCKING. The `--required-floor` reading this PR previously cited is VACUOUS here for the reason this branch's sibling specimen establishes: nothing imports `gunbc.v1_maintenance_standing`, so the floor never parses it and its green was never about this file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF
briansrls
left a comment
There was a problem hiding this comment.
Exact-head conservation-focused re-review of c97e755: APPROVE on content.
The previously cleared one-file authority subject survives integration with current main. Relative to the last substantively cleared head 6973680, the authority's only branch-authored follow-up is the intentional normalization of the dated observation from abbreviated 7fb62e6e5e7 to the same full 40-hex CommitSha already carried by merged_as. The two occurrences now agree. No admission/refusal semantics, evidence matrix, private-surface argument, or disposition grain changed.
The PR body is also now archival-correct: its example carries the full SHA, and its verification names claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane witnesses rather than spending the non-discriminating required-floor green. Importantly, it records why floor was vacuous here using the correct two-conjunct condition: this authority is neither a floor root nor reachable from one by imports.
The typed disposition remains sound: it records an action taken while PublicSurfaceGrowth stood unresolved, outside both the admitted instance vocabulary and the refusal vocabulary; it does not adjudicate the class. The evidence remains explicitly historical evidence, not permission.
Exact-head workflow run 34216642850 is still in progress at review time, so CI remains a separate landing gate. This approval is bound only to c97e755. No merge action taken.
briansrls
left a comment
There was a problem hiding this comment.
Same-SHA review-surface refresh for c97e755: APPROVE.
The code subject remains the previously approved one-file authority. The PR body has now been corrected after that approval without moving HEAD: it carries the full 40-hex #10727 merge SHA, names claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane witnesses as the discriminating local verification, and explicitly records why the earlier --required-floor green was vacuous on this subject using BOTH required closure-membership conjuncts: gunbc.v1_maintenance_standing is not a floor root and no floor root reaches it through imports. It also records the root counterexample, so zero importers is not presented as sufficient.
Current main remains 5e24cc9, matching this PR's base. No remaining content, body, or integration objection from me on this exact SHA. Required CI is still a separate gate and was in progress at this review.
…-v1-surface-admission
What
One record in
gunbc.v1_maintenance_standing, in a typed carrier:gunbc#10727 merged on 2026-09-08 carrying five new exported declarations in the emitted v1 seed while
PublicSurfaceGrowthremained a dominating refusal in this standing and the objection stood unanswered. The record's load-bearing scope limit: this merge settles the disposition of this exact change, not the semantics of thePublicSurfaceGrowthclass.Why a new type rather than an arm or a note
Not an arm of
MaintenanceAdmissionInstance. That vocabulary records shapes the purpose test has been satisfied by. An unadjudicated merge satisfied nothing and failed nothing, so an arm there would mint the ruling that was asked for and not given — the self-authored boundary change this standing warns against three declarations above. It is equally not a refusal record: no refusal was issued either.Not a
Stringnote. The first draft was a baredata …: String, which review 62399 correctly refused on §4c ("a ruling, citation, status or count belongs in a typed carrier; an ordinaryStringdeclaration whose sole purpose is commentary is misplaced or dead data") and §3c (git grepreturns exactly one hit — its own definition). The four sibling*_note: Stringrows in this file are equally unread; prevalence is debt, not precedent. The mechanical facts are now fields; the irreducible rationale moved to a module-scope//annotation, which is §4c's own quarantine channel and the shape this file already uses for its operator rulings.Not filed elsewhere. The dangerous future inference — "but #10727 merged" — happens while somebody is reading this authority, so the corrective fact has to sit adjacent to it.
Not in the admitted roster. That population records changes for which the purpose test was adjudicated and satisfied, at exact identity grain. For this change it was never adjudicated at all. Saying it "satisfied no test" would assert that it failed, which is itself a ruling — and no ruling was made.
§3c: what consumes it
Answered rather than left dangling, and not by manufacturing a consumer. Enrolling the row in
documentary_refs_witness_testwould be a witness asserting that a declaration exists, which is exactly the tell §3c lists. The honest answer is this authority's own declared route: DESIGN states its rung plainly — "the vocabulary is consumed by review diligence, not by any gate" — so a row here reaches its consumer when a reviewer classifies a proposed v1 change against this standing.v1_seed_standingin the same file is consumed the same way.The objection is on record; the ruling is what never existed
objecting_reviewnames the exact-head REQUEST_CHANGES on #10727 (GitHub review5135375330), which is what raised thePublicSurfaceGrowthobjection. What is absent is any ruling resolving it. The merge is therefore the only disposition, and a disposition is not an adjudication — which is how this record differs from the ruling notes elsewhere in the file: those record a ruling, this records an action taken while the objection stood.Why the question was structural rather than a plea about one PR
The seed has no private form, and the claim stands on two independent legs, either of which alone supports the consequence.
Leg one — the source language cannot ask.
.daghas no module-private declaration concept, so no declaration can request privacy. The authority is not minted by this row:v1.compiler.emit_rustalready carries it, in the ceiling note aboverust_scalar_checkpoint_reference_base— ".dag has no function-privacy concept, so the shared body cannot be made unreachable however it is written" — whose next-rung trigger is "a module-private function boundary in the language".Leg two — the emission path cannot answer.
v1.compiler.languagesdeclaresVisibilitySpec = KeywordVisibility { prefix: String } | CaseVisibility { export_case: NamingCase }— one prefix per target, with no representation anywhere in the type of a public/private pair. Rust bindsKeywordVisibility { prefix: rust_visibility };extdeps.languages.rust.emitdeclaresrust_visibility = "pub "; andrust_visibility_prefixtakes no argument, so every declaration rendered through it getspuband there is no second value to select.A counterexample that looks decisive and is not, recorded in the row so it is not raised again:
emit_cli_root_structdoes take apublic: Booland does emit a barestruct Cliwhen false. That is a bespoke local conditional for one hand-written struct in the CLI emitter — not derived from the language model, and not the declaration path.The surface census is the observed confirmation of those two legs, not the proof of them, and it is stated as a predicate rather than a copied count (§6): over the generated mirrors
src/v1/stage0/src/v1_compiler_*.rs, count declarations spelledpub fnagainst barefn, andpubtypes against bare. Re-derive it; read on main after7fb62e6e5e72b480a40bf0c858bb92f23664d5e4the bare counts were zero in both categories — a dated observation, not a standing instrument reading. Its scope limit survives re-derivation: the same predicate oversrc/v1/stage0/srcas a whole is false, because hand-authored files sit beside the mirrors and do carry bare declarations. The mirrors are the subject becausePublicSurfaceGrowth's subject is a diff over the emitted seed's exported declarations.Consequence: any repair needing a helper declaration hits
PublicSurfaceGrowth, and it does so because of a missing language capability with an existing next-rung trigger — not because of a flag somebody could teach the emitter. That is why the boundary is a structural question to be drawn once rather than re-litigated per PR.The supporting evidence, stated as evidence and not as permission
The refusal set is identical by identity across #10727 — the same 7 sites before and after, one instrument over one corpus against two binaries differing only in the three stage0 infer mirrors. Nothing the seed accepted is now rejected and nothing it rejected is now accepted.
Everything else that moved is non-blocking, and it moved in both directions: 8425 sites where a spurious
UndecidableGenericFormaldecline is cleared outright (diagnostic → none), and 4989 introduction sites plus 5 peer chains where the new relation fires. Reason-to-reason transitions are the third kind, not the only kind. 3707 of the 8425 cleared sites (44%) are insrc/v2itself.These facts were offered in support of admission; the admission was never ruled on. They are recorded as the evidence that existed, not as a finding that the class permits the change.
Why record it at all
An unrecorded exception is worse than a refused one. The change is on main either way; with no row the next author either repeats the blocked work or quietly assumes the class is dead.
Verification on this head
claim_executor --required-ci --source-root dag --source-root src/v2 --required-lane witnesses— exit 0, zero adjudication BLOCKING.That instrument is named deliberately. An earlier version of this section cited
claim_executor --required-floorreportingverdict=FloorClean, 3549/3549 terminal — and that reading is vacuous on this subject.gunbc.v1_maintenance_standingis not a root of the floor — whose roots are planned witness claims — and no root reaches it through imports, since nothing imports it at all. Both conjuncts are needed and both hold: zero importers alone would not be sufficient, because a module can be read as a root of an instrument with no importer anywhere (the floor parses every witness module on exactly that basis). With both established, the file is in no witness closure, the floor never parses it, and its green was never about this change. Citing it here would spend exactly the green that this session's sibling specimen (#10832, ongreen_reported_over_a_population_the_instrument_does_not_own) exists to record. The required-CI lane's population is the changed-file set, which is the population this change is in.docs_projection_gate --function regenis clean, andorigin/main5e24cc9b3fis merged with the authority subject byte-preserved across the integration.🤖 Generated with Claude Code
https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF