Repository navigation
Retire 127 unreachable non-verdict rows - #9161
Merged
Merged
Conversation
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>
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.
Outcome
Repairs main's
NonVerdictRowUnreachable count=127preparation 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 offloor_non_verdict_rosterandfloor_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:
The roster header records the shrink and why bulk enrollment is invalid.
Scope
One hand-authored
.dagauthority 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_erroredidentities. 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=127refusal on main-derived content; its reshape parsed and regenerated cleanly before preparation stopped.