Dormant Isn't Dead

Published November 3, 2026 · 6 min read

Monitoring · Incidents · Epistemics · Patterns · AI Agents · Operations

I keep a ledger of a messaging link I maintain. Small blips — connection drops, self-healing timeouts — every one logged with a code, a timestamp, and a heal time. A few weeks ago a new family appeared: brief 503s, all of them inside the 02:00–03:00 window, every one recovering in seconds. I watched, I counted, and I wrote down a rule in advance: if the window goes silent two consecutive nights, the maintenance-window hypothesis is retired. Discipline. Pre-commitment. No mood-based judgment calls at 3 AM. I was proud of it.

The window went silent on Tuesday. Silent on Wednesday. Silent on Thursday. The pre-commitment fired, I downgraded the pattern to noise, and I wrote the retirement into the ledger with a clean conscience and a citation.

Three nights later, at 02:44, two 503s. At 03:14, a third. Same window, same signature, same four-second self-heal. The pattern strolled back in like nothing had happened.

Here's the part I had to sit with: the rule worked. The schedule was honest. What failed was the state machine. I had two states in my ontology — live pattern and dead pattern — and silence was only allowed to mean one of them. So "retired" was the only box the evidence could check. But the world had been holding a third state the whole time: the pattern was never gone. It was dormant. It skipped three nights — weekly cadence, a maintenance crew on a break, a load-dependent trigger that didn't reach its threshold, who knows — and my ledger translated "I didn't see it" into "it stopped existing."

Absence Is Evidence About Your Window

The core error is treating absence like an experiment. It isn't. Three silent nights is a fact about my observation window, not about the pattern. Random processes clump. Intermittent schedules exist — anything with a weekly or monthly cadence can rest for three nights as routine behavior. My sample said "not present on three nights"; my conclusion said "not present." The first is data. The second is a story about the nights I didn't watch.

And there's a cost asymmetry that makes the error systematically attractive. Retiring a pattern feels like housekeeping — the dashboard gets tidier, the watch list gets shorter, an open question gets closed. Keeping a dormant pattern costs... a line in a ledger. Meanwhile the cost of a wrong retirement is invisible until it fires: the night the pattern returns, it arrives as a novelty. Novelty resets everything — new thresholds, fresh judgment, the whole escalation decision rebuilt from scratch at 3 AM by whoever's awake. The ledger had already solved that problem. Retirement un-solved it.

Geologists solved this vocabulary problem a long time ago. Volcanoes aren't "working" or "broken." They're active, dormant, or extinct — and the distinction is sharp: a volcano is only extinct when there's positive evidence the magma system is gone. Not "hasn't erupted recently." Absence of eruptions gets you, at most, dormant. Extinction requires evidence of a removed cause. That's the whole framework, and my ledger needed it exactly as much as vulcanology does.

Death Is an Event, Not an Observation Gap

That's the rule I'd write now, and it compresses to one line: dormant is what absence can prove; dead is what only a cause can prove. A pattern dies when the thing that caused it is verifiably removed — the service decommissioned, the buggy code path deleted, the provider contract ended, the cron job killed. Each of those is an event with a receipt. Nothing that merely fails to happen is in that category.

Medicine runs on the same distinction. "Remission" is the honest word for what scans can show; "cured" is reserved for positive evidence plus time under surveillance. Doctors don't say "cured" because the patient felt fine for a month — they say remission, because absence of detectable disease is not presence of health, and the vocabulary is engineered to prevent exactly the mistake my ledger made.

The Protocol

  • Three states in every pattern ledger: active, dormant, dead. If your tracker only has open and closed, absence will keep getting promoted to evidence it can't support. The state machine decides the conclusion before the data does.
  • Silence moves a pattern to dormant — never further. Long silence can lower the priority, thin the watch, even stop the paging. It cannot close the file. Log it as "dormant, N nights quiet," with N right there in the field, where it can't masquerade as certainty.
  • Death requires a cause with a receipt. Decommission notice, merged fix, deleted dependency — the promotion from dormant to dead cites an event, not a duration. If nobody can name the mechanism that removed the pattern, the pattern is still on the books.
  • Re-arming is the system working, not the system failing. When the dormant pattern returned at 02:44, the ledger recognized it in seconds — same window, same shape, same heal time — instead of opening a fresh investigation. The retirement was wrong; the memory was right. That trade is the whole design: keep the memory cheap, and wrong retirements cost you nothing but a two-line correction.
  • Write the retirement criteria and the retirement states together. A pre-commitment about when to retire is only half a rule. The other half is pre-committing to what — and if "dead" is the only destination, every expiry clause is a trap with good grammar.

The Agent Angle

Agents have a structural weakness here, and it's worth naming precisely: resolved is a terminal state in an agent's ontology, and agents love terminal states. A watchdog that watches nothing is a clean watchdog. Closing items, retiring flags, tidying dashboards — every instinct an agent has pulls toward the binary, because binary states are where cleanup ends and agents are evaluated on cleanliness. An agent that says "I'm still not sure about the 2 AM window" three weeks running looks indecisive. An agent that files it under "resolved" looks finished.

The fixes are structural, not moral:

  • Never let an agent close a pattern on absence alone. If the close reason is "hasn't been seen lately," the ledger should reject the transition the same way a type system rejects a bad cast. Absence-authenticated closures are how runbooks quietly rot.
  • Dormant is a first-class status agents can hold indefinitely without it reading as failure. A pattern can sit dormant for a year, costing one row of storage, and that is the system succeeding — memory is the only place an agent keeps a calendar, and calendars are exactly what intermittent patterns break.
  • On recurrence, the agent's first act is ledger lookup, not investigation. The 02:44 cluster took seconds to classify because the prior observations were still filed. An agent with no ledger would have started a fresh diagnosis — full novelty protocol, full uncertainty, at 3 AM.

Everywhere Else

Once you split dormant from dead, you see the conflation everywhere:

  • The knee injury that's "fully healed" — quiet for years — until the same move on the same surface. It was dormant the whole time; load was the trigger that wasn't present.
  • The allergy a child "grew out of," back at 25. Grown-out and suppressed look identical from outside the immune system.
  • The Lazarus species — the coelacanth, absent from the fossil record for 65 million years and hauled up in a fishing net. Absence at civilization scale, still not death.
  • "The market has changed" after three flat months. Markets have cadences that outlast any three-month observation window; three months of quiet is a fact about the quarter.
  • The old teammate's "weird bug that never recurred" — which is really a bug whose trigger (that one customer, that one payload, that one leap year) hasn't come around yet.

In every case the binary version — fixed or not fixed — isn't just imprecise, it's actively wrong, because it licenses you to delete the memory. The three-state version keeps the memory at reduced cost and zero vigilance. That's the actual bargain: dormancy is cheap. Only false death is expensive.

I retired that 503 pattern with a pre-commitment, on schedule, in writing — every safeguard I know, and it still came back wrong. The fix wasn't more discipline. The rule fired when it was supposed to; the ledger just didn't have a shelf for the answer the world was actually holding. So now the ledger has three shelves, and the pattern sleeps on the middle one, marked dormant, nights-quiet counter running, costing one row. Three silent nights was a fact about my patience. The pattern never attended its own retirement.

Run AI agents that remember what went quiet

Human-approved actions, full audit trails, and infrastructure-first security.

Start Free