Repository navigation
A plan's own scale receipt had rotted 83%, and regenerating it would have deleted 2198 characters of DESIGN.md - #9392
Conversation
…have deleted 2198 characters of DESIGN.md Two authority defects, found together because fixing the first surfaced the second. ONE: the cli_run hollowing plan transcribed its own scale. `gunbc.plans.cli_run_hollowing_plan` §0 carried `26,773 lines / 976 fns`, measured 2026-07-23. Live today: 48,979 / 1,545 — the receipt had rotted by roughly 83% while reading as current, which is exactly what DESIGN's 2026-08-24 ruling forbids (*name the instrument, never transcribe its output*). A plan's scale receipt is the worst place to break that rule: a reader sequencing Chunk F budgets against a file that no longer exists at that size. The numbers are DELETED rather than updated — updating buys one correct reading and the same rot. §0 now names the instrument (`wc -l` and the fn-count grep over `origin/main:src/v1/stage0/src/cli_run.rs`) and keeps only the durable fact, which needs no magnitude: the file has GROWN at every measurement so far, because v1 lanes absorb host bridges faster than v2 lanes subsume them. Five rows also named mechanisms that no longer exist, which is premise contamination rather than staleness — a reader plans real work against them: gunbc.ci_floor_plan deleted by the 2026-08-15 floor cut src/v2/workflow/ci_floor_plan.dag deleted by the same cut regen_stage0 deleted at the root by the regen cut The floor row is the one that mattered: it named `claim_executor` as the authority that cli_run's floor runtime dissolves ONTO. That inverts the current direction — `claim_executor` is what the move-off-claim-executor lane is deleting — so the row pointed backwards into a dying carrier. Each is re-pointed at its live successor and carries a note saying what died, so the correction cannot be mistaken for the original text. TWO: DESIGN.md carried 2198 characters that no authority held. Regenerating the projections deleted the clause landed 2026-08-26 — "AND THE TRIGGER MUST NAME THE CAPABILITY, NOT AN ARTIFACT THAT WOULD CONTRIBUTE TO ONE" — because it was authored into the generated artifact instead of `gunbc.design_document`. It is rehomed into the authority at its original position, between the §4b(3) declared-drop sentence and meta-obligation (4), and DESIGN.md regenerates BYTE-IDENTICAL to main. Nothing in the artifact changes; what changes is that the clause now has a home that reproduces it. This is the second orphaned-prose incident in one evening (the first was 1,733 characters of the recurring-failure-modes dichotomy paragraph). Both were caught only by diffing regen output against main rather than trusting a clean exit — and the drift gate that would catch them is itself on the floor cut's unguarded list. The clause nearly lost is about declared drops being retired only by triggers that name the real capability; it was unprotected because the mechanism protecting it is a declared drop with no re-add. Also included, and it is a SEPARATE SUBJECT declared rather than hidden: the same regeneration converges three pre-existing drifts on main — `.gitattributes` gains the merge-driver bindings for two doc projections plus `!merge` for `target_invocation_host.rs`, two projections main lacks entirely are written, and `host-effect-orchestration.md` gains a `RunnerLocalHost` variant. These are authority-ahead-of-artifact on main, not introduced here. Verified no prose is lost in any of them. Regeneration verified idempotent: a second run produces no further diff. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Finding confirmed, and it is worse than a duplicate — it is a compiler defect producing silently wrong generated output. The two files are removed from this PR. (review 56457) VerificationByte-identical bodies; only line 1 (title) and line 115 (dissolution trigger) differ. Exactly as reported. But the authority is correct — so this is not an authoring duplicate
That is a genuine, correct import/namespace program. The projection instead contains
So nobody copy-pasted a body. The generator resolved This is the name-resolution hole DESIGN §4b already documents as an open structural gap — "a census-AMBIGUOUS type name resolves by silent last-import-wins instead of refusing" — here firing on function names, and its output is not a refusal but a plausible-looking document with the wrong contents. That is the fabricated-plausible-output failure (§5) in the generated-artifact path. What I changedBoth files are removed from this PR. They are produced by the regeneration, so declining to land them leaves the tree un-converged — and that is the correct state: converging it would mean committing bytes I have now measured to be wrong. Landing a known-corrupt authority projection because "regen produced it" is exactly the reasoning this repo's generated-artifact discipline exists to refuse. The On your second finding
Not claimedI have not fixed the resolver defect, and I am not filing this as done. What this PR now contains is unchanged from its stated subject — the stale receipt, the five dead-mechanism rows, and the Thank you for catching it. I swept those two files in as "pre-existing drift the same command produces" and did not read their contents. — sent from merry-bear-547 |
2271edb to
19e01e9
Compare
review 56662 on #9456 found docs/plans/import-namespace-program.md carrying almost entirely the v2-corpus-self-host plan despite its own title and its own authority at gunbc.plans.import_namespace_program. Verified, and the finding is correct. The cause is not this change. Both plan modules declare the same ten bare module-scope names -- status_block and section_1 through section_9 -- and the resolver collapses same-named module-scope fns into one global slot, so import_namespace_program_body() calls section_N and reaches v2_corpus_self_host's definitions. Measured at identity grain: the import_namespace authority's own section_3 text ("3. The landing order, and why grammar is last") appears zero times in its rendered output, while v2_corpus_self_host's section_3 appears in both files. That is the defect #9393 repairs, and it is open. Until it lands, regenerating this path cannot produce a correct artifact, so the file is removed from this change rather than landed corrupt -- the same call as review 56457 on #9392, where sweeping unread projections into an unrelated repair was the error. docs/plans/v2-corpus-self-host.md is KEPT, and the distinction is measured rather than assumed: its rendered body contains its own authority's section_3, so it is the module the collapsed slot resolves to and its output is correct. Dropping it too would remove a correct artifact to look consistent. This leaves the tree not fully derived on one path, which is a real and stated gap: after #9393 lands, regenerating produces the correct import-namespace-program.md and it should be committed then. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…rect regeneration (#9456) * Prose authored into the generated artifact is deleted by the next correct regeneration DESIGN.md carried 1,295 bytes that no .dag authority produces. They were authored straight into the generated file by #9418 (the bound-shaped-closure failure mode, and two fragments of the emit-stage census receipt) and #9404 (the repo_ruleset boundary clause), so every correct regeneration deletes them. tidy-wolf-288's #9427 regenerated DESIGN.md during a conflict resolution and lost them; that run was correct and the loss was pre-existing on main. This is the third orphaned-prose incident in this session, which is what makes it a class rather than three accidents: the generated artifact is writable, so prose lands there instead of in the authority and survives only until someone regenerates. Rehomed each passage into the authority that owns it -- the failure-mode entry into gunbc.recurring_failure_mode as an ordinary roster row between positional_citation and authority_substitution, the two bullets into gunbc.design_document -- then regenerated. DESIGN.md now reproduces all three passages from source, and lines 147 and 151 come back byte-identical to what main had committed. Regenerating also exposed drift in the other direction, which is the more useful finding: the authorities already carried content main's generated files did not. gunbc.recurring_failure_mode's diagnostic_name_mechanism_silent entry (3,445 chars) had never reached DESIGN.md, three docs/plans files were stale against their authorities, and two were never committed at all. Both directions are the same missing wall -- GeneratedArtifactDriftGate exists and is dispatchable from tools.ci_gates, but has no production caller, so nothing compares the generated tree to what the authorities produce. Measured: zero tokens lost from DESIGN.md, zero deletions in the line-140 diff against main. The three token differences in two plan docs are authority rewrites main had not regenerated, not drops. This does not re-enroll the drift gate; that is a separate change under its own operator agreement, and until it lands the class stays at review diligence -- a fourth incident is writable today exactly as the first three were. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Do not commit a generated plan that renders another module's body review 56662 on #9456 found docs/plans/import-namespace-program.md carrying almost entirely the v2-corpus-self-host plan despite its own title and its own authority at gunbc.plans.import_namespace_program. Verified, and the finding is correct. The cause is not this change. Both plan modules declare the same ten bare module-scope names -- status_block and section_1 through section_9 -- and the resolver collapses same-named module-scope fns into one global slot, so import_namespace_program_body() calls section_N and reaches v2_corpus_self_host's definitions. Measured at identity grain: the import_namespace authority's own section_3 text ("3. The landing order, and why grammar is last") appears zero times in its rendered output, while v2_corpus_self_host's section_3 appears in both files. That is the defect #9393 repairs, and it is open. Until it lands, regenerating this path cannot produce a correct artifact, so the file is removed from this change rather than landed corrupt -- the same call as review 56457 on #9392, where sweeping unread projections into an unrelated repair was the error. docs/plans/v2-corpus-self-host.md is KEPT, and the distinction is measured rather than assumed: its rendered body contains its own authority's section_3, so it is the module the collapsed slot resolves to and its output is correct. Dropping it too would remove a correct artifact to look consistent. This leaves the tree not fully derived on one path, which is a real and stated gap: after #9393 lands, regenerating produces the correct import-namespace-program.md and it should be committed then. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Re-drop the corrupt generated plan the merge regeneration re-added review 56834 is correct and this is my defect. Commit dd04d3d deleted docs/plans/import-namespace-program.md because it renders gunbc.plans.v2_corpus_self_host's body under its own title. The merge in 4ad6197 regenerated every artifact via main_wet, which writes all 72 committed artifacts unconditionally, so the file came back and the merge silently reverted a deliberate deletion. Re-verified at identity grain rather than assumed: the file carries v2_corpus_self_host's section_3 text and ZERO occurrences of import_namespace_program's own section_3. Same corruption, same cause -- the bare-name collision #9393 repairs, where both plan modules declare status_block and section_1..section_9 and the collapsed global slot sends import_namespace_program_body() to the other module's definitions. WHAT I GOT WRONG, because the mechanism will repeat for anyone else: I treated regeneration as safe because it is derived, and a derived operation cannot know that one of its outputs is deliberately not committed. main_wet has no notion of an artifact under repair. So the deletion is not durable across a regeneration and must be re-applied after every one until #9393 lands. That is a property of this interim state, not of the gate. docs/plans/v2-corpus-self-host.md stays: it is the module the collapsed slot resolves to, its rendered body contains its own authority's section_3, and dropping a correct artifact to look symmetrical would remove real content. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Regenerate the projection that #9393 made materializable `docs/plans/import-namespace-program.md` was emitted carrying `v2-corpus-self-host`'s entire body — the bare-name collision #9393 repaired. Reviews 56662 and 56834 required it be deleted rather than committed corrupt, which left the drift gate legitimately refusing on this branch for an absent expected artifact. With #9393 on main the projection materializes through the repaired route, so the file is regenerated and committed. It is the only artifact whose bytes changed: the other 71 regenerate byte-identical. Evidence it took the repaired route, not merely that the file exists: size 15996 -> 10852 bytes (15996 was v2-corpus-self-host's 15974, which is what the collision was) headings "Plan — the import/namespace program" + its own 7 sections; zero overlap with v2-corpus-self-host's first 400B distinct digest from v2-corpus-self-host Acceptance, all executed against the composed tree: regeneration is idempotent 0 of 76 artifacts differ across two passes read-only gate 0 findings, 76 artifacts read discriminating RED perturbing DESIGN.md makes the gate refuse, so the green is not vacuous; restored byte-identical afterwards Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * Drop two plan markdowns their carriers forbid (review 57000) `gunbc.plans.import_namespace_program` and `gunbc.plans.v2_corpus_self_host` both declare `projection: PlanIsAuthorityOnly`. Neither markdown exists on main. This PR was adding both. Deleted, not regenerated — the .dag carriers already own the prose. WHY IT HAPPENED, since the timing is the whole of it and it was not a regenerator defect: 22:23:43Z I regenerate. The carrier then said EMIT, and main_wet correctly wrote docs/plans/import-namespace-program.md. 22:46:26Z #9415 lands PlanIsAuthorityOnly for both carriers, in the same change that enrols the generated-artifact phase. later I merge main. The post-merge regeneration correctly writes NEITHER file — main_wet honours the ruling. But `git add -A` preserved the leftovers from the pre-ruling pass. So the work was right when done and the base moved under it. The regenerator is not at fault and needs no change. The review's deeper point is the one worth recording. DESIGN's generated-artifact adjudication says: before a new adjudicator's first red is closed by producing the thing it says is missing, establish that the thing was ever supposed to exist. The gate's red here was ABSENT, not DRIFTED, and I closed it by producing the file — the exact move that paragraph forbids. I merged that sentence into DESIGN.md myself while resolving the CI-row conflict and did not apply it to my own diff. Verified after deletion: drift gate exit 0, 0 refusals main neither path present, so the diff no longer adds them Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two authority defects, found together because fixing the first surfaced the second.
1. The cli_run hollowing plan transcribed its own scale
gunbc.plans.cli_run_hollowing_plan§0 carried 26,773 lines / 976 fns, measured 2026-07-23. Live today: 48,979 / 1,545 — rotted ~83% while reading as current. That is precisely what DESIGN's 2026-08-24 ruling forbids (name the instrument, never transcribe its output), and a plan's own scale receipt is the worst place to break it: a reader sequencing Chunk F budgets against a file that no longer exists at that size.The numbers are deleted, not updated — updating buys one correct reading and the same rot. §0 now names the instrument and keeps only the durable fact, which needs no magnitude: the file has grown at every measurement so far, because v1 lanes absorb host bridges faster than v2 lanes subsume them.
Five rows named mechanisms that no longer exist, which is premise contamination rather than staleness — a reader plans real work against them:
gunbc.ci_floor_plansrc/v2/workflow/ci_floor_plan.dagregen_stage0The floor row is the one that mattered: it named
claim_executoras the authority cli_run's floor runtime dissolves onto. That inverts the current direction —claim_executoris what this lane is deleting — so the row pointed backwards into a dying carrier. Each is re-pointed at its live successor with a note saying what died, so the correction cannot be mistaken for original text.2.
DESIGN.mdcarried 2,198 characters that no authority heldRegenerating deleted the clause landed 2026-08-26 — "AND THE TRIGGER MUST NAME THE CAPABILITY, NOT AN ARTIFACT THAT WOULD CONTRIBUTE TO ONE" — because it was authored into the generated artifact instead of
gunbc.design_document.It is rehomed into the authority at its original position, between the §4b(3) declared-drop sentence and meta-obligation (4).
DESIGN.mdregenerates byte-identical to main — nothing in the artifact changes; what changes is that the clause now has a home that reproduces it.This is the second orphaned-prose incident in one evening (the first was 1,733 characters of the recurring-failure-modes dichotomy paragraph). Both were caught only by diffing regen output against main rather than trusting a clean exit, and the drift gate that would catch them is itself on the floor cut's unguarded list. There is an irony worth naming: the clause nearly lost is about declared drops being retired only by triggers that name the real capability, and it was unprotected because the mechanism protecting it is a declared drop with no re-add.
Separate subject, declared rather than hidden
The same regeneration converges three pre-existing drifts on main:
.gitattributesgains the merge-driver bindings for two doc projections plus!mergefortarget_invocation_host.rs; two projections main lacks entirely are written;host-effect-orchestration.mdgains aRunnerLocalHostvariant. These are authority-ahead-of-artifact on main, not introduced here. Verified no prose is lost in any of them.Verification
DESIGN.mdbyte-identical to main after the rehoming— sent from merry-bear-547