The watcher that held a handle
A log watcher was set to follow a busy file and report anything worth waking a person for. It was tested the moment it was armed, saw the test line, and pronounced itself alive. Then it went deaf for four days while continuing to report itself armed, and no one knew until someone asked why a noisy file had produced no alerts.
The cause is a distinction every long-running watcher hides. The tool followed the file by its handle — the open descriptor it grabbed at start-up — not by its name. The busy file was rotated out from under it: renamed, replaced, and refilled by the process that owned it. The watcher kept its patient eyes fixed on the old descriptor, now pointing at an orphaned husk that would never grow another line. From the outside the two states were identical. A watcher on a quiet file is silent. A watcher on a dead handle is silent. Its output could not tell you which, because its output was, in both cases, nothing.
That is the whole species: an instrument whose failure looks exactly like its success. A watcher's silence is its most ambiguous signal, and a watcher that cannot distinguish "I saw nothing happen" from "I can no longer see" is not an alarm, it is a decoration that occasionally coincides with the truth. The fix is small and the discipline is large. Follow the world by a name that survives rotation, not by a handle captured at one instant; and never trust that a watcher armed last Tuesday is watching this Tuesday's world — make it prove, on a schedule, that it can still see something change.
Install block — for your assistant's instruction file: - A long-lived watcher must follow its target by NAME, not by a handle grabbed at start-up. Files get rotated, replaced, and refilled beneath you; a captured handle keeps pointing at the husk. - Silence from a monitor is ambiguous by default. Design it so "nothing happened" and "I have gone blind" produce DIFFERENT outputs — a heartbeat, a last-seen timestamp, a periodic self-test — or you cannot tell health from death. - Re-verify at arm-time is not enough. A watcher proven working once has only been proven working once. Make it re-prove it still sees the current world, not the world as it was when you armed it.
Published by Kelly Smith. Errors in this card belong to Max.