On Monday the 31st this site said "candidate picked, proof owed": a fix for the three-second timer, chosen against five written criteria, with one number left blank on purpose because nobody had measured it yet. The blank refused to compile. This is the week the blank got filled, the code got to run, and the five criteria got their first real drops to grade.
The number that filled the blank
The blank was a wait bound. The old failure branch, the one the hunt story cornered, slept a flat 3.0 seconds after a busy rejection. The new shape doesn't sleep; it asks the radio whether a reassociation is already in progress and, if it is, waits for that to finish instead of blindly retrying into it. A wait like that needs a ceiling, and a ceiling has to come from a measurement, so the code shipped with a hole where the digit goes.
Tuesday morning Priya measured it. Twenty forced drops in clean air, module-side stamps on the start and finish of every reassociation, dock clock. Seventeen of the twenty finished in 0.8 to 1.5 seconds, most of them between 1.0 and 1.2. Three ran long: 2.1, 2.3 and 2.7. All three had the same thing stamped just before them, a periodic scan tick from the module, so the tail has a cause and can be budgeted for rather than guessed at. (What that tick is, now that the roaming scan is switched off, is an open question on the vendor list. Nobody knows yet.)
The rule for turning that into a number was written before the data came in: take the measured worst, round it up to the coarsest grain the sample can defend, then add one more grain. With three tail points a few hundred milliseconds apart, the grain is 500 ms; finer would be pretending. 2.7 rounds up to 3.0, plus one grain is 3.5. So the constant is 3500 milliseconds, dated, marked provisional, and the derivation is compiled into the file next to it so nobody reads the digit without the working.
I read that number wrong for a bit, and I wasn't the only one. 3500 is bigger than the 3000 it replaces. Read as a digit it looks like the fix made things slower. It didn't, and the reason is the best mechanism in the whole story. The old 3.0 was a sleep: every flap paid it in full, no early exit, 3.3 to 4.3 seconds per flap. The new 3.5 is a ceiling on a wait that ends the moment the radio says it's done. Typical exit is about a second; the worst anyone measured is 2.7; the full 3.5 only gets paid if the reassociation never completes, and then the code gives up fast and goes again. Priya's line, from the mail that carried the digit: "A ceiling and a sleep aren't the same number even when they share digits."
What twenty shots can't do is size the tail past 2.7. Twenty sees a one-in-twenty; it does not see a one-in-a-hundred. Clean air only, one silicon. So the digit is provisional and dated, and the trigger to re-derive it was written the same day: any completion slower than 2.7 re-runs the derivation off the new worst, and any wait that hits the ceiling is a table item, same day.
The test suite that read complete
One correction, in the words of the person it belongs to, because the code's own test file had a defect of exactly the kind the hunt story was about. The regression suite for the failure branch had no runner block, so the house command that's meant to run it executed nothing and exited clean, and had done since the day it became the test of record. Anjali caught it Monday night, checked the history, and dated it: "the regression test for a branch that read complete... also read complete." It's fixed with a tooth: while the wait bound was blank, the command printed 6 ok, 1 BLOCKED, exit 1, and a run with a blank in it is not a pass even when the blank behaves. With the digit compiled in on Tuesday afternoon it read all green, eight checks, twice, in separate processes. Wednesday at 08:30 it was typed a third time, cold, on the bench shell, with Priya watching the screen, because her rule for the day was that she doesn't press the trigger off a mail.
Wednesday's sitting
Ten control drops, timed into clear air: all clean, 0.8 to 1.0 seconds, and the instrumented branch wrote nothing at all, which is what criterion 2 asked for.
Twenty hot drops, timed into the reassociation window at block 9's six flapping offsets, the Monday before last, plus fill. Nine got through on the first reconnect, 0.9 to 1.3 seconds. Eight found a reassociation in progress, waited for it, and got the completion at 1.1 to 1.6. Two raced and lost the way the old branch used to, and this time the rejection was kept with the module's own string, the code failed fast, and the next cycle connected at 1.5 to 1.8. Nowhere in the thirty was there a 3.000. Last Friday the same slice lost five of twenty into the constant; this week it lost two into fail-fast and the live check caught eight before they could lose.
Then halt 14.
The one that waited
Halt 14 was one of Monday's exact offsets. The first reconnect request went out at about 0.3 seconds and the module took it. The reassociation finished at about 1.10. The supervisor's live check ran at 1.10 and read in progress; the completion frame went by, and the wait armed at 1.14, forty milliseconds after the thing it was waiting for. It waited the whole 3.5 seconds: once in twenty, recorded, the body halted and safe the whole time. On the way out, the next read found a link that had been up since 1.10, in about twenty milliseconds. Total, about 4.7. That is worse than any single flap in the block that started this hunt; only the 6.5 there beat it, and that was two in a row.
The record is why this isn't a mystery. The reassociation took about 0.8 seconds from the request, the short end of Tuesday's 0.8 to 1.5, and the wait's entry stamp sits 40 milliseconds after its completion. The request won; the wait missed the win. The signal existed and it arrived early. The tail did not get longer; all eight of the waits that completed exited between 0.4 and 1.1 seconds, nothing near 2.7, so there is nothing to re-derive and the digit stands. This is the second kind of ceiling hit, the one where the number is fine and the code is looking the wrong way.
Anjali's read of her own code, in her words: "the wait listens for the signal arriving, not for the state already being done." Two checks of the radio's state, then one call that arms on the completion frame and blocks. "Nothing after arming ever reads the level again. So: check, then arm, and a completion that lands in the gap between those is an edge with no listener. The only exit left is the ceiling." And on whose it is: "Not a tail, not the digit
- an ordering bug, in the shape I picked 8/31 and wrote."
What criterion 1 says
The five criteria were filed the Friday before any fix existed, and the first one reads, near enough: no flaps; a lost race fails fast; never a three-second wait. Nineteen of twenty. Halt 14 was not the old flap, there was no dead reconnect and no constant and the record says exactly why, but 3.5 seconds is a three-second wait and the criterion does not have a clause for "yes but we know what happened." Not met.
The other four are met, and one of them is the reason the first one isn't. Criterion 5 says the error is surfaced, never swallowed. The ceiling hit is a record with stamps and a reason in it, not a silence you'd need instruments to find. The stamps that show criterion 5 met are the same stamps that show criterion 1 missed. Take away the stamps and halt 14 would have been a 4.7-second quiet with no explanation, and it would still have been a miss.
So the pick from the 31st is recorded as missed on criterion 1, in Anjali's words in the ledger, and stays there until a rerun closes it. Cass's ruling, since the pick was hers: the docket is open, and "open" does not mean the same shape with a patch, re-blessed by the person who picked it. Anyone with a different shape files it in writing against the same five by Thursday 08:30. Anjali has a candidate on paper, same shape, one mechanism changed so the wait re-reads the radio's state between short slices under the same 3500 instead of only listening for the frame. It has met the house command, warm, twice. It has not met the bench, and by her own rule it doesn't get called anything but a candidate until it does: "I wrote the fix that missed and I'm not going to grade its replacement off a stub."
The re-sit was set for Thursday morning: cold house command at 08:30 with Priya at the screen, then the same shape as Wednesday, twenty hot at Monday's six offsets plus fill, ten controls, halt 14's exact offset in the twenty on purpose. Every wait exit would record which path caught it, the frame arriving or the state read. If halt 14's offset completed by the state read in one slice, that was the sentence; if by the frame, the bug hadn't reproduced and this piece would say that instead.
Thursday, 3 September
Nobody filed a rival shape by 08:30, so the twenty was the test. The house command went first, cold, on the bench shell, Priya watching Anjali type it: nine checks, all green, exit
- The ninth check was new. It's halt 14, written as a test: a completion that arrives
before the wait arms is seen by the level read, one slice, never the ceiling.
Ten controls, all clean, 0.8 to 1.0 seconds, and the branch wrote nothing. Then twenty hot drops, and all twenty recovered: no ceiling hit, no quiet over 1.5 seconds. Eleven got through on the first reconnect, 0.9 to 1.3, and never entered the wait. Seven armed the wait and heard the completion frame, exits 0.4 to 1.1. Two armed the wait, the frame never reached them, and the state read caught both. Priya's record types the exits as seen_by signal 7, level 2, none 0.
Halt 14's offset was one of the two. On Priya's stamps the completion frame came about 40 milliseconds before the wait's entry, same as Wednesday, so the bug reproduced. This time the level read at the end of the first slice found the radio already associated: 100 milliseconds waited, recovery 1.2 seconds, which is Wednesday's entry at about 1.1 plus one slice. Wednesday the same shot paid the whole ceiling from that entry and came out at 4.7.
Zero rejections in the twenty. The 28th lost five of twenty into the old constant, Wednesday lost two into fail-fast, Thursday lost none, same offsets. Twenty can't tell none from one-in-twenty; pooled on the new code it's two of forty, the branch is untouched, and nobody says a word about the rate until block 10 adds its ten. Worst completion on the echo was 2.4 seconds, under the 2.7 the derivation came from, so the digit stands as written.
Criterion 1: met. Twenty of twenty, worst wait 1.1 seconds, worst miss 200 milliseconds, no ceiling. The other four: met, on the print and on the bench, Anjali's Wednesday countersign on the driving-loop half carrying. Five of five is fork 1 on the sheet Priya wrote before the sitting, so the state of the fix on Thursday is its second sitting, twenty, two caught by the level read, 100 and 200 milliseconds, merged at 11:50. The merge note cites the record, the ledger row that opened retroactive on 25 August has its closure line with the cost typed, and the seen_by counts sit in the file header off Priya's numbers. Priya opened block 10 on the merged build the same hour: ten deauths spread across the passes, the tyre mic rider at every bracket.
The second level exit is the awkward one, so it goes here. A fill offset, not one of Monday's six, waited two slices, 200 milliseconds. Two slices means the completion came after the first state read and the listener still didn't hear it while it was armed. Anjali's read of her loop, as it actually is: each slice is a state read, then one call that arms and blocks, and the module won't let her arm first, so every slice boundary has a small gap, one module round-trip plus the arm call, where a completion frame is an edge with no listener. It is halt 14's gap one level down: Wednesday's change bounded it to a slice, it did not remove it. A frame in that gap is missed by the next slice and caught by the state read at the top of the one after. Two slices exactly. She puts that at about 60 percent, names two other causes behind it and ranks them lower, and wrote no test for it on purpose: a green test on a guess is still a guess. It lives in the file header as a footnote because the cost of a miss is one extra slice by construction, and block 10's ten will grade the footnote. Every level exit at 100 or 200 keeps it one. Any exit over 200 opens a ledger row the same day.