a73x

7299fe80

docs: name which run each reproduction rate came from

a73x   2026-08-08 18:40

Commit message
docs: name which run each reproduction rate came from

Two failure rates two-fold apart sat in the record with nothing saying they
came from different batches, which reads as one number transcribed wrong.
They are three separate reproductions: 21/200 from the investigation, 25/40
from the implementer at smaller N, 3/8 as the review's control — each driven
to zero by the fix, none sharing a harness with the others. The zero-leaks
observation belongs to the 200-run batch specifically, and now says so.

Three independent reproductions is also the reason the section can say
"observed" without qualification, which is worth stating where the numbers
are rather than leaving a reader to notice it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

docs/decisions.md
Old New
@@ -1111,13 +1111,21 @@ fit is that each explained half the evidence:
1111 - **The transient was `drainPending`.** It gives up the first time a wakeup 1111 - **The transient was `drainPending`.** It gives up the first time a wakeup
1112 retires nothing, which misreads a coalesced or flow-control-only 1112 retires nothing, which misreads a coalesced or flow-control-only
1113 acknowledgement as a finished peer. Reproduced on HEAD under four-way 1113 acknowledgement as a finished peer. Reproduced on HEAD under four-way
1114 contention on one core at **25 failures in 40 runs**, always the same 1114 contention pinned to one core, three times independently, always the same
1115 test, and driven to **0 in 40** by the fix. Observed, not inferred. 1115 test: **21 failures in 200 runs** (the investigation's batch), **25 in 40**
1116 (the implementer's, at smaller N), and **3 in 8** as the review's control.
1117 Driven to zero by the fix in every one — 0/200, 0/40, 0/12 respectively.
1118 Observed, not inferred.
1116 - **The leaks were the ngtcp2 abort** — but reaching the test suite through 1119 - **The leaks were the ngtcp2 abort** — but reaching the test suite through
1117 *other concurrent processes sharing `/tmp`*, not through the run that 1120 *other concurrent processes sharing `/tmp`*, not through the run that
1118 showed the failure. That is why the two never correlated: the 21 HEAD 1121 showed the failure. That is why the two never correlated: the
1119 failures produced zero leaks, because an assertion failure runs its 1122 investigation's 21 failures produced zero leaks, because an assertion
1120 defers and only a signal kills a process before they can run. 1123 failure runs its defers and only a signal kills a process before they can.
1124
1125 Three reproductions at three sample sizes, by three parties who did not
1126 share a harness, is the reason this section can say "observed" without
1127 qualification — and naming which batch each number came from is what keeps
1128 the two 2x-apart rates from looking like one number transcribed wrong.
1121 1129
1122 So the leaked temp directory was a true clue pointing at a real defect, and 1130 So the leaked temp directory was a true clue pointing at a real defect, and
1123 the failure it was found next to had a different cause entirely. Neither 1131 the failure it was found next to had a different cause entirely. Neither
@@ -1178,8 +1186,9 @@ reset by any progress) rather than acting on one, and by bounding the poll
1178 slice with ngtcp2's own next deadline, floored at 1ms. 1186 slice with ngtcp2's own next deadline, floored at 1ms.
1179 1187
1180 **Both halves were handed over as required; measurement says otherwise, and 1188 **Both halves were handed over as required; measurement says otherwise, and
1181 the measurement is what goes in the record.** Four-way contention on one 1189 the measurement is what goes in the record.** This is the implementer's
1182 core, 40 runs each: 1190 40-run batch (the same one quoted above as 25/40), four-way contention on
1191 one core, run per configuration so the halves could be separated:
1183 1192
1184 | | failures | 1193 | | failures |
1185 |---|---| 1194 |---|---|