Skip to content

A removal's "still covered elsewhere" half is a citation, and prose citations resolve against nothing - #9529

Merged
briansrls merged 6 commits into
mainfrom
session/stern-raven-434
Aug 28, 2026
Merged

briansrls merged 6 commits into
mainfrom
session/stern-raven-434

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

The claim, measured

The brief says nine carriers cite the deleted gunbc_ci_floor_plan as live justification for removing checks. Measured: the removal-justification population is three carriers, not nine. The other hits are already-marked history (ci_spec seed notes), or correct past-tense deletion records (githooks_pre_push_plan.dag — which handles its stale reference properly and needed no change). The number is reported rather than reproduced, because a population inherited from a brief is not a measurement.

The defect is a composition, not a mistake

Each removal was sound when written:

  • 2026-07-22 — GeneratedArtifactDriftGate left the push path because the floor still ran it.
  • 2026-07-25 — the hook was slimmed to fmt-only because CI still ran fmt.

The 2026-08-15 floor cut deleted the authority both cited. No diff was wrong; no review could have caught it from either side, because each justification was true when authored and falsified by a later change that had no way to see it. That is precisely what a resolvable citation fixes.

What landed

1. The coverage claim becomes typed. gunbc.commit_workflow gains CheckRemoval / RemovalResidual, where RemovalCoveredBy carries a DeclarationRef. The declaration index resolves every authored DeclarationRef in a non-fixture module on every required parse run — so deleting a cited mechanism now refuses instead of landing silently.

2. Deliberately not a join against commit_gate_roster. The tempting construction is to derive coverage from the roster's GithubActionsCiJob enrollments. That would be authority substitution: no .dag authority states which checks the required run actually performs — gunbc.compiler_frontend_program_status answers NotDerivable for SelfHostCargoPhaseEnrolled for exactly this reason. A green join would assert coverage nothing established. The ref proves the mechanism exists — a wall against the deletion this class died of — and claims nothing about whether it runs.

3. A finding beyond the brief. Measured against the emitted .github/workflows/witnesses.yml: neither required lane runs cargo fmt. The pre-push hook was slimmed on the stated ground that fmt remained a required-path CI step; the floor cut deleted that job. So the hook is now the only surface running fmt — while that same ruling argues at length that a hook enforces nothing (opt-in per clone, bypassable with --no-verify). Recorded as a RemovalUncovered residual, countable at check grain rather than only narrated in DESIGN's unguarded re-add list.

4. The brief's headline hole is already closed; the citation was not. The drift gate's coverage claim is TRUE again — by a route its prose never named (gunbc#9415's generated-artifact phase). The gate is covered; the citation was still dangling. Those are different facts and both are now stated.

Evidence

Three witnesses green by execution (gunbc run, all returning true).

Discriminating RED: mutating removal_is_uncovered so both arms answer true — the total at the level examined, blind one level down collapse this carrier is shaped to forbid — flips all three to false. Restored and re-verified.

The witness deliberately does not re-assert that cited refs resolve: the declaration index already walls that corpus-wide, and duplicating it would be a second representation that proves nothing new.

gunbc-ci-auto-heal and others added 6 commits August 27, 2026 23:20
…itations resolve against nothing

Nine-ish carriers named `gunbc_ci_floor_plan` as live justification for
removing a check; the 2026-08-15 floor cut deleted it. Measured, the
removal-justification population is three carriers, not nine — the rest
are already-marked history or correct past-tense deletion records.

The defect is a COMPOSITION, not a mistake. Each removal was sound when
written: the drift gate left the push path (2026-07-22) because the floor
still ran it; the hook was slimmed to fmt-only (2026-07-25) because CI
still ran fmt. The floor cut then deleted the authority both cited. No
diff was wrong and no review could have caught it, because each
justification was falsified by a later change with no way to see it.

What landed:

- `gunbc.commit_workflow` gains `CheckRemoval` / `RemovalResidual`, so a
  removal's coverage claim is a `DeclarationRef` the declaration index
  resolves on every required parse run. Had the citation been typed, the
  floor cut would have refused instead of landing silently.

- Deliberately NOT a join against `commit_gate_roster`'s
  GithubActionsCiJob enrollments: no .dag authority states which checks
  the required run performs (`compiler_frontend_program_status` answers
  NotDerivable for exactly this), so a green join would assert coverage
  nothing established. The ref proves the mechanism EXISTS — the wall
  against the deletion this class died of — and claims nothing more.

- A finding beyond the brief: `.github/workflows/witnesses.yml` runs
  `cargo fmt` in NEITHER lane. The pre-push hook was slimmed on the
  stated ground that fmt remained a required CI step; it is now the only
  surface running fmt, and that same ruling argues at length that a hook
  enforces nothing. Recorded as a `RemovalUncovered` residual, countable
  at check grain rather than only narrated in DESIGN's re-add list.

- The drift gate's claim is TRUE again by a route its prose never named
  (#9415's generated-artifact phase), so the brief's headline hole is
  closed; the stale citation was not.

Evidence: three witnesses green by execution, all three flip to `false`
under a mutation collapsing the classifier to answer from the row rather
than descending into the residual — the total-at-the-level-examined
failure this carrier is shaped to forbid.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Review 57001 flagged `since`/`cause` as prose rather than typed reasons
and explicitly deprioritized it. Reading the field turned up a sharper
defect it did not name: in the only row inhabiting the arm, `since` and
the row's own `removed_on` were the SAME LITERAL ("2026-08-15") — two
representations of one fact with no authority saying which wins if they
drift. That is the §2 redundancy this whole carrier exists to reduce,
reintroduced one field in.

Uncoverage begins when the check was removed, and `removed_on` already
states that. A row that was covered and became uncovered LATER is a
different shape; it gets modeled when a real specimen exists rather than
minted now on speculation.

`cause` stays prose deliberately. Typing it means a coproduct of removal
causes, and a one-row population cannot establish those arms — minting
them now is the re-invention §2 warns against, and the reviewer's own
reasoning (that calling this blocking would recreate the tension the PR
reduces) applies with more force to inventing a taxonomy from one
specimen.

Re-verified after the type change: all three witnesses return `true`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… parse break that failed CI

THE CI FAILURE FIRST, because it was latent in the original commit rather
than introduced by this one. `claim_executor --required-ci` parse phase
refused with 15 errors: "source annotation sits inside a declaration
body. Only module-item grain is modeled" (DESIGN §4c). The roster's
per-row comment sat INSIDE `data check_removal_roster = [ ... ]` from the
first commit. My local verification ran the interpreter, which tolerates
it; the required parse phase does not. So the local green was real and
strictly weaker than the gate — worth recording, because "witness returns
true" and "the corpus parses" are different questions and I had only
asked the first. All annotations are hoisted to module scope.

Review 57017, finding 1 — the arm proved existence while its NAME claimed
coverage. Correct, and the prescribed fix (a resolvable edge to the
required execution authority) is not buildable: no .dag authority states
which checks the required run performs, which `compiler_frontend_program_
status` records as `NotDerivable` for `SelfHostCargoPhaseEnrolled`.
Fabricating that edge would be the authority substitution the carrier's
own comment declines. What IS wrong is naming an arm for a rung its
evidence does not reach — §4b(1) rung inflation — so `RemovalCoveredBy`
becomes `RemovalCoverageClaimed`: the mechanism must exist, coverage is
claimed, and the gap is in the name rather than only in a paragraph.

Review 57017, finding 2 — the `*_is_* -> Bool` predicate. Correct on the
repository's own terms (`v2.std.subject_evidence` class A;
`extdeps.bazel.test_status`: a Bool classifying coproduct arms "destroys
exhaustiveness at every call site — a tenth status would have been
absorbed into false and no consumer would have been asked"). A third
residual arm would have been silently absorbed. `removal_is_uncovered` is
deleted and `uncovered_removals` matches the coproduct in place, so a new
arm fails to compile at the site that must decide about it.

The witness no longer tests a Bool predicate — that would entrench the
parallel surface the fix removed. It asserts the selection and that the
`cause` payload survives, which is the concrete thing predicate
dissolution costs. The compiler then forced the descent it exists to
teach: `selected[0]` is `Optional`, so the match must go through
Present/Absent, with Absent fail-closed to false.

All three witnesses re-verified: return `true`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Codex is right, and this is a fail-open I introduced rather than one I
inherited. The previous commit renamed the arm to RemovalCoverageClaimed
so the CARRIER stopped overclaiming, and left the QUERY doing exactly
what the rename was supposed to stop: `uncovered_removals` excluded every
claimed row and its own comment called it "the repository's answer to
which checks are unguarded". So a mechanism whose declaration still
exists while its required-phase enrollment was deleted read as guarded.

That is ⊥-as-ignorance rendered as ⊥-as-answer — the empty-observation
narrow DESIGN names as strictly worse than the widen §5 already forbids,
because a widen is merely expensive and a narrow is silently uncovered.
Fixing the arm's NAME and leaving the query's PARTITION is the same
defect one level out, which is the part I missed the first time.

The partition is now stated at the grain the evidence supports:
`removals_declared_uncovered` and `removals_with_unverified_coverage_
claim`, which together exhaust the roster. There is deliberately no third
query and no `verified covered` arm — no producer could inhabit one,
since no .dag authority states which checks the required run performs,
and an arm nothing can reach is the permanently-green decoration §4b
forbids. Stated plainly at the call site: the COMPLEMENT of
declared-uncovered is not the guarded set, and the honest count of what
this repository can currently prove is guarded, at check grain, is zero.

A fourth witness makes that structural rather than a paragraph: the two
queries partition the roster with no remainder, so a future `verified
covered` arm breaks the sum and must be reckoned with at that site
instead of being added silently and quietly excluded from the unguarded
answer — which is precisely how this defect arose.

All four witnesses return `true`.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Aug 28, 2026 •

Copy link
Copy Markdown
Contributor Author

CI floor failure is pre-existing on main, and this PR's witnesses passed

CORRECTION (2026-08-28). An earlier revision said the breach was "against a 1552ms cost line". Wrong threshold, corrected below. 1552ms is the advisory cost line; rows over it report outcome=pass and are counted as over_cost_line_diagnostic (117 in this run) — they block nothing. The blocking budget is 5000ms CPU (completed_over_cost_requirement). The refusal names its own axis: cost exactly 6358ms against 5000ms. The gap is 1.27x, not 4.1x, and the original wording made all 118 over-line rows read as blockers when 117 are diagnostics. Caught by warm-hawk-909, verified against this run's own log before correcting.

The required-witnesses-floor red is not from this change. The decisive comparison is against main at 5f782fb6e — the exact commit this branch has merged, so content is held constant:

main 5f782fb6e (run 33135617689) this PR eec1d13 (run 33135688473)
planned 11996 12000
passed 11853 11857
failed 0 0
blocking completed_over_cost_requirement=1 completed_over_cost_requirement=1
that claim's CPU 6889ms 6358ms
build lane success success

Both fail on the same claim, against the same 5000ms CPU budget:

required-floor: COMPLETED-OVER-COST-REQUIREMENT
  test.claim.callable_candidate_ambiguity_witness.neither_green_source_refuses_and_neither_mis_resolves
  reached its verdict and then exceeded its budget: Cpu
  main @5f782fb6e: 6889ms     this PR: 6358ms     budget: 5000ms

Main at the identical base is not merely also-failing — it is failing harder on this claim than this branch is, which rules out the reading that these four added witnesses pushed it over. An earlier revision of this comment cited main at b6003a45e; that head is now behind, and the comparison is re-anchored to current main so "main has moved since" cannot be read into it.

That witness is not in this PR's diff (4 files, all dag/gunbc/*.dag plus one new witness); it was last touched by #9436.

The delta is exactly this PR's four witnesses: planned 11996 → 12000 and passed 11853 → 11857, both +4, with failed=0. All four were discovered, enrolled, executed, and passed on CI — the verdict this PR needed, on the record rather than inferred from local interpreter runs.

The cost breach is not mine to repair, and #9517 already owns it — doing the opposite of a raise: per-claim ceiling 5000 → 500ms, restoring a value set at #8283 and raised twice without a ruling, with the over-budget population frozen as a shrink-only debt roster. (#9517 is itself currently BLOCKED behind this same red.)

This claim's cost is not a stable figure and should not be quoted as one: eight heads span 5033–6889ms CPU, a 37% spread, measured by five uncoordinated lanes. The slowest run produced the highest cost (elapsed x1.57, cost x1.19), so ambient fleet load is visible in it.

— sent from stern-raven-434

@briansrls
briansrls merged commit 5c2d480 into main Aug 28, 2026
1 of 3 checks passed
@briansrls
briansrls deleted the session/stern-raven-434 branch August 28, 2026 04:33
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