From f077e276e3f005ad1e5c93268e7dafa715679ae5 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 30 Aug 2026 06:05:11 +0700 Subject: [PATCH 1/2] Remove emitter_xdc from the corpus ledger; it passes now The corpus ratchet has been red on master for at least three consecutive runs and the reason is mine. #2897 fixed the string-literal inference bug and `specs/pins/emitter_xdc.t27` began to typecheck. I updated `tools/specs_generate_baseline.txt` and did not know about `docs/reports/suite_expectations.json`, which still listed the spec as expected-to-fail. An UNEXPECTED PASS is a ratchet failure by design: docs/CORPUS-RATCHET.md says "you fixed something. Remove the entry and lower max_entries". entries 151 -> 150 max_entries 151 -> 150 (down, the only direction the cap may move) RATCHET: CLEAN Control both ways: with the entry restored the ratchet reports `UNEXPECTED PASSES: 1` and exits 1; without it, exit 0. This is #2892's lesson one level up. That day I found a fix that had not travelled from one command to its neighbour; here it did not travel from one LEDGER to its sibling. When a repair makes a spec pass, grep every file that names the spec -- not only the ledger you happen to know. Refs #2864 Co-Authored-By: Claude Opus 5 --- ...edger-i-did-not-know-about-left-stale-by-my-own-fi.md | 8 ++++++++ docs/reports/suite_expectations.json | 9 +-------- 2 files changed, 9 insertions(+), 8 deletions(-) create mode 100644 docs/now/2026-08-30-a-second-ledger-i-did-not-know-about-left-stale-by-my-own-fi.md 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. diff --git a/docs/reports/suite_expectations.json b/docs/reports/suite_expectations.json index 92cc3e2590..373b3eb08d 100644 --- a/docs/reports/suite_expectations.json +++ b/docs/reports/suite_expectations.json @@ -2,7 +2,7 @@ "schema_version": 1, "generated_by": "t27c suite --bless-expectations", "max_gate_failures": 2, - "max_entries": 151, + "max_entries": 150, "entries": [ { "path": "specs/account/repo.t27", @@ -1123,13 +1123,6 @@ "issue": 1959, "expires": "2026-11-30" }, - { - "path": "specs/pins/emitter_xdc.t27", - "phase": "typecheck", - "reason": "typecheck already failed here; #2854 made the exit code carry the printed verdict, so the ratchet can see it. `cannot assign to immutable array element` -- the spec assigns into an array bound immutably. Not new, newly visible.", - "issue": 2852, - "expires": "2026-11-30" - }, { "path": "specs/pins/parser.t27", "phase": "parse", From 134ca567dc37d071579fda56ce3961704214ba3d Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 30 Aug 2026 06:05:46 +0700 Subject: [PATCH 2/2] skill: the second ledger Refs #2864 --- .claude/skills/ci-gates/SKILL.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/.claude/skills/ci-gates/SKILL.md b/.claude/skills/ci-gates/SKILL.md index 310eca8dd9..07d7b891f5 100644 --- a/.claude/skills/ci-gates/SKILL.md +++ b/.claude/skills/ci-gates/SKILL.md @@ -8846,3 +8846,28 @@ pattern visible in a single glance. **Fix the location before analysing the population.** It costs a line and it converts every later step from guessing to reading. + +## 354. 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.