rule 27: a ratchet is meant to break when the corpus grows; scope controls by explicit list

This commit is contained in:
alex 2026-09-08 19:33:16 -04:00
parent 1893751ffa
commit 6e34c72906
2 changed files with 21 additions and 0 deletions

View file

@ -363,3 +363,4 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
| k=6 is NOT closed - a seventh value appeared | verify | backlog | — | 0% | 2026-09-08 | **Player 512's research target `282` is a value no prior run produced, and nobody has mapped it to a tech name.** Lane L4's XNC arm had k = 6 with four observed; lane CB's pinned runs produced a fifth distinct value. So Rung C-set's "we can name all k" remains **TO PROVE**, exactly as the resolver ruled - and the outstanding `BIO_GnMod` arm is still unidentified. The pinned-seed sweep the resolver specified (quit-to-menu/reload advances the pin table, no relaunch needed) is the way to enumerate the set under known seeds |
| CB's own gaps, stated | verify | backlog | — | 0% | 2026-09-08 | **C2 (the ModCount trap set) not run** - RB's replay reaching ModCount = 24 with zero residual is a STRONGER check than the trap multiset, so per-EIP attribution stays an open cheap hour with `shim.cfg.cbtrap` staged. **C4 (a second unpinned turn-1 run) not run** - superseded by the pinned triple, so P5 as written stays unresolved and there is one unpinned turn-1 stream, not two |
| two more lab facts | meta | verified | high | 100% | 2026-09-08 | From lane CB: **the vmwatch wall CACHES FRAMES FOR 5 s**, which cost it a misdiagnosis of four working clicks before it spotted the staleness - if you are driving a guest and watching the wall, the wall lags you. And **chained click batches via `schtasks /Run` can silently drop one** - drive one click per call. Both in verify/harness/cb/README.md, joining L2's real-mouse-motion and L4's move-then-click |
| CORPUS 11 -> 19 SAVES, and the ratchet broke as designed | verify | backlog | — | 0% | 2026-09-08 | The save corpus grew from 11 to 19 in one evening as lanes finally manufactured workloads nobody had. **Verified clean on the original 11** (mars_stream_save 1/1); every failure comes from saves added today - L3's trade-route games, which reached LATER TURNS while integration ran, plus CB's captures. Newly opaque and itemised: **`<rest:prep>` 704, `TacReports` 369, `Lay` 79, `<rest:trdmgr>` 9, `fwarn` 3** - and `trdmgr` is THE TRADE MANAGER, the container three lanes could not get to fill. Named coverage 97.6% against a 99.99 ratchet. **DO NOT MOVE THE RATCHET** - the reader is sound on all of them (round trip tree-identical, typed-identical), it just does not NAME the new items. Now rule 27. INTEGRATOR NOTE: my first control excluded `*traderoutes*` by name and still failed, which briefly looked like CB's merge was at fault - **scope a control by an explicit list, not a name filter** |

View file

@ -352,3 +352,23 @@ three AI empires visibly varied, which looked like a tiebreak among near-equal c
all three streams differed every run; two empires never reach the seed-sensitive code path at all.
Before reasoning from *which* items varied, establish whether the others were even exposed to the
mechanism.
## 27. A ratchet is meant to break when the corpus grows — do not move it, and scope your control
The save corpus went from 11 to 19 in one evening as lanes finally manufactured workloads nobody had
before. The coverage ratchet broke immediately: named coverage fell to 97.6% against a 99.99 bar,
because the new saves carry content no schema names — `<rest:prep>`, `TacReports`, `Lay`,
`<rest:trdmgr>`, `fwarn`.
**That is the ratchet working.** The reader is sound on every one of them (`round trip: tree
identical, typed identical`); it simply does not *name* the new items. The temptation is to lower the
bar so the suite goes green. Type the content instead — a ratchet you move on contact is a
decoration.
Two integrator lessons from the same episode:
- **A new save can break a gate without any code changing.** Before blaming a merge, run the suite
against the corpus as it was. Both times this happened the merge was clean.
- **Scope that control by an explicit list, not by a name filter.** My first control excluded
`*traderoutes*` and still failed, which briefly looked like the merge *was* at fault — the lane had
added more saves under other names while I worked. Pin the control to the exact set you mean.