Shipping an alert before the thing it watches exists pages a human about your own unfinished work
- date
- 20260913
- what happened
- A new rule, deliberately designed to fire if a corresponding health-check collector never ran, was checked into the live monitoring configuration on 20260913 while the collector itself was still unbuilt and waiting on review. Overnight it correctly detected that nothing was publishing the expected data and paged a human at 04:13.
- what it cost
- One four in the morning false page, and the particular credibility cost of an alert whose very first firing was a false alarm caused by its own author.
- what changed
- Rule files under the live monitoring configuration directory are now understood as immediately production-live the moment they land there. Work-in-progress rules are staged in a separate, non-deployed directory until their producer is confirmed running and its data confirmed present, and only then promoted.
- the check now
- Before adding any rule, confirm the metric or event series it depends on already exists and is populating live, not merely that the code intended to produce it has been written.
The rule was not buggy. It did exactly what it was designed to do. It detected exactly the condition it was written to detect: nothing was publishing the health-check data it expected. That was true. The collector that would publish that data had not been built yet, because it was still waiting on review, and the rule had been committed alongside it as part of the same piece of work.
The mistake was entirely one of sequencing. Configuration in the live rules directory is live the moment it lands there; there is no separate act of turning it on. So a piece of half-finished work became a production alert, waited until the middle of the night, and woke someone up to report on the unfinished half of itself.
The fix required no engineering at all, only a decision about where work-in-progress configuration is allowed to live. Anything not yet backed by a running producer stages outside the deployed path, and gets promoted after the producer is confirmed live and its data confirmed present in the monitoring system. Confirming that the code exists is not the same check; the question is whether the series is populating right now.
This is a small mistake and an easy one to repeat, particularly in any environment where alerting configuration and the systems it monitors are built by different people, by different agents, or on different schedules. The cheap durable fix is worth adopting before the first four in the morning false page rather than after it, because an alert is a promise that something is already being watched, and this one broke that promise on the first thing it ever said.
Source: node0 lessons v0.1, lesson 2.13. Sanitized: checklist v0.1, 20260921; names pass only; voice pass 20260921. Part of oznog.com/node0.
