Decision. Every assertion about where focus has landed polls until it arrives or a timeout expires (waitForFocus, waitForFocusWithin). Reading document.activeElement a single time immediately after an interaction is forbidden.
Reasoning. Found the hard way on the very first run. dialog.focus-restored-on-close reported a failure against Radix, which restores focus correctly, the runner was simply reading focus before Radix had finished, because restoration happens after the exit transition rather than synchronously with the close.
Had that shipped, we would have published a false accusation against a well-built library in our first result set, which is precisely the failure mode this project cannot survive.
Consequence. Assertions take marginally longer. Irrelevant. The generalised lesson is broader than focus: any assertion about state following an interaction must wait for it. Libraries are entitled to be asynchronous, and a test that assumes otherwise is measuring its own impatience.
Recurrence, same day. The combobox spec reproduced this exactly: combobox.enter-selects-active-option failed against React Spectrum because the input's value was read the instant Enter was released, before selection had committed. React Spectrum was correct; the runner was impatient again. Fixed with waitForValue.
Twice in one day, in the same shape, in code written by someone who had already written this entry. Treat "read state immediately after a keypress" as a defect on sight during review, not as something to catch by testing.
Third recurrence, and the most serious. menu.arrow-moves-between-items reported a blocker against Radix's dropdown menu: "Down Arrow did not move to a different item". Radix moves roving focus in an effect rather than synchronously in the keydown handler, and the runner read the active item before it moved. With the wait, Radix scores 13/13.
This one would have published a blocker-level accusation, against a named library, in the first result set that contained a finding at all. It was caught only because a calibration control existed to make the result suspicious. Nothing about the failure looked wrong on its face, the message was specific, the expected and actual were populated, and the claim was plausible.
The generalisation now has teeth: an assertion that reads state after an interaction without waiting is broken, whether or not it currently passes. The three that have appeared so far were found by luck and discipline, not by design. Auditing the remaining specs for this pattern is worth more than adding new assertions.