Re-measure after wave 3, and write down the two kinds of gap it had to separate #191

Merged
JMR-dev merged 1 commits from docs/coverage-wave3-recovery into main 2026-09-02 05:06:34 +00:00
JMR-dev commented 2026-09-02 04:46:54 +00:00 (Migrated from github.com)

Docs only. Recovers #189, which reported merged and did not reach main.

What happened

#189 was opened against test/concat-engine-seam and — unlike #184 through #188 — never retargeted to main before merging. So it merged into a branch that had itself already been merged and left behind. GitHub returned merged, the PR shows MERGED, and none of the content was on main: CLAUDE.md there still read 88.9% / 546 tests.

This is precisely the trap CLAUDE.md documents and #160 paid for. git merge-base --is-ancestor <merge-sha> origin/main caught it on the first try, which is the whole argument for that line being non-optional — every other signal said success.

One thing the existing entry does not say, and now would: the auto-retarget it describes belongs to GitHub's stacking feature. A stack opened with plain gh pr create --base <branch> retargets nothing, so every PR has to be moved by hand — and missing one is invisible until you check ancestry. I missed exactly one out of eleven.

The numbers

Re-measured on this tree with --rerun-tasks rather than inherited from the branch they were taken on, because this entry's own rule is to re-measure before quoting:

584 JVM tests in 87 classes, 0 failures
LINE    2183/2352 = 92.8%
BRANCH  1091/1342 = 81.3%

Same figures, earned again.

The content

Unchanged from #189: the wave-3 entry, the coverage-gap vs assertion-gap distinction, the two vacuous tests the mutation rule caught in flight, the mirror trap of a semantically-equivalent mutation, the three items that came back not as their tickets described them, and both denominator moves stated separately from the numerators.

🤖 Generated with Claude Code

Docs only. **Recovers #189, which reported `merged` and did not reach `main`.** ### What happened #189 was opened against `test/concat-engine-seam` and — unlike #184 through #188 — never retargeted to `main` before merging. So it merged into a branch that had itself already been merged and left behind. GitHub returned `merged`, the PR shows **MERGED**, and none of the content was on `main`: `CLAUDE.md` there still read 88.9% / 546 tests. This is precisely the trap `CLAUDE.md` documents and #160 paid for. `git merge-base --is-ancestor <merge-sha> origin/main` caught it on the first try, which is the whole argument for that line being non-optional — every other signal said success. One thing the existing entry does not say, and now would: **the auto-retarget it describes belongs to GitHub's stacking feature.** A stack opened with plain `gh pr create --base <branch>` retargets nothing, so every PR has to be moved by hand — and missing one is invisible until you check ancestry. I missed exactly one out of eleven. ### The numbers Re-measured on this tree with `--rerun-tasks` rather than inherited from the branch they were taken on, because this entry's own rule is to re-measure before quoting: ``` 584 JVM tests in 87 classes, 0 failures LINE 2183/2352 = 92.8% BRANCH 1091/1342 = 81.3% ``` Same figures, earned again. ### The content Unchanged from #189: the wave-3 entry, the coverage-gap vs assertion-gap distinction, the two vacuous tests the mutation rule caught in flight, the mirror trap of a semantically-equivalent mutation, the three items that came back not as their tickets described them, and both denominator moves stated separately from the numerators. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.