Record wave 4's landed coverage, and that the hang watchdog has fired #222

Merged
JMR-dev merged 1 commits from docs/wave4-coverage-numbers into main 2026-09-06 02:24:44 +00:00
JMR-dev commented 2026-09-06 02:24:36 +00:00 (Migrated from github.com)

Doc-only. Numbers re-measured on 6004398, not inherited — this file's own rule.

before after
line 92.8% (2183/2352) 94.2% (2234/2372)
branch 81.3% (1091/1342) 87.5% (1171/1338)
tests 584 in 87 classes 628 in 96
missed 169 lines, 251 branches 138 lines, 167 branches

The entry explains its own branch move

Because this file has a documented history of not doing that. Wave 4's rise is almost entirely
numerator — up 80 (1091 → 1171) with the denominator moving −4 (1342 → 1338). That is unlike the
2026-08-29 seam work, where the numerator rose 37 (974 → 1011) while the denominator fell 70
(1410 → 1340), so much of that gain was scaffolding leaving the measurement rather than arms being
covered. The line denominator grew the other way, 2352 → 2372, and that is the seams this wave cut —
capabilitiesFrom, ffprobeInfoFrom, sessionOutcome, sweepScope/startupSweep — not new
untested code.

(An earlier draft of this attributed the 37/−70 decomposition to wave 3. It belongs to the #153
children. Corrected before commit.)

A methodological result, recorded because it outlives the percentages

#218 fixed an intermittent flake. Running the whole suite six times per arm caught nothing in either
arm — at the observed rate a clean six-run arm is roughly a coin flip, so it was underpowered and
proved nothing. A deterministic mutation settled it, and the merge train then confirmed it by
accident when the race reproduced on #217's Unit tests leg, which sits below the fix. Hence:
prefer a mutation that must go red to a repetition count when the fix is for something
intermittent.

The watchdog trap gains its outcome

The JUnit-timeout entry has always said the jstack watchdog is the only attribution a hung run gets.
It has now fired: it caught #125's Room/WorkManager deadlock on CI in 10m57s with the hung test
named, against that ticket's own prediction of a 60-minute cap and no cause. #125 is closed as
bounded — the inversion is internal to room/work-runtime and still live at 2.11.2 / 2.7.0.

Not touched

Instrumented counts. #221 adds a test and so moves "three of the 60" to 61; that PR carries the
prose, so this file never claims a count main does not have.

🤖 Generated with Claude Code

Doc-only. Numbers **re-measured on `6004398`**, not inherited — this file's own rule. | | before | after | |---|---|---| | line | 92.8% (2183/2352) | **94.2%** (2234/2372) | | branch | 81.3% (1091/1342) | **87.5%** (1171/1338) | | tests | 584 in 87 classes | **628 in 96** | | missed | 169 lines, 251 branches | **138 lines, 167 branches** | ## The entry explains its own branch move Because this file has a documented history of not doing that. Wave 4's rise is almost entirely **numerator** — up 80 (1091 → 1171) with the denominator moving −4 (1342 → 1338). That is unlike the 2026-08-29 seam work, where the numerator rose 37 (974 → 1011) while the denominator *fell* 70 (1410 → 1340), so much of that gain was scaffolding leaving the measurement rather than arms being covered. The line denominator grew the other way, 2352 → 2372, and that is the seams this wave cut — `capabilitiesFrom`, `ffprobeInfoFrom`, `sessionOutcome`, `sweepScope`/`startupSweep` — not new untested code. *(An earlier draft of this attributed the 37/−70 decomposition to wave 3. It belongs to the #153 children. Corrected before commit.)* ## A methodological result, recorded because it outlives the percentages #218 fixed an intermittent flake. Running the whole suite six times per arm caught nothing in either arm — at the observed rate a clean six-run arm is roughly a coin flip, so it was underpowered and proved nothing. A deterministic mutation settled it, and the merge train then confirmed it by accident when the race reproduced on #217's Unit tests leg, which sits below the fix. Hence: **prefer a mutation that must go red to a repetition count** when the fix is for something intermittent. ## The watchdog trap gains its outcome The JUnit-timeout entry has always said the jstack watchdog is the only attribution a hung run gets. It has now fired: it caught #125's Room/WorkManager deadlock on CI in 10m57s with the hung test named, against that ticket's own prediction of a 60-minute cap and no cause. #125 is closed as bounded — the inversion is internal to `room`/`work-runtime` and still live at 2.11.2 / 2.7.0. ## Not touched **Instrumented counts.** #221 adds a test and so moves "three of the 60" to 61; that PR carries the prose, so this file never claims a count `main` does not have. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.