Exceeding the iteration budget ends the run, it does not pause it
The rule
Normative: this is the rule
- A state update that would push the run's iteration count strictly past the configured maximum ends the run.
- The budget's own last iteration is allowed; only exceeding it ends the run.
- The run then reports status
max_iterations_exceededwith no results, together with the configured maximum, the count reached, and the node that reached it. - This is a terminal verdict and not a pause: no resume handle is offered, and the status is never
paused.
What it means
Reaching the configured maximum is allowed; only going past it ends the run. A caller who sets the budget expecting the last permitted iteration to still happen is right — the guard only trips on the update that would push the count strictly beyond the maximum.
Where it does trip, the run does not pause. Nothing about the verdict looks
like the pause a run takes to wait on an interrupt or a deferred step: no
resume handle is offered, and the status reported is never paused. The
response carries no partial results, only the terminal status together with
the maximum that was configured, the count actually reached, and which node's
update reached it.
Example
A run configured with a maximum of 5, whose current node pushes the count to 999:
{
"status": "max_iterations_exceeded",
"results": [],
"metadata": { "max_iterations": 5, "current_iterations": 999, "node_id": "loop_node" }
}Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · SG-14 · changed in spec 1.0