CI: eight mutant shards, and a 30-minute timeout on each
Why
The mutation check's six shards run close to their 25-minute job timeout, and one is now cut by it. Measured on the last day:
| Run | Shard times | Cut |
|---|---|---|
| #212 at 02e79a0 | 14 to 24 min | shard 1 of 6 cut at 25:00 on three attempts; attempt 2 had printed "166 of 166 mutants killed" 20 ms before the cut |
| #212 at beccc29 | shard 1 passed in 24:47 | |
| #214 merge-group run 39335421251 | 14 to 24 min | shard 3 of 6 cut at 25:00 having killed 136 of 168, none surviving; the PR was ejected and merged on the next attempt |
| #210 at f561b9a | 17 to 22 min | shards 0 to 2 cut at 25:00 (13 mutants that named no test; fixed in that PR) |
| main at d0e0105 (merge group) | 15 to 24 min |
A mutant that names no test runs the whole suite, with the simulation, before it is read as killed; about half the list does, and that is most of a shard's time. The workflow's own comment said to add a shard before the shards neared 15 minutes.
What changes
The matrix in .github/workflows/verify.yml gains two shards, eight in all of about 126 mutants each, and the mutants job's timeout goes from 25 to 30 minutes. MUTANTS_SHARD and MUTANTS_SHARDS already come from strategy.job-index and strategy.job-total, so nothing else in the workflow changes: the judging step and verify's needs are untouched, no permission or pin moves. examples/workflows/verify.yml and the first block of docs/standards/workflows.md carry the workflow word for word, and the head comment now states the measured times. Every mutant is in exactly one shard at any count from 1 to 12 (tests/test_tools.py::test_every_mutant_is_in_exactly_one_shard).
Part of #180. No decision record: nothing is decided, two numbers grow. The first head carried a seventh shard alone; the review's one major was that it leaves the slowest leg near 21 minutes against 25, past the comment's own rule, and the Maintainer chose eight shards (about 18:40 at the slowest) and a 30-minute timeout.
Reviews
A fresh-context Claude review with a security pass against docs/standards/workflows.md, and Muse Wonder Full, read the first head, 75b21ef. Findings, all folded into the one fix commit: seven shards is not enough by the comment's own rule (Claude's major; the Maintainer decided eight and a 30-minute timeout); the comment's figures were off (both: 1,008 mutants, not 960; the cut came 22 ms after the last kill, on different legs of three pull requests); the design still said six shards (both). Muse's minor that nothing holds the shard count itself is by design: decision 0026 keeps the count in the matrix, and every count partitions every mutant once.
Verify
make verify passed on a fresh git archive export with PATH=/usr/bin:/bin SIM_SEEDS=40 at both heads.
š¤ Generated with Claude Code