Skip to content

Record #10727 as an unadjudicated merged instance in v1_seed_standing - #10826

Merged
briansrls merged 8 commits into
mainfrom
session/smart-ant-528-v1-surface-admission
Sep 8, 2026
Merged

briansrls merged 8 commits into
mainfrom
session/smart-ant-528-v1-surface-admission

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Sep 8, 2026 •

Copy link
Copy Markdown
Contributor

What

One record in gunbc.v1_maintenance_standing, in a typed carrier:

type UnadjudicatedDisposition =
    MergedWhileObjectionStood { change, merged_as, objecting_review, refusal_at_issue }

data v1_maintenance_inhabitance_relation_merged_disposition: UnadjudicatedDisposition =
  MergedWhileObjectionStood {
    change: "gunbc#10727",
    merged_as: "7fb62e6e5e72b480a40bf0c858bb92f23664d5e4",
    objecting_review: "github-review-5135375330",
    refusal_at_issue: PublicSurfaceGrowth,
  }

gunbc#10727 merged on 2026-09-08 carrying five new exported declarations in the emitted v1 seed while PublicSurfaceGrowth remained 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 the PublicSurfaceGrowth class.

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 String note. The first draft was a bare data …: String, which review 62399 correctly refused on §4c ("a ruling, citation, status or count belongs in a typed carrier; an ordinary String declaration whose sole purpose is commentary is misplaced or dead data") and §3c (git grep returns exactly one hit — its own definition). The four sibling *_note: String rows 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_test would 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_standing in the same file is consumed the same way.

The objection is on record; the ruling is what never existed

objecting_review names the exact-head REQUEST_CHANGES on #10727 (GitHub review 5135375330), which is what raised the PublicSurfaceGrowth objection. 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. .dag has no module-private declaration concept, so no declaration can request privacy. The authority is not minted by this row: v1.compiler.emit_rust already carries it, in the ceiling note above rust_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.languages declares VisibilitySpec = KeywordVisibility { prefix: String } | CaseVisibility { export_case: NamingCase } — one prefix per target, with no representation anywhere in the type of a public/private pair. Rust binds KeywordVisibility { prefix: rust_visibility }; extdeps.languages.rust.emit declares rust_visibility = "pub "; and rust_visibility_prefix takes no argument, so every declaration rendered through it gets pub and 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_struct does take a public: Bool and does emit a bare struct Cli when 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 spelled pub fn against bare fn, and pub types against bare. Re-derive it; read on main after 7fb62e6e5e72b480a40bf0c858bb92f23664d5e4 the bare counts were zero in both categories — a dated observation, not a standing instrument reading. Its scope limit survives re-derivation: the same predicate over src/v1/stage0/src as a whole is false, because hand-authored files sit beside the mirrors and do carry bare declarations. The mirrors are the subject because PublicSurfaceGrowth'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 UndecidableGenericFormal decline 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 in src/v2 itself.

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-floor reporting verdict=FloorClean, 3549/3549 terminal — and that reading is vacuous on this subject. gunbc.v1_maintenance_standing is 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, on green_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 regen is clean, and origin/main 5e24cc9b3f is merged with the authority subject byte-preserved across the integration.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MuB8wHjijaFwNoyzm78stF

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 briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

  1. THE MERGE IS THE RECORD. There is no review, ruling text or transcript to point at is 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 why unadjudicated is the correct word.

  2. In the placement paragraph, this change satisfied no test overstates 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 turns not adjudicated into a negative adjudication, then immediately records evidence offered to satisfy the purpose test.

  3. 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 RULING versus ACTION WHILE OPEN distinction 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 broader stage0/src claim, 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.

Brian Searls and others added 4 commits September 8, 2026 06:13
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 briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

Brian Searls and others added 2 commits September 8, 2026 10:09
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 briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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 briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

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.

@briansrls
briansrls merged commit 2d72ebb into main Sep 8, 2026
4 checks passed
@briansrls
briansrls deleted the session/smart-ant-528-v1-surface-admission branch September 8, 2026 18:11
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