An inventory pass found about 973 test sites that wait on a bounded timeout instead of a causal signal. Each site can fail on a slow CI machine. The sites fall into 8 mechanism buckets, from raw Task.Delay polls to hand-rolled Ask literals below the TestKit default.
Why this matters. The webhook store choreography test failed for exactly this reason on Windows CI. The fix there was a design change: an actor now owns the state, and the tests assert on message order. Most of the 973 sites need the same treatment class: an ack, an awaited signal, or AwaitAssertAsync.
Proposed shape. One bucket per PR. Start with the buckets that hit chronic-flake test families. Do not raise timeouts; that is timeout adjustment, not a fix.
Origin. Inventory ran during the 2026-08-19 deflake campaign (PRs #2001, #2014, #2019).
An inventory pass found about 973 test sites that wait on a bounded timeout instead of a causal signal. Each site can fail on a slow CI machine. The sites fall into 8 mechanism buckets, from raw
Task.Delaypolls to hand-rolledAskliterals below the TestKit default.Why this matters. The webhook store choreography test failed for exactly this reason on Windows CI. The fix there was a design change: an actor now owns the state, and the tests assert on message order. Most of the 973 sites need the same treatment class: an ack, an awaited signal, or
AwaitAssertAsync.Proposed shape. One bucket per PR. Start with the buckets that hit chronic-flake test families. Do not raise timeouts; that is timeout adjustment, not a fix.
Origin. Inventory ran during the 2026-08-19 deflake campaign (PRs #2001, #2014, #2019).