# 2026-07-31 — response to the CB-RES-0004 challenge **All twelve findings conceded.** Nothing was defended on its facts, because I re-derived every load-bearing claim myself and the reviewer was right on each one. Two findings the reviewer explicitly marked as *read-only, not mutation-tested* are now mutation-proven below — that was the right bar to set and it deserved to be met rather than argued around. The survey is withdrawn and rewritten. What follows is what changed and, more importantly, the one thing the round produced that neither the survey nor the challenge had. --- ## The mutation tests the challenge asked for > *"A response that disputes findings 1 or 2 should be answered with a > mutation test, not with re-reading."* — challenge, sampling limit 2 I am not disputing them. I ran the mutations anyway, because a conceded finding backed by evidence is worth more to the next reader than a conceded finding backed by agreement. **Finding 1 — AM-7.** Changed the fold's genesis from `fresh(42)` to `fresh(999)`, so the 100k-event log is replayed into a completely different starting state: ``` MUTATION: fold starts from fresh(999) — a different genesis state. test replay_probe::replay_100k_events_is_linear_and_fast ... ok test result: ok. 1 passed; 0 failed ``` **The test passes.** AM-7's `hash-identical` clause detects nothing at all. The reviewer read this correctly from source; it is now demonstrated. **Finding 2 — K9.** Changed `Snapshot::take` to discard the `EventSeq` it is handed and store `EventSeq(0)`, destroying the half of K9 that says a snapshot is "the full aggregate **+ the EventId it includes**": ``` MUTATION: Snapshot::take DISCARDS its EventSeq and stores 0. test tests::snapshot_roundtrip ... ok test result: ok. 3 passed; 0 failed ``` **The test passes.** K9's `through` field is unverified. ## What the round actually produced The challenge's finding 4 says the root cause is cheaper than the survey claimed: extend AM-1b's spec→code link to every numbered spec and every crate, and K10/K14/K18 fall out in one line. That is correct and it is adopted as Option E, first step of the pass. **But findings 1 and 2 prove Option E is not sufficient, and the reviewer did not connect their own findings.** Sort the seven defects this round surfaced by whether a name-based check would catch them: | defect | named in code? | Option E catches it? | |---|---|---| | K10 replay bundle | no | **yes** | | K14 commit window | no | **yes** | | K18 bench-from-scenarios | no | **yes** | | K9 snapshot `through` | **yes** | no | | K11 durable format | **yes** | no | | AM-7 hash-identical | **yes** | no | | AM-11 conformance suite | **yes** | no | Four of seven are named in the source and unasserted. So: > **Every coverage instrument in this project counts names. None counts > assertions.** M-D1-COV counts `covers:` tags. M-D1-LNK counts rule-ID > strings in source. Both answer "is this rule mentioned?" and neither > answers "does anything fail if this rule is violated?" That is the correct root cause. It is neither the survey's story ("coverage scope is too narrow" — true but shallow) nor the challenge's ("the link check is pointed at one file" — true but only covers 3 of 7). It also subsumes the project's oldest error class: all five prior harness-does-nothing instances, plus AM-7 and K9 today, are the same shape — **the name is there, the assertion is not.** The instrument this implies is **mutation**, not another grep. A rule is covered when breaking it breaks a test. That is expensive to do exhaustively and cheap to do on the acceptance rows, which is exactly where every serious error in this project has been. ## The loop change this earns The challenge's sampling limit 6 is the sharpest paragraph in the document: > *"I found finding 1 only because a test had 'replay' in its name and I > opened it out of curiosity — not because any systematic step pointed > there. 'Reproduce the number independently' is satisfiable by re-running > `make coverage`, which is exactly what does not find this class."* Conceded and adopted. InnerLoop §Step 2's "numbers" row currently says the reviewer must *reproduce the number independently*. Re-running the command that prints it satisfies that wording and finds nothing. The row must require **reading the assertion behind the number, and mutating it** — state what the harness would report if the property were false, then make it false and check. The reviewer notes this is n=1 evidence for a process claim. It is n=2: CB-WP-0002's dedup blind spot had the same structure — a verification step that re-ran the author's method and inherited the author's blindness. The fix there was an assertion over all data at execution time; the fix here is mutation. Both replace *re-derivation* with *adversarial execution*. ## Finding-by-finding disposition | # | severity | disposition | |---|---|---| | 1 | BLOCKING | conceded, **mutation-proven**. AM-7 correction enters the pass scope; `evidence/CB-EV-0001` needs a correction note. HDN instance #6. | | 2 | BLOCKING | conceded, **mutation-proven**. §2.4 is zero of three on the acceptance criterion, not two of three. | | 3 | BLOCKING | conceded fully. The prediction was unfalsifiable *and* already determined (0 of 18). Replaced with a prediction that names its refuting outcome. | | 4 | BLOCKING | conceded. Rescoped to K10/K14/K18; Option E adopted as step one — **and shown above to be insufficient**, which is the survey's real justification, not the one it gave. | | 5 | MATERIAL | conceded. "A parameterization, not a rewrite" withdrawn. The K-rule numerator must come from named executable assertions, not `covers:` tags. `AGGREGATE` becomes a list. | | 6 | MATERIAL | conceded. The AM-11 misreading is deleted. The real overclaim — M-D4-SWAP requires "the same conformance suite" and no suite exists — replaces it, and is a **stronger** basis for the port argument than what I wrote. | | 7 | MATERIAL | conceded with a clarification the survey owed: the **durable log (K11) is shipped-runtime** and AM-4a applies; the **bundle writer (K10) is dev-only** behind the `scenarios` feature and AM-4b applies. The survey wanted it both ways without saying so. Option C is now rejected on simplicity for the log, and the headroom claim is dropped for the bundle. | | 8 | MATERIAL | conceded. All four controls adopted verbatim, including the two negative controls I had not thought of (truncate-by-one-byte, mutated seed). | | 9 | MATERIAL | conceded. The exit-code path is named, and the new denominator gets the zero-rules positive control the existing arm already has. | | 10 | MATERIAL | conceded. The sweep is folded in with AM-10 as lead example. **AM-10 is the better instance than AM-1**: a K6 determinism lint reported under a D4 leak row, over a crate that does not exist. | | 11 | MINOR | conceded. D2's estimate corrected: `Pass` extended, `RunOutcome::Failed` restructured, initial snapshot captured, log plumbed out of `execute`. | | 12 | MINOR | conceded. "The number is not false" deleted. M-D1-COV is defined over "numbered spec rules"; the instrument is non-conformant with its own metric definition and `58/58 (100%)` is a wrong answer to the question the metric asks. | ## One thing the challenge could not have found Running its mutation tests surfaced a limit in **CB-WP-0004 T01**, closed two hours earlier: ``` $ cargo test -p games-ground ... /bin/bash: line 22: cargo: command not found ``` `make env-test` proves every *tool* and every *make target* runs from any directory with no cargo on PATH. It does not put cargo on the agent's interactive PATH, so an ad-hoc `cargo` invocation still fails. T01's evidence claimed environment friction went from 85 turns to 1; that number stands for the measured window, but the fix is narrower than "no environment setup", and CB-EV-0003 should say so. Small, and recorded rather than quietly patched, because CB-WP-0004 T05's whole finding was that tooling only recovers capacity when the manual path stops existing — and here it did not stop existing. ## Approval status **Not approved.** The survey is withdrawn and rewritten as `research/CB-RES-0004` v2 incorporating all twelve findings, the corrected root cause, and a rescoped pass that now includes AM-7, K9, K14, K18, AM-10 and AM-11 — none of which were in the original scope. The review cost is recorded in the pass evidence. On the two prior passes this step cost $0.66 and $1.11 and each time found an approval-blocking defect. This time it found four, one of which invalidates a committed `met` verdict in `evidence/CB-EV-0001`.