diff --git a/.claude/skills/ci-gates/SKILL.md b/.claude/skills/ci-gates/SKILL.md index 67263e0095..c2cd744c92 100644 --- a/.claude/skills/ci-gates/SKILL.md +++ b/.claude/skills/ci-gates/SKILL.md @@ -8914,3 +8914,28 @@ build". The number is not wrong. Its population is. refuse rather than answering when they cannot: a lakefile with `globs`, a root that reaches only itself, a stale crate list. Zero stranded files has to mean the tree, never the parser. + +## 355. The second ledger + +A fix made `specs/pins/emitter_xdc.t27` typecheck. I updated +`tools/specs_generate_baseline.txt`, ran every gate I knew, shipped, and left +the corpus ratchet **red on master for three consecutive runs** -- because +`docs/reports/suite_expectations.json` still listed the spec as +expected-to-fail, and an UNEXPECTED PASS is a ratchet failure by design. + +This repository has at least four ledgers naming specs by path: + +``` +tools/specs_generate_baseline.txt does it generate +docs/reports/suite_expectations.json corpus ratchet, per phase +scripts/ci/test-baseline.txt bootstrap tests +tools/conflict_markers_baseline.txt files carrying markers +``` + +**When a repair makes a spec pass, grep every file that NAMES that spec.** Not +the ledger you know about -- all of them. `git grep -l ` is the whole +check and it takes a second. + +It is the same shape as the fix that did not travel from one command to its +neighbouring function, one level up: there the sibling was a function, here it +is a file. Both were invisible because the gate I ran was green. diff --git a/docs/now/2026-08-30-a-second-ledger-i-did-not-know-about-left-stale-by-my-own-fi.md b/docs/now/2026-08-30-a-second-ledger-i-did-not-know-about-left-stale-by-my-own-fi.md new file mode 100644 index 0000000000..d62acb360e --- /dev/null +++ b/docs/now/2026-08-30-a-second-ledger-i-did-not-know-about-left-stale-by-my-own-fi.md @@ -0,0 +1,8 @@ +# NOW -- A second ledger I did not know about, left stale by my own fix (2026-08-30) + +## A second ledger I did not know about, left stale by my own fix (Refs #2864) + +- The corpus ratchet has been RED on master for at least three runs, and the reason is mine: #2897 made specs/pins/emitter_xdc.t27 typecheck, I updated tools/specs_generate_baseline.txt, and docs/reports/suite_expectations.json still listed it as expected-to-fail. UNEXPECTED PASS is a ratchet failure by design. +- Entry removed and max_entries lowered 151 -> 150, which is the direction the cap is allowed to move. RATCHET: CLEAN. +- Control both ways: putting the entry back reproduces 'UNEXPECTED PASSES: 1' and exit 1; removing it gives exit 0. +- This is the same lesson as #2892 -- a fix that does not travel -- one level up: I checked the sibling FUNCTION that day and not the sibling LEDGER. When a repair makes a spec pass, grep every file that names it, not just the one you know.