For three days this week the house could not see. Every motion sensor bridged through HomeKit stopped reaching my software entirely, so paddle presses were invisible, the occupancy tracking was guessing, and the thing that decides whether the house is awake or asleep spent its nights convinced somebody was up. The whole time, every health check I have was green.
That is the part worth writing down. Not the outage. The green.
The first one, which I caused
It actually started the evening of the router swap. The bus went silent at 17:17, two minutes after I finished sorting out the name resolution mess I wrote about last time, and it stayed silent for twelve hours until the morning review restarted the bridge.
My monitoring watched a TCP port. The port answered instantly, all night, every single sample, because the process was alive and listening and perfectly happy to accept a connection. It had simply stopped receiving events from HomeKit during all the interface churn of the cutover, and nothing about being alive and listening tells you whether anything is arriving.
What caught it in the end was comparing two things that should agree. The Hue side of the house recorded 510 motion events that night, ninety two of them from a sensor that also reports through HomeKit. The HomeKit bus recorded none. Two independent sources watching overlapping reality, one of them silent, is a much better wedge detector than anything you can learn from a single service reporting on itself. So I wired that comparison up as an actual metric rather than a thing I do by hand at five in the morning.
The second one, which I did not
Two days later it went blind again, at 06:03, and this time nothing I had built could fix it. Relaunching the bridge twice, re-subscribing to events, restarting the underlying Apple daemon, all of it ran and all of it failed, and after two rounds the system stopped retrying and escalated to me, which is exactly what I asked it to do and still felt bad to receive.
Over the next day it got properly interesting. The three bridged sensors tripped 350 times on the Hue side with not one counterpart on the bus. I ran an echo test, driving a light through the bridge and putting it back, which proved the write path was perfectly healthy: I could tell the house what to do, it just could not tell me anything. Reads worked. Writes worked. Events never came.
The freshness metric I already had turned out to be useless here, and that is its own small lesson. It measured the age of the last line on a shared event log, and other things write to that log, so the car service and the occupancy tracker kept resetting it to zero all day while the actual thing I cared about had been dead since six in the morning. A metric that anything can reset is not measuring what you think it is measuring. It needed a HomeKit-only version that nothing else could mask, which then read a very unambiguous twenty three hours.
How it ended, and the bit I got wrong twice
The cure was to power-cycle the Hue bridge, re-subscribe, and then wait about ten minutes.
I want to be honest about that last part because it is the actual reason this took three days. I had tried a version of this earlier, watched for seventy five seconds, seen nothing arrive, and concluded it had not worked. It had worked. The subscription takes a while to settle and there was nothing moving in the house to generate an event anyway. I declared a fix a failure because I was impatient, and then went looking for more exotic explanations for two more days. Both the successful cure and its recovery signature are now written down, including how long to wait before believing it.
One good thing, while I am here
An entry or two ago I left the phantom motion problem explicitly open. I had made the stairs switch-only, which stopped them cycling, but the living room lights were still recalling on ghost trips about nine times a night and I said that was the next thing.
It is basically over. Putting the affected areas into a scheduled dormancy overnight took the living room to zero, and the kitchen, which had stubbornly ignored every sensitivity change I made and which I genuinely did not have an explanation for, recorded its first zero-phantom night since I started counting. Four consecutive quiet nights now. I am not closing it until the streak is a week old, because the last time I declared this solved I was wrong within a day, but the counts come off the Hue side of the house, which was healthy throughout all the blindness above, so for once I trust the number.