Skip to content

Commit dc280d3

Browse files
docs(tooling): mark the read-seam rule's repaired #8845 exhibit and record the blind-spot measurement (#9004) (#9032)
The "Measured and DELIBERATELY NOT added" block cited `cascadeDeleteRelations` in the present tense as a live fail-open instance. That seam was repaired by #8895, so the header taught a fixed defect as current — and a reader who went to look would find it repaired and could conclude the whole measurement was stale. Comment-only; the gate's behaviour, vocabulary and baselines are untouched. - The exhibit is kept as history with its tense made true, not deleted: it is the evidence for a decision still in force. - Every census number is left at its measured value. The block already anchors them to `origin/main` @ 8664a2c, and that anchor is checkable — the gate answers 66 read seams there and 67 today. Decrementing by hand would be arithmetic standing in for a census. - Each named exhibit was re-read individually rather than assumed to have moved together: `searchAll`, `findReferencesToMeta` and `checkGovernance` (#8906) are unchanged and still live. - Records the two-direction measurement: the gate's output is byte-identical before and after #8895, and planting a valued return in the same catch turns it red — so the seam sits in the census throughout and only the shape of the exit decides visibility. Claude-Session: https://claude.ai/code/session_011RB4waLuNbdruCo6X9oobm Co-authored-by: Claude <noreply@anthropic.com>
1 parent 2ce1eb4 commit dc280d3

1 file changed

Lines changed: 53 additions & 6 deletions

File tree

scripts/check-durability-degradation-log-level.mjs

Lines changed: 53 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -539,18 +539,65 @@ const FAILURE_PROPAGATION_SITES = new Map([
539539
// — cuts the red set to 2, but buys that by exempting three REAL instances:
540540
// `searchAll`'s per-object `continue` (hits silently short while
541541
// `totalHits` is still reported as the count), `findReferencesToMeta`, and
542-
// `cascadeDeleteRelations`, where a failed dependents probe skips a
543-
// `restrict` guard altogether. Tuning a criterion until only the instance
544-
// you already knew about is red is how a gate stops meaning anything.
542+
// `cascadeDeleteRelations`, where a failed dependents probe skipped a
543+
// `restrict` guard altogether (repaired since by #8895 — see EXHIBIT
544+
// STATUS below; the other two are unchanged, so the narrowing still buys
545+
// its number by exempting live instances). Tuning a criterion until only
546+
// the instance you already knew about is red is how a gate stops meaning
547+
// anything.
545548
// - Even where the verdict is right, the ACCUMULATOR is often the wrong
546549
// variable: `findReferencesToMeta`'s harm lives in `out`, not in the flagged
547-
// `items`; `cascadeDeleteRelations` and `checkGovernance` have no
548-
// accumulator at all, only a skipped guard. A message naming the wrong
549-
// variable teaches the wrong fix.
550+
// `items`; `checkGovernance` (#8906, still open) — and
551+
// `cascadeDeleteRelations` as it read when measured — have no accumulator
552+
// at all, only a skipped guard. A message naming the wrong variable
553+
// teaches the wrong fix.
550554
// - And the SCOPE is the only thing holding the line: drop the READ
551555
// vocabulary and this shape matches 91 of the 314 catch clauses in these
552556
// three roots.
553557
//
558+
// EXHIBIT STATUS — one instance named above has since been repaired, and the
559+
// numbers are deliberately NOT restated for it.
560+
//
561+
// Every count in this block measures `origin/main` @ 8664a2c and stays at its
562+
// measured value. Re-deriving the census against today's tree would swap a
563+
// reproducible number for an undated one, and decrementing it by hand would be
564+
// arithmetic standing in for a census — the count is not the argument, and a
565+
// number nobody can re-run is worth less than a smaller one anchored to a
566+
// commit. The anchor is checkable: run this gate at 8664a2c and it still
567+
// answers `66 read seam(s)`; today's main answers 67, a seam the scan roots
568+
// gained after that commit and NOT from #8895 (which moves nothing — below).
569+
//
570+
// - `cascadeDeleteRelations` — REPAIRED by #8895. Its dependents probe now
571+
// asks the declared `isMissingTableError` predicate and rethrows the rest,
572+
// so the fail-open `continue` described above is gone. Kept as the worked
573+
// example because its harm is still the clearest of the three to state,
574+
// not because the seam is still open.
575+
// - `searchAll`, `findReferencesToMeta`, `checkGovernance` — UNCHANGED, each
576+
// re-read on its own rather than assumed to have moved with #8895
577+
// (`checkGovernance` is #8906, open; the other two are metadata-protocol).
578+
//
579+
// The conclusion below is unaffected, and #8895 is evidence FOR it twice over.
580+
//
581+
// FIRST, the numbers: this gate's output is BYTE-IDENTICAL before and after
582+
// that fix — `67 read seam(s) … (7 … discriminated) (1 pass … through) (1
583+
// baselined)` on both trees, measured by ablating the fix back to its
584+
// pre-#8895 `catch { continue }` and re-running. And the seam is not merely
585+
// unseen: plant a `return []` in that same catch and the gate names it
586+
// (`engine.ts:10084 (in cascadeDeleteRelations())`, red). So it sits IN the
587+
// census throughout, reported clean while it was broken and reported clean now
588+
// that it is fixed — what decides visibility is the SHAPE of the exit, never
589+
// whether the seam is correct. A real fail-open on an integrity guard was
590+
// found, fixed and landed with nothing in this file able to see any of it:
591+
// surveyed, cleared, harmful — the #6116 shape a fourth time, and the sharpest
592+
// demonstration available that the blind spot is worth closing eventually.
593+
//
594+
// SECOND, the shape of that fix is the direction this block argues for: #8895
595+
// discriminates through a DECLARED predicate rather than a hand-rolled code
596+
// test — the "declared, checkable fact" the paragraph below asks for, applied
597+
// by hand at one seam precisely because no gate could ask for it.
598+
//
599+
// So: one exhibit repaired, no criterion made affordable, no verdict moved.
600+
//
554601
// The honest conclusion is that this shape does not need a looser invention
555602
// criterion. It needs the read-seam rule to acquire its OWN declared
556603
// failure-propagation vocabulary — the log-level rule above has one

0 commit comments

Comments
 (0)