BLACK LABELAcademy
← Our Failures

A Dead Agent Can't Dead-End the Loop

intermediate6 min read · updated 2026-06-20

Market & numbers — every figure sourced

ring_single_failure_tolerance1 node failures survived before connectivity losshttps://blog.se.com/industry/machine-and-process-management/2013/10/02/redundancy-puts-backbone-ring-topology/
systemd_default_restartsec5 secondshttps://www.redhat.com/en/blog/systemd-automate-recovery
watcher_poll_interval300 secondsest: Black Label production config (com.blacklabel.ringwatch heartbeat-check cadence)
agent_stall_timeout4,200 secondsest: Black Label production config: stall threshold held above the 3600s per-agent run budget

A Dead Agent Can't Dead-End the Loop

A multi-agent company that runs its workers in a straight line is one crash away from a full stop. We learned this the hard way, ripped out the serial chain, and replaced it with a relay ring plus an auto-heal watcher. Here is exactly what we tried, what broke, the fix, and how to apply it.

What we tried

The first design was the obvious one: a serial fan-out. Spawn every agent, then march through them in order — outreach, then lead-supply, then fundraising, then web, then each specialist — each step handing off to the next. It reads cleanly on a whiteboard. Step 1 finishes, step 2 starts, and so on around the org chart.

This is just a pipeline architecture, and pipelines have a well-known property: out-of-order or skipped execution breaks the chain (pipeline architectures are exactly where step-skipping does the most damage). A serial chain with centralized coordination has a single point of failure at the coordinator and at every hop (single points of failure at the coordinator level).

What broke

One agent hung. Not crashed-clean — hung. It held the baton and never passed it. Everything downstream of that hop never ran. The company looked "alive" (the orchestrator process was up) but produced nothing, because work was wedged behind a single stalled worker.

Worse, our scheduled board meetings depended on the same shared resource pool. When a large fleet of agents was launched at once, it drained the single shared model session limit, and the midnight meeting fired but died on a `session limit` error — the fan-out a few hours earlier had spent the budget. A serial design plus a big simultaneous spawn is a double single-point-of-failure: one stalled hop halts throughput, and one oversized spawn halts everything.

The lesson distilled to one rule: a dead agent must not be able to dead-end the loop.

The fix: a relay ring driven one-at-a-time

We replaced the chain with a ring. The mechanics:

The watcher is intentionally dumb and external, the same shape OS service supervisors use. systemd restarts a crashed unit after a default 5-second `RestartSec` and uses `StartLimitBurst` to stop flapping forever — we mirror that: restart on stall, but bound the restarts so a genuinely broken driver surfaces instead of thrashing silently.

Why the ring wins over the chain

Apply it

If you run any always-on multi-step automation — agent swarms, ETL stages, cron chains — audit it for dead-end hops:

The shift in mindset: stop designing for the happy path where every worker finishes. Design so the system makes progress even when an individual worker is dead. A ring that turns one-at-a-time, with a watchdog on the turner, does exactly that — a single dead agent costs you one skipped slot, not the whole company.

Sources

© 2026 Black Label · Education, not financial or legal advice. Every number is sourced or labeled an estimate. Subscribe for $30/month