Commit 0f2ffc9
committed
fix(mutants): the full sweep has never completed, and said it had
Queue item was "record the first real mutation-sweep result once a Monday
sweep has run." Checking whether one had produced a finding instead: **no
full sweep has ever completed**, and the one attempt reported success anyway.
Verified against the Actions API, not assumed. mutants.yml has exactly one
scheduled run in its history — 30236603180, 2026-07-27, against b416c1a,
run conclusion `cancelled`. Nine of its eleven sweep jobs succeeded;
a2a-server shards 3/8 and 4/8 were cancelled at the 120-minute job timeout.
The shards that did finish took 86-113 minutes, so those two were always
only minutes from the limit.
`Mutants Summary` concluded **success** regardless. A cancelled shard still
runs its upload step, so it contributes an empty mutants.out; the
aggregator's count() reads zero missed from it, and the job's only failure
condition was TOTAL_MISSED > 0. Two elevenths of the workspace went
unmutated and the gate said every mutant was caught — a green check over
work that did not happen.
The hazard was already understood here for the *incremental* PR job, whose
header says a job that overruns "gets cancelled, so the gate silently stops
enforcing", and which was sharded for exactly that reason. The full sweep
had the identical hole and no guard.
Both halves fixed:
* A shard-completeness gate runs before aggregation and fails unless the
matrix result is `success` AND the expected number of per-shard reports
arrived. Two checks because they fail differently: a shard can end
non-success, or its artifact can vanish while the job reports success.
A workflow_dispatch scoped to one package is exempt from the count,
since it skips the other shards by design — caught while writing the
guard, which would otherwise have failed every scoped run.
* a2a-server is sharded 12 ways instead of 8, cutting per-shard load by a
third so the slowest finishes with headroom rather than four minutes of
it. Raising the timeout instead would have been a guess: the cancelled
shards' true duration is unknown precisely because they were cancelled.
Expect the next scheduled sweep to be red if anything is genuinely
incomplete. That is the point — it was silently green before.
mutation-history.md records why it is still empty and that the 2026-07-27
score must NOT be backfilled: it was computed from partial data.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W4Eq5Yinogz6qNGpAe9Ns11 parent 1a173eb commit 0f2ffc9
2 files changed
Lines changed: 157 additions & 28 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
12 | | - | |
13 | | - | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| |||
59 | 60 | | |
60 | 61 | | |
61 | 62 | | |
62 | | - | |
63 | | - | |
64 | | - | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
65 | 66 | | |
66 | 67 | | |
67 | 68 | | |
| |||
79 | 80 | | |
80 | 81 | | |
81 | 82 | | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
87 | 95 | | |
88 | 96 | | |
89 | 97 | | |
| |||
95 | 103 | | |
96 | 104 | | |
97 | 105 | | |
98 | | - | |
99 | | - | |
| 106 | + | |
| 107 | + | |
100 | 108 | | |
101 | 109 | | |
102 | | - | |
103 | | - | |
| 110 | + | |
| 111 | + | |
104 | 112 | | |
105 | 113 | | |
106 | | - | |
107 | | - | |
| 114 | + | |
| 115 | + | |
108 | 116 | | |
109 | 117 | | |
110 | | - | |
111 | | - | |
| 118 | + | |
| 119 | + | |
112 | 120 | | |
113 | 121 | | |
114 | | - | |
115 | | - | |
| 122 | + | |
| 123 | + | |
116 | 124 | | |
117 | 125 | | |
118 | | - | |
119 | | - | |
| 126 | + | |
| 127 | + | |
120 | 128 | | |
121 | 129 | | |
122 | | - | |
123 | | - | |
| 130 | + | |
| 131 | + | |
124 | 132 | | |
125 | 133 | | |
126 | | - | |
127 | | - | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
128 | 152 | | |
129 | 153 | | |
130 | 154 | | |
| |||
298 | 322 | | |
299 | 323 | | |
300 | 324 | | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
| 334 | + | |
| 335 | + | |
| 336 | + | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
| 386 | + | |
| 387 | + | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
301 | 391 | | |
302 | 392 | | |
303 | 393 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
29 | 68 | | |
30 | 69 | | |
31 | 70 | | |
32 | 71 | | |
33 | | - | |
| 72 | + | |
0 commit comments