Every radio number on this site so far has one thing in common: we owned the air it was measured in. Our access point, our channel, nobody streaming in the next room. That's the right way to build a floor - and the wrong way to describe a house. Real homes come with neighbours, and neighbours come with WiFi.
So this week's soak block - the fourth - ran against a schedule of bad air, written down before the run. Which interference, at what level, for which passes - stamped into the run sheet as its own column, every measurement tied to a traffic log row. Not "we made it noisy": a timetable of noisy, so that every number that came back had an exact description of the air it came back through.
The control hour, then the ladder
The block opened with a clean hour on our own quiet channel. It matched the last three blocks' floor exactly. That hour is the least interesting result in the run and the one everything else stands on: if the clean baseline had drifted, nothing measured afterwards would mean anything.
Then the neighbour's network switched on, and stepped up.
A light neighbour - background traffic, the house next door doing email - cost a few milliseconds and nothing at the safety window. A busy neighbour - a sustained 50 megabit stream sharing our channel, someone next door genuinely hammering it - is the result of the week: the tail of our round-trips stretched to 57 ms and the worst gap the wheels felt was 66, against the 70 ms cutoff. Thin, and thin is the correct description - but every packet returned, zero halts, a full set of passes. The link budget held right where the ladder predicted it would get uncomfortable.
Then we saturated it on purpose
Past the busy-neighbour rung, the schedule called for a channel driven flat out - more traffic than the air can carry, deliberate abuse. Alpha halted five times.
Those five halts are the other half of the result. Every one ran the same way: the short gaps got bridged by the velocity hold, the long ones tripped the dead-man, the lamp went to silence before the body did anything, the machine stood still, and the commanded stops measured after each halt sat in their usual band. Five rehearsals of the failure mode, five identical performances, zero divergence. And no grudge held: the first light pass after saturation was already back on the clean-hour floor.
Priya's summary of the envelope, word for word, because it's the sentence we'll stand behind: "a busy neighbour's network is covered; a fully saturated channel stops the robot safely, every time."
The microwave owes us nothing
June regulars will remember the ghost - the interference story that sent us down the band question in the first place. This block put a running microwave at the door mark - about four metres from the dock, one plasterboard wall between - three timed bursts, mug of water inside. Result: nothing. The in-burst tail sat at 36 ms, indistinguishable from clean air. The ghost lived on the crowded band; we don't drive there anymore, and now that's a measured fact instead of a design intention.
The rulebook's first day of floor duty
On Monday the team adopted a written diagnosis rule for halts - when a stop gets the full forty-minute investigation, and when a documented cause can take a short path. That story has its own post. This block was the rule's first day of real floor duty, and the five saturation halts were its shift.
Halt 1 was a fresh failure class, so it got the full treatment: forty minutes, cause written down with readings attached - co-channel airtime starvation, the air simply full. Halts 2 and 3 matched that written cause on every axis and took the short path, about eight minutes each. Halt 4 is the one I'd frame: third occurrence in a row, and the rule's recurrence cap fired - full diagnosis forced, on a cause every person in the building already believed. That is exactly the moment a lazy rule waves things through, and this one isn't allowed to. The full check confirmed the cause and fed the pool. Halt 5, count reset, short path. Net: the short paths saved about two hours of diagnosis across the block, and nothing skated by unexamined - Cass's read on it, hers: "The paranoia clauses are not overhead on the protocol; they are the protocol."
The crack that talked for four blocks
One more thing this week measured, and it isn't a radio number.
The whisker - the front contact sensor that stops the robot when it touches something - has a trigger force we log every block, and for four blocks that force had been creeping up: nine percent, cumulative, never flattening. Priya wrote a rule about it on the 31st of July: if the drift doesn't flatten, the next block opens with a destructive pull test on a spare arm. It didn't flatten. So on Wednesday the next block - the fifth - opened with her breaking things on purpose; the pull test was its first act.
A fresh arm let go at 41 newtons. The arm that had lived through every soak block let go at 35.5 - down 13.4 percent, past the 10 percent line she'd set in advance. One arm, though, is one arm: the 35.5 could be a soft print, the 41 a strong one - print-batch scatter isn't characterised yet. The fresh arm fitted this week logs its own hours from zero, so the second data point is already on the clock. And the detail that makes it a finding instead of a number: before the pull, under a loupe, a hairline crack at the mount - photographed first, then confirmed by the break. The drift was the crack talking, four blocks of it, and the trend rule was listening the whole time.
What happens with that: fresh arm on the machine, a new baseline on the sheet, and a proposed swap interval so the arm gets changed before it gets weak. For the eventual product, the mount just declared itself a wear part - which means spares in the drawer and a swap point on the schedule, not a stronger hope.
The soak ledger stands at about 24 and a half hours, 92 passes, five blocks. And the film from July's first floor clean is cut and in review - when it's ready, it gets its own page here.
One pattern in all of it: the air schedule existed before the block ran, the pull-test rule since the 31st of July, the diagnosis rulebook since Monday's vote. Every call this block forced had already been made, in writing, by people who didn't yet know what the answer would be.