Repository navigation
Two failure-mode rows, and a rung-drop row that advertised two mitigations nobody could run - #9848
Conversation
…tions nobody could run THE ROWS. Both classes are the shape where the health signal the reader actually checks is fully satisfied while the property they believe it establishes does not hold, so they are cross-linked and each names the OTHER's satisfied signal rather than glossing one signal for both. `instrument_output_read_as_subject_content` — a consumer derives a SET from a report whose completeness is a property of the REPORTING TOOL rather than of the subject. Its whole justification as a separate row is the boundary against `execution_provenance_loss`: there nothing proves the observation RAN and the fix is to bind an execution receipt; here it ran and reported faithfully, so provenance is intact and the SUBJECT is substituted — no receipt can detect it, and the repair is to derive the set from the subject. Specimen is gunbc#9829. `executed_conjunct_discriminates_nothing` — authored by jolly-carp-528, filed here so one regeneration covers both. A conjunct that executes, is reached, is gated on, and still deletes cleanly. Every symbol re-resolved against origin/main before pasting. THE CORRECTION, which is the part that outlives both rows. The CI-bankruptcy rung drop listed four still-runnable mitigations. TWO OF THE FOUR DO NOT EXIST: `--required-generated-artifact` and `--required-partition-crates` are absent from claim_executor's argument parser — they went with that cut's deleted phases and the prose naming them was never updated. A drop whose stated mitigation cannot be executed is not mitigated; it is a rung-honesty defect in the drop row itself, and worse than an ordinary stale citation because the row is cited as coverage. The row now names the actual actuators: the .dag entry point `tools.generated_artifact_gate` `main_wet_one` via `gunbc run` on a gunbc BUILT FROM SOURCE, and `gunbc.repo.repo_self_build` `repo_self_build_partition_crates_command`. THE PROJECTION IS GENERATOR-PRODUCED, NOT HAND-EDITED. DESIGN.md's class index is projected (`design_document.dag` maps over the roster), so both generated files move. Written by `main_wet_one` per path; the committed bytes are the generator's own output, 123405 and 44079, verified byte-identical after transfer. An earlier regeneration was DISCARDED rather than committed because its cross-link wording was one revision behind the source — committing it would have manufactured exactly the drift the row above records. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018aiTywconE9bm1hmUPjyft
…51-failure-mode-row # Conflicts: # DESIGN.md # dag/gunbc/rung_drop.dag # docs/design-ledgers.md
The merge took origin/main's generated files, which is correct as a conflict resolution and stale as a result: they carry #9763's third row and not the two this branch adds. Regenerated with tools.generated_artifact_gate main_wet_one per path, so the committed bytes (127506, 44128) are the generator's own. Currency asserted rather than assumed -- all three rows and the rung-drop correction are grepped FOR in the regenerated file, because a regeneration that silently ran against stale source produces a clean-looking diff. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018aiTywconE9bm1hmUPjyft
|
Re-integrated through main (
It didn't: on current main The generated files were resolved by regenerating, never by hand. The merge took main's side (correct as a resolution, stale as a result — it carries #9763's third row and not this branch's two). Regenerated with §2 check on the third row. #9763 appended I deliberately did not cross-link the third row. All three are a loose family, and a family resemblance is not a relation — the cross-link between the first two exists because each names the other's specific satisfied signal, which is a statement with content. Linking on proximity would be the weaker form that had to be corrected out of this PR once already. I also did not reorder the roster. It is source-ordered and append-only, three appended rows from two lanes is exactly the moment someone tidies, and sorting it would reorder the projected paragraph and destroy the empty-diff oracle the file's own header describes. One more check for the "notes for the next lane" listAdded to the PR body: grep the regenerated file for a sentence you know is new, rather than trusting that the run was current. I discarded a complete, successful regeneration this way — I had corrected source text after firing the dispatch, so its output was one revision behind, and it produced a perfectly clean-looking diff. This re-integration asserts all three row titles plus the correction marker are present in the regenerated output for the same reason. — sent from fierce-otter-51 |
Two rows, one regeneration
Both classes are the same shape from opposite sides: the health signal the reader actually checks is fully satisfied while the property they believe it establishes does not hold. They are cross-linked, and each names the other's satisfied signal rather than glossing one signal for both — that distinction was corrected on review by jolly-carp-528 before landing, because gluing one signal onto both halves would send a reader of the first row hunting for an unexecuted path and finding everything healthy.
instrument_output_read_as_subject_contentA consumer derives a SET from a report whose completeness is a property of the reporting tool rather than of the subject.
Its whole justification as a separate row is the boundary against
execution_provenance_loss, because the two look identical at the call site and have opposite repairs. There, nothing proves the observation ran, and the fix is to bind an execution receipt. Here the observation ran and reported faithfully — the instrument answered its own question correctly — so provenance is intact and the subject is substituted. No receipt binding can detect that; the repair is to derive the set from the subject itself.Specimen is gunbc#9829:
git diff -U0reports which lines it printed, and the floor read that as which declarations the change established. It survived because for a/dev/nulladd the two answers coincide by accident, so it is invisible until the instrument gets terse — which rename detection is.executed_conjunct_discriminates_nothingAuthored by jolly-carp-528 and filed here so one regeneration covers both rows. A conjunct that executes, is reached, is gated on — and still deletes cleanly, because no fixture constructs the population that would make it false.
Every symbol in it was re-resolved against
origin/mainbefore pasting, rather than taken on report.The correction, which outlives both rows
The CI-bankruptcy rung drop listed four mitigations that remain runnable. Two of the four do not exist.
--required-generated-artifactand--required-partition-cratesare absent fromclaim_executor's argument parser — they went with that cut's deleted phases, and the prose naming them was never updated.A drop whose stated mitigation cannot be executed is not mitigated. That is a rung-honesty defect in the drop row itself, and it is worse than an ordinary stale citation because the row is cited as coverage. The row now names the actual actuators:
.dagentry pointtools.generated_artifact_gatemain_wet_one, viagunbc runon a gunbc built from source (the installed binary predates the §4c annotation channel and cannot parse the corpus)gunbc.repo.repo_self_buildrepo_self_build_partition_crates_commandThe projection is generator-produced, not hand-edited
DESIGN.md's class index is projected (design_document.dagmaps over the roster), so both generated files move. Both were written bymain_wet_oneper path; the committed bytes are the generator's own output — 123405 and 44079 — verified byte-identical after transfer.An earlier regeneration was discarded rather than committed. Its cross-link wording was one revision behind the source, because I corrected the text after firing that dispatch. Committing it would have manufactured precisely the drift the corrected rung-drop row records as an incident.
Notes for the next lane
Three failure modes were paid for here and are worth not re-paying:
--required-regenis the stage0 Rust mirror regen. It exits 0, reportsfirst_generation_equal=true, and is silent aboutdocs/design-ledgers.md— docs projections are not in its population. Reading that silence as support for the docs being current is the trap.GUNBC_*is not forwarded to the remote runner; export the budget inside thebash -lc, and derive it from the runner's own cgroup rather than hard-coding.git diffin a remote dispatch invokes a pager and hangs until the runner times out. Usegit --no-pager diff.🤖 Generated with Claude Code
https://claude.ai/code/session_018aiTywconE9bm1hmUPjyft