Repository navigation
A restoration trigger must name the capability, not an artifact that would contribute to one - #9366
Merged
Merged
Conversation
A declared rung drop is retired by its trigger and by nothing else, so the trigger IS the whole check. A trigger naming less than the capability it restores is therefore the one direction the drop machinery structurally cannot see: it will be satisfied while the capability stays dead. What makes it invisible is that no step is wrong. The instrument author builds exactly what the trigger asked, the trigger fires honestly, the row retires correctly, and the thing the row existed to protect is still gone. Nobody has to be careless, which is why it needs a rule rather than diligence. The receipt is this document's own row. The measurement-bankruptcy entry records losing "the only executable route to a self-host emission BOARD measurement" and then writes a trigger naming "a .dag entry point that emits, assembles and compiles ONE ENTRY". A board is per-entry across many entries. The two halves sit five lines apart in one row at different grains, and the row declares the trigger fired. Measured by code read: the instrument that fired it takes a fresh temporary directory per invocation and path-depends on the whole stage0 crate, so every entry rebuilds the bootstrap compiler cold and the cost is entry-INDEPENDENT. One entry is the only thing it can do. The review tell is a grain mismatch between the loss sentence and the trigger sentence: a plural loss with a singular trigger, a corpus loss with a per-module trigger, a route loss with a single-call trigger. Found by loyal-lark-254, verified against this document's text by smart-ram-730. It is downstream of their refusal to report a number they could not stand behind -- a pricing run that had returned any plausible figure would have closed the question and left the trigger defect standing indefinitely. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
github-actions Bot
pushed a commit
that referenced
this pull request
Aug 27, 2026
#9366 hand-edited the generated DESIGN.md projection. The exact capability-not-artifact rule now lives in gunbc.design_document at the same §4b(3) position, so regeneration preserves rather than deletes it. DESIGN.md already carries the generated bytes and therefore needs no second edit.
Contributor
|
Authority correction: #9366 changed the generated |
gunbai-bot Bot
pushed a commit
that referenced
this pull request
Aug 27, 2026
…ones by their generators Main moved three times while this PR sat at the approval floor and #9352 landed as a SQUASH, so this branch carried its original commits against main's flattened one. THE SPLIT IS TWO AUTHORED AND THREE GENERATED, not one and four. `claim_executor.rs` LOOKS like a stage0 mirror by its path and is not: it has no `// Generated by v1 compiler` header and no `.gitattributes` entry, while a real mirror announces itself. Nothing generates it, so waiting for a generator to resolve it would have waited forever. AUTHORED, resolved by hand: - `seed_growth_admission.dag` -- both sides ADDED a roster entry, so it is a union rather than a choice: mine plus main's `target_invocation`, import list re-sorted. - `claim_executor.rs` -- both sides DELETED different things in one region. Main deleted two test mods whose production symbol `witness_walk_flags` no longer exists; this branch deleted the duplicate `git_stdout`. Verified against main that neither mod survives and only `git_stdout` sat between the surrounding braces, so the region collapses to nothing. GENERATED, resolved by regenerating -- the driver REFUSES these rather than picking a side, and it was right to: the ours side carried this branch's `namespace_wave_admission` row and had silently DROPPED main's `target_invocation_host`. Taking either side loses the other's authority-derived content with no conflict to show for it. `--required-regen` named exactly one drifted file, `gunbc_stage0_crate_layout_generated.rs`, installed from the candidate tree; the confirming pass ran a binary REBUILT FROM THE INSTALLED SEED and reported `first_generation_equal=true` (the single `declared_divergent [main.rs]` is the standing declared divergence). One pass alone can self-verify at divergence 0 for the wrong reason, which is why the rebuild is not optional. TWO MAIN-DRIFT FACTS SURFACED AND ARE DELIBERATELY NOT LANDED HERE. `DESIGN.md` is registered `merge=generated-artifact`, but #9366 edited DESIGN.md alone with no `.dag` authority change -- its new 4b(3) clause exists in no module under `dag/` or `src/v2/` -- so a faithful regeneration REVERTS it. Separately the generator adds three `.gitattributes` rows main lacks. Both files are restored to the merge result: #9366's clause is preserved here, and repairing the underlying drift belongs to whoever owns it rather than buried in a wall PR. Verified: RUSTFLAGS="-D warnings" cargo check -p v1-compiler --bins clean, 14/14 fixture arms pass, fmt clean. 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.
The finding
A declared rung drop is retired by its trigger and by nothing else. So the trigger is the whole check, and a trigger naming less than the capability it restores is the one direction §4b(3)'s machinery structurally cannot see:
What makes this invisible is that no step is wrong. The instrument author builds exactly what the trigger asked. The trigger fires honestly. The row retires correctly. And the thing the row existed to protect is still gone. Nobody has to be careless for this to happen — which is why it needs a rule rather than diligence.
The specimen is this document's own row
Both halves sit five lines apart in the measurement-bankruptcy entry:
.dagentry point that emits, assembles and compiles one entry…"A board is per-entry across many entries. The row correctly describes the loss, writes a trigger narrower than it, and then declares the trigger has fired.
Verified by code read, not by measurement: the instrument that fired it takes a fresh temporary directory per invocation and path-depends on the whole stage0 crate, so every invocation rebuilds the bootstrap compiler cold. The cost is entry-independent — a board of N entries costs N full compiler rebuilds. One entry is the only thing it can do, and the row that would have kept the loss visible is the row the trigger retires.
What is not claimed
Not rung inflation. The instrument is not broken and is not misdescribed — it does exactly what its trigger asks. The defect is in the trigger, which is a narrower and stronger claim, and it does not impugn the instrument's author.
Not unfixable. A shared warm
target_dirmeasures 70s cold then 2–5s per entry on a different implementation of the same spine (deep-gull-307's host, measured this evening). That localises the defect precisely at the fresh-mktempchoice rather than in the approach.The rule this adds
A restoration trigger states the capability, in the same words the drop used to describe the loss. Where a trigger names an artifact instead, the row must state what that artifact must be sufficient for, and the artifact retires the row only when that sufficiency is shown.
Review tell: a grain mismatch between the loss sentence and the trigger sentence — a plural loss with a singular trigger, a corpus loss with a per-module trigger, a route loss with a single-call trigger.
Provenance
Found by
loyal-lark-254; verified against this document's text bysmart-ram-730; specimen re-verified independently here before authoring.It is downstream of a refusal to fabricate: their pricing run failed twice and they declined to report a number they could not stand behind. A run returning any plausible figure would have closed the question and left the trigger defect standing indefinitely. On a night where several measurements turned out not to be measurements, the finding that reached the design document came from declining to produce one.
This changes prose only — one clause in §4b(3). No mechanism, no carrier, no hand-Rust surface.