Skip to content

Retire 127 unreachable non-verdict rows - #9161

Merged
briansrls merged 2 commits into
mainfrom
session/royal-cat-509-nonverdict
Aug 25, 2026
Merged

briansrls merged 2 commits into
mainfrom
session/royal-cat-509-nonverdict

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 25, 2026 •

Copy link
Copy Markdown
Contributor

Outcome

Repairs main's NonVerdictRowUnreachable count=127 preparation refusal by deleting the exact 127 identities that cannot reach a known-red non-verdict arm. The 15 identities that remain are the exact intersection of floor_non_verdict_roster and floor_expected_red_roster.

Provenance and disposition

#9039 (852a7287987) is already an ancestor of #9095 (e88aa18603c). #9095 atomically introduced a 142-row non-verdict roster and its reachability wall after #9039 had drained 127 of those identities from expected-red standing. Thus this was not later composition skew: #9095 authored 127 rows that were unreachable on its own parent.

Deleting those rows is the truthful remedy. Enrolling them as expected-red would invent semantic-false verdicts merely to clear the wall.

Identity join at this head:

  • old non-verdict roster: 142 unique identities
  • removed: 127 unique identities
  • retained: 15 unique identities
  • retained ∩ expected-red: 15
  • retained − expected-red: 0
  • added identities: 0

The roster header records the shrink and why bulk enrollment is invalid.

Scope

One hand-authored .dag authority only. No changes to #9106 or #9158.

Confinement check

The executing confinement is exact identity equality: observed non-verdict identities must equal this roster. Run 32794539384 observed 15 known_red_runtime_errored identities. Identity comparison against this retained roster is exact: retained − observed = 0 and observed − retained = 0. Deleting the 127 stale rows therefore clears preparation without trading it for a later confinement refusal.

The stale numeric examples in the module annotation were rewritten as set relations. The gate itself is identity-grain, not a numeric ceiling. Its separately documented adjacent weakness remains: same-change roster growth is review-confined rather than compared with the composed target-base parent; this PR does not widen into that next-rung admission mechanism.

Inherited CI context

#9158 independently reproduced the same NonVerdictRowUnreachable count=127 refusal on main-derived content; its reshape parsed and regenerated cleanly before preparation stopped.

@briansrls
briansrls merged commit c271b75 into main Aug 25, 2026
1 check passed
@briansrls
briansrls deleted the session/royal-cat-509-nonverdict branch August 25, 2026 03:45
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
…a population it had just deleted

gunbc#9161 retired the 127 unreachable rows from `v2.workflow.floor_non_verdict` and fixed
that module's header, closing the `NonVerdictRowUnreachable` refusal on main. It did not
reach `gunbc.floor_non_verdict_enrollment`, which is where the population is carried as
TYPED ROWS rather than prose — so main now states two incompatible things about one
population:

  roster (post-#9161)  15 identities
  typed census          142, of which 119 NameNotInLoadedIndex, 13 TypeError,
                        9 UndefinedVariable, 1 CallContractMismatch
  basis                 run 32681700364 / 5482863, measured before the drain
  specimen              test.claim.design_argument_witness
                        design_s1_argument_form_is_valid — an identity #9161 established
                        PRODUCES A VERDICT, cited as this population's dominant-cause
                        exemplar

NOTHING DETECTS THIS, which is the part worth recording rather than just fixing.
`non_verdict_cause_census_sums_to_the_measured_total` checks the arms against the total,
and 119+13+9+1 == 142 stays true however far the population drifts from the thing it
describes. A sum is an internal consistency check; it is not a binding to the run the row
claims to have been measured on. The `PopulationBasis` arm exists precisely so a reader can
tell a figure from a receipt, and it was pointing at a receipt for a tree that no longer
exists.

RE-MEASURED against floor run 32799641240 (sha 4ab8067) — the last full fold before the
roster landed, carrying the 65-row expected-red population: total 15, `TypeError` 14,
`CallContractMismatch` 1. `NameNotInLoadedIndex` and `UndefinedVariable` are ABSENT from
the census rather than carried at 0, per `every_declared_cause_was_actually_measured`.

THE PROFILE CHANGED SHAPE, NOT JUST SIZE, and the prose is rewritten to say so: the
unimportable-witness class was 119 of 142 and is now zero, so the repair that paragraph
described — give each witness the import its subject needs — no longer describes any
member of this population. 12 of the surviving 14 share ONE error text
(`atom_identity_hash requires exactly one string argument`); it is NOT claimed they share
one root, and no per-call-site read was performed. The specimen moves to a surviving
identity in that class, and `floor_non_verdict_next_rung_trigger`'s description of what
repaying the population costs is re-pointed the same way.

The two paragraphs worth keeping from the replaced block — the 2026-08-24 no-transcription
rule and the false-regression note whose reference other prose resolves against — are
preserved rather than swept out with the superseded figures.

All three enrollment witnesses green by execution on this tree:
`non_verdict_cause_census_sums_to_the_measured_total`,
`every_declared_cause_was_actually_measured`,
`population_basis_is_a_measured_snapshot_not_a_bound`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Yf78QWpyy66e9M6dkT5Fr
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
…ng trigger

The transferable finding is not the corrected number, it is that the check standing beside
it could never have caught it. `non_verdict_cause_census_sums_to_the_measured_total`
compares the arms to the total, so 119+13+9+1 == 142 stays true however far the population
drifts from the tree it claims to describe. A sum is an internal consistency check over
the row's own fields; it is never a binding to the run
`floor_non_verdict_population_basis` names. With respect to the defect it appears to
guard, its RED IS UNREACHABLE — no authored value of these rows that is WRONG ABOUT THE
TREE makes it fail. That is DESIGN §4b's decoration: worse than absent, because it is
cited as coverage.

The witness is NOT deleted. It still refuses an internally incoherent row, which is a real
if narrow subject, and the new prose is explicit that this is what it covers. Deleting it
would be reading unreachable-for-one-defect as dead, which §"reachability read as
occupancy" rules out.

`floor_non_verdict_census_derivation_next_rung_trigger` records the climb: derive the total
and the census FROM the run the basis names rather than authoring them beside it, at which
point a transcribed count has no spelling and the rows cannot disagree with the tree. That
is the 2026-08-24 ruling — name the instrument, never transcribe its output — applied to
this carrier, and it is what the current change does NOT do: it replaces one authored
total with another, correct today and equally undetectable tomorrow. The trigger says so
plainly, and rules out two non-fixes: a second sum check over the same authored fields (the
check that already cannot see the defect), and re-measuring by hand (which is what produced
this correction and the one before it).

Rung on this axis: MITIGATABLE, mitigated by authorship diligence — which is exactly what
failed, since #9161 deleted the population and left the rows describing it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Yf78QWpyy66e9M6dkT5Fr
briansrls pushed a commit that referenced this pull request Aug 25, 2026
…rows

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Aug 25, 2026
…127 rows

The witnesses failure recorded on this PR started 03:20:59Z; #9161's repair
merged 03:45:22Z, so that verdict predates the fix by 25 minutes and measures
a tree that no longer exists.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
briansrls added a commit that referenced this pull request Aug 25, 2026
…a population it had just deleted (#9169)

* Re-measure the non-verdict typed census, which #9161 left describing a population it had just deleted

gunbc#9161 retired the 127 unreachable rows from `v2.workflow.floor_non_verdict` and fixed
that module's header, closing the `NonVerdictRowUnreachable` refusal on main. It did not
reach `gunbc.floor_non_verdict_enrollment`, which is where the population is carried as
TYPED ROWS rather than prose — so main now states two incompatible things about one
population:

  roster (post-#9161)  15 identities
  typed census          142, of which 119 NameNotInLoadedIndex, 13 TypeError,
                        9 UndefinedVariable, 1 CallContractMismatch
  basis                 run 32681700364 / 5482863, measured before the drain
  specimen              test.claim.design_argument_witness
                        design_s1_argument_form_is_valid — an identity #9161 established
                        PRODUCES A VERDICT, cited as this population's dominant-cause
                        exemplar

NOTHING DETECTS THIS, which is the part worth recording rather than just fixing.
`non_verdict_cause_census_sums_to_the_measured_total` checks the arms against the total,
and 119+13+9+1 == 142 stays true however far the population drifts from the thing it
describes. A sum is an internal consistency check; it is not a binding to the run the row
claims to have been measured on. The `PopulationBasis` arm exists precisely so a reader can
tell a figure from a receipt, and it was pointing at a receipt for a tree that no longer
exists.

RE-MEASURED against floor run 32799641240 (sha 4ab8067) — the last full fold before the
roster landed, carrying the 65-row expected-red population: total 15, `TypeError` 14,
`CallContractMismatch` 1. `NameNotInLoadedIndex` and `UndefinedVariable` are ABSENT from
the census rather than carried at 0, per `every_declared_cause_was_actually_measured`.

THE PROFILE CHANGED SHAPE, NOT JUST SIZE, and the prose is rewritten to say so: the
unimportable-witness class was 119 of 142 and is now zero, so the repair that paragraph
described — give each witness the import its subject needs — no longer describes any
member of this population. 12 of the surviving 14 share ONE error text
(`atom_identity_hash requires exactly one string argument`); it is NOT claimed they share
one root, and no per-call-site read was performed. The specimen moves to a surviving
identity in that class, and `floor_non_verdict_next_rung_trigger`'s description of what
repaying the population costs is re-pointed the same way.

The two paragraphs worth keeping from the replaced block — the 2026-08-24 no-transcription
rule and the false-regression note whose reference other prose resolves against — are
preserved rather than swept out with the superseded figures.

All three enrollment witnesses green by execution on this tree:
`non_verdict_cause_census_sums_to_the_measured_total`,
`every_declared_cause_was_actually_measured`,
`population_basis_is_a_measured_snapshot_not_a_bound`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Yf78QWpyy66e9M6dkT5Fr

* Name the reason this stale census was undetectable as its own next-rung trigger

The transferable finding is not the corrected number, it is that the check standing beside
it could never have caught it. `non_verdict_cause_census_sums_to_the_measured_total`
compares the arms to the total, so 119+13+9+1 == 142 stays true however far the population
drifts from the tree it claims to describe. A sum is an internal consistency check over
the row's own fields; it is never a binding to the run
`floor_non_verdict_population_basis` names. With respect to the defect it appears to
guard, its RED IS UNREACHABLE — no authored value of these rows that is WRONG ABOUT THE
TREE makes it fail. That is DESIGN §4b's decoration: worse than absent, because it is
cited as coverage.

The witness is NOT deleted. It still refuses an internally incoherent row, which is a real
if narrow subject, and the new prose is explicit that this is what it covers. Deleting it
would be reading unreachable-for-one-defect as dead, which §"reachability read as
occupancy" rules out.

`floor_non_verdict_census_derivation_next_rung_trigger` records the climb: derive the total
and the census FROM the run the basis names rather than authoring them beside it, at which
point a transcribed count has no spelling and the rows cannot disagree with the tree. That
is the 2026-08-24 ruling — name the instrument, never transcribe its output — applied to
this carrier, and it is what the current change does NOT do: it replaces one authored
total with another, correct today and equally undetectable tomorrow. The trigger says so
plainly, and rules out two non-fixes: a second sum check over the same authored fields (the
check that already cannot see the defect), and re-measuring by hand (which is what produced
this correction and the one before it).

Rung on this axis: MITIGATABLE, mitigated by authorship diligence — which is exactly what
failed, since #9161 deleted the population and left the rows describing it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Yf78QWpyy66e9M6dkT5Fr

* Say these rows are a historical observation, because they are stale at birth by construction

A measurement committed INTO the tree it measures cannot name its own commit: authoring the
row makes a new one, so `head_commit` is always an ANCESTOR of the commit the row lives in.
That is unavoidable for any authored snapshot rather than a defect in this carrier, and it
decides how the rows must READ.

"On run 32799641240 at 4ab8067 the non-verdict population WAS 15" stays true forever,
including after the population moves again. "The non-verdict population IS 15" goes false
silently — and that is the sentence a reader takes from a row named
`floor_non_verdict_measured_total`, because the name is a third surface and it reads
present-tense whatever the value says. The prose now stops them, and names the instrument a
consumer must use instead: the floor prints `[floor-non-verdict] roster carries N enrolled
identity(ies)` and observes the live population on every required run.

THE NEXT-RUNG TRIGGER GAINS ITS TARGET, which was the half it was missing. It is NOT that old
measurements stop existing — storing one is legitimate and this row is one. It is that
STALENESS REMAINS REPRESENTABLE WHILE STALE-AS-CURRENT BECOMES UNREPRESENTABLE: a consumer
asking about the current subject must not be able to read an observation of an old one and
get a value back, and the mismatch must be a typed refusal rather than a stale answer that
still reads.

Three orthogonal laws are named, and the enrolled witness proves only the first: INTERNAL
COHERENCE (the arms sum to the total), PROVENANCE (the payload really was produced by the
named observer over the named subject — authoring both fields side by side does not bind
them, only a producer-minted receipt does), and APPLICABILITY (the receipt's subject is the
subject the consumer is asking about). At identity grain all four authored figures here —
total, histogram, dominant cause, specimen — DERIVE from the observed rows, and the stale
specimen this PR repairs could not have survived authoring, because its membership would be
checked against the population it claims to exemplify.

That substrate is deliberately NOT built here; this stays one file. Prose only, no row
values changed. All three enrollment witnesses re-verified green by execution.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Yf78QWpyy66e9M6dkT5Fr

---------

Co-authored-by: Brian Searls <briansearls1@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
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