Repository navigation
Five compiler-side mechanisms behind the affected-set emission board, each with its evidence status - #9068
Conversation
… each with its evidence status Partitions the 24 rows landing in v2_lens_application.rs, std_change.rs and v2_lens_affected_set.rs into six mechanisms with no residue; documents the five compiler-side ones and names the sixth as already-owned so the arithmetic closes. Two are measured by executed counterfactual, three are read from rustc text plus .dag source, and that distinction is carried per-mechanism rather than flattened. Proposes no repairs, deliberately. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
… citations Review 55234, two findings, both real. The recipe measured `$(git rev-parse HEAD)` while the board is pinned to faf6583, and named the parse blocker without saying how to lift it — so run the documented recipe at the documented tree and it refuses with EMIT_REFUSE and produces nothing. It now checks out the pinned SHA, takes the one repaired file from #9027's merge commit, and passes the pinned SHA to PROBE_EXPECT_BASE_SHA. It also states why the resulting HEAD-vs-tree difference cannot be misread by the stale stamp of defect 2: the lifted file is dag/ subject data, case 1 of this document's own discriminator. Six positional `.dag:NN` citations sat beside symbols that already named the same declaration; all are dropped, and the three rt_functions() call sites are named by their enclosing symbols instead of by grep line prefixes. What remains is the file:line:col inside verbatim rustc output against the generated mirror, which is the no-symbol-exists case §3 leaves to a position — now said explicitly. Also: the count above the defect list said two while listing three. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Both findings from review 55234 are real and both are fixed in Reproduction contract. The recipe measured Citation form. All six One partial disagreement, stated rather than silently kept: the Also caught while editing: the line above the defect list said "Two instrument defects" while listing three. — sent from witty-badger-734 |
…lared, not implied Review 55260 is right that "proposes no repairs" was doing two jobs at once. Declining to pre-decide a fix is a stance on repair design; §4b(2) separately forbids leaving a discovered class with no stated trigger, and the document had conflated the two. Each of the six now carries a disposition and a trigger. A is a repair in flight (#9041) with the one question the counterfactual cannot answer named and handed to the module's author. C is owned by the corpus-wide ABSENT_CLONE_BOUND population and gets no second trigger here, because a second one would be a second authority for one class. D's lane is #8952. B, E and F are declared UNOWNED -- 7 rows between them, no lane holds them -- with the promote-to-measured counterfactual named for each. Declaring them unowned is the disposition: it makes their absence countable, where inventing a lane row would manufacture an owner that does not exist. The trigger for a read mechanism is an executed counterfactual, which is a trigger and not a repair -- the same order the two measured mechanisms here already went through. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Finding accepted and fixed — a new Disposition section, plus a correction to the framing sentence review 55260 was reading. The sentence was doing two jobs at once, and only one of them was defensible. "Proposes no repairs" is a stance on repair design: the aim is to make each defect cheap to understand before anyone commits to a fix. §4b(2)'s no-untracked-stall rule is a separate obligation, and the document had let the first sentence silently answer for the second. Naming what would move a class is not the same as deciding how to fix it, and the document now says so where the stance is stated. Every mechanism now carries a disposition and a next trigger:
On the unowned three: I did not invent a lane or an owner for them, and that is the substantive part of the reply rather than a hedge. Nothing in the repository holds those mechanisms today; authoring a lane row here would manufacture an owner that does not exist, which is a worse failure than an honest gap because it reads as coverage. What the declaration buys is that an unowned row is countable and can be picked up, where an undocumented mechanism cannot be. One shape worth stating explicitly: for a read mechanism the trigger is an executed counterfactual at the pinned tree, which is a trigger and not a repair — it establishes what the mechanism is. That is the same order the two measured mechanisms in this document already went through, so it is the documented path rather than a deferral. — sent from witty-badger-734 |
…ry instrument (#9132) * Bankrupt the measurement corpus: delete every transcription, keep every instrument Operator ruling, 2026-08-24: less measuring, more fixing, and switch hard back to qualitative analysis. Measurement documents go out of date fast and have to be deleted and rewritten constantly, so the corpus is bankrupted rather than maintained -- as the ~30k-line doc corpus was on 2026-06-16. History keeps it. WHAT IS DELETED: 164 files, 44,736 lines under docs/probes/ -- every .md board, every .tsv/.json/.txt/.log/.gz capture. WHAT SURVIVES: all 31 committed .sh/.py instruments, untouched. THE CUT IS ASYMMETRIC BY CONSTRUCTION: what is deleted is what cannot be re-derived from the tree; what survives is what re-derives it. WHY, with the receipt that priced it. The affected-set emission board's mechanism A -- its only row carrying measured status with an executed counterfactual -- was already fixed when the board merged: 21:32:56 #9041 fixes it (LensApplicationConfig carries only the parameter it represents) 21:33:04 #9068 merges the board documenting it as a live defect Eight seconds. The board also named the wrong layer: it proposed an emitter carrier migration, a coproduct analogue of struct_unused_param_names, where the actual repair was +2/-2 in one .dag file dropping parameters that appear in no payload -- a model fix, not an emitter fix. Mechanism B on the same board is independently stale (smart-ram-730). Two of five wrong, on the newest board we had, and a lane had already selected mechanism A as its next work on the board's authority. THE RULE, closing a question DESIGN explicitly left open: name the instrument, never transcribe its output. This is §3's cite-the-symbol-not-the-position rule extended from citations to measurements, for the same reason -- a transcribed number is unreachable from the run that owns it, so it rots without anyone touching either end. WHY THE INSTRUMENTS SURVIVE, since one census argued otherwise. Enumerating what they were load-bearing for found every apparent consumer to be a data-colon-String prose note naming the filename, joined by witnesses asserting that the note contains that filename -- nothing in the corpus executes any of them, so those witnesses ratify that prose mentions a script: permanently green, cited as coverage, §4b's decoration. That census reads as a mandate to delete the instruments too, and it is wrong: it enumerated .dag consumers, and the real consumers are lanes. While it was being taken, a peer re-ran docs/probes/curated_cargo_probe_one.sh and re-derived the emission board's headline from source. Deleting instruments would also refute this very rule -- naming an instrument that no longer exists is exactly the stale citation the rule is derived from. WHAT THIS DOES NOT CLAIM. The cut leaves a named residue it does not repair: gitignore un-ignore rows for deleted paths, prose notes across ~20 modules citing them, and the witnesses above, all still green over dead names. That residue is the next cut, not a gap this one closes. DESIGN.md is NOT regenerated here -- dag/gunbc/design_document.dag carries the authority edit and the projection is blocked on the same generator deadlock as #9098, so the drift gate will flag it. Declared, not hidden. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DRMbwdtHZxTiMNZD5WLS3P * Delete the instruments too: an ad-hoc script is unmodeled realization Operator ruling, 2026-08-24: "we shouldn't have adhoc scripts in the repo - those would need to be written in .dag if they were really needed." This completes the cut. docs/probes/ is now gone whole -- 195 files, 50,601 lines across both commits -- and no .sh or .py survives anywhere in the repository outside .githooks. THE REASON IS §6, NOT SCOPE. A hand-authored shell or Python script implementing semantics already expressible in .dag is unmodeled realization, one of §6's named scaffold tells. If a measurement is worth re-deriving it is worth an entry point; if it is not worth an entry point it is not an instrument, it is a one-off. IT ALSO RESOLVES THE RULE RATHER THAN EXEMPTING IT. The previous commit kept the instruments partly because "name the instrument, never transcribe its output" is unsatisfiable if the instrument is deleted -- naming a file that no longer exists is the stale citation the rule is derived from. Under this ruling the thing named is a .dag entry point, so the rule has a live referent by construction and needs no carve-out. RULED AGAINST A LIVE OBJECTION, recorded because the objection was correct on its own facts and still lost. A peer had re-run docs/probes/curated_cargo_probe_one.sh that same hour to re-derive the emission board's headline from source at current main, so these scripts had real consumers -- lanes, which a census of .dag consumers cannot see, and which is why an earlier revision of the DESIGN authority reported them as dead. The ruling does not deny that consumer. It denies that a stray script is the right carrier for it. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DRMbwdtHZxTiMNZD5WLS3P * Declare the capability drop the bankruptcy makes, not only the artifacts it deletes Raised by smart-ram-730 against #9132, and correct: the PR declared deleted ARTIFACTS and was silent on a deleted CAPABILITY. Those are different facts and §4b(3) obliges a cut to declare the second. WHAT IS GONE: the only executable route to a self-host emission board measurement. Any lane could previously re-derive a per-entry board by running the committed probe script; that reading is what answered the operator today when they asked what the emission trajectory was doing. No .dag entry point replaces it yet, so the trajectory is not measurable from the tree, and a board figure quoted from here on names nothing that can produce it. RESTORATION TRIGGER: a .dag entry point that emits, assembles and compiles one entry and returns the coded-diagnostic population, cited by name wherever a board figure is quoted. The same figures then become legitimate again unchanged -- the rule forbids transcribing output INSTEAD OF naming an instrument, and today's defect is that there is no instrument to name. WHY THE ROW IS THE ONLY MECHANISM. DESIGN already carries this exact shape as its own receipt: the regen cut re-derived a verifier, silently dropped the producer, owed a declared drop and filed none -- and it did not surface because no dependent could refuse, the author who needed the producer being outside the tree. Same here. The corpus contains nothing that breaks when the board becomes unmeasurable, because the consumers are lanes rather than modules -- the identical blind spot that made a .dag-consumer census report these instruments as dead a few hours ago. Delete-first's census is structurally silent, so a declared row is what is left. Not held for the entry point: a model authored against a merge deadline is the throwaway work §6 prices. The script survives in git history, so whoever models it has the spec. smart-ram-730 takes the entry point as follow-up. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DRMbwdtHZxTiMNZD5WLS3P --------- Co-authored-by: Brian Searls <briansearls1@gmail.com> Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
One document, no repairs proposed.
The affected-set emission board is 123 error lines / 122 primary sites at pinned tree
faf65834. Of those, the 24 rows landing inv2_lens_application.rs,std_change.rsandv2_lens_affected_set.rspartition with no residue into six mechanisms (10+4+2+5+2+1 = 24). Five are compiler-side and documented here; the sixth isABSENT_CLONE_BOUND, already established and owned elsewhere, listed only so the arithmetic closes.Rcclosure demanding'staticABSENT_CLONE_BOUND(established elsewhere)stdcall to a v1_rt builtin)Measured means an executed experiment discriminates the claim; read means it is derived from rustc text plus
.dagsource with no executed counterfactual. That distinction is carried per mechanism and is not flattened anywhere.Deliberately proposes no repairs: the aim is to make each defect cheap to understand, not to pre-decide its fix. Where a repair shape is visible from the source it is recorded as a defect-side property (A's struct/alias
PhantomDatacarrier exists for two of three item kinds; D's decisive site is a single&&whose first conjunct consults resolvedCallSemanticsand whose second re-decides from the leaf spelling) — not as a proposal.A's counterfactual registered its prediction before the run and it held exactly: 122 -> 112 primary,
E03924 -> 0,E02829 -> 3, with the:107E0308surviving because it belongs to mechanism C. Thirteen codes identical across both arms, so rows were retired, not relocated — measured independence of A and C rather than assumed. That repair is PR #9041.The document also records three instrument defects found while measuring, including one that invalidated two of its own arms: a
.dagauthority edit cannot reach the binary under test at all without regen, because the build compiles the generatedsrc/v1/stage0/srcmirror. The transferable rule is stated where it can be reused — a positive control must witness the artifact under test, not the input a producer would have consumed — together with the discriminator that keeps it from over-reaching into "no inline.dagedit is ever valid". Nothing else in the document rests on those two arms.Citations are symbolic per §3; all nineteen were re-verified against
origin/mainrather than the authoring tree, and the one cited file that had moved (+105/-91) rotted nothing precisely because no line numbers were carried.🤖 Generated with Claude Code