Run and attempt states
A run is one execution of a task. An attempt is one try inside that run, so a run that retried twice has three attempts. For what they are, see runs and attempts.
Run statuses
Section titled “Run statuses”| Status | Means | Set when |
|---|---|---|
pending | Waiting for a runner to pick it up | The run is created, or a stale run is requeued |
assigned | A runner has claimed it | The runner’s heartbeat claims the run |
in_progress | An attempt is executing | The runner opens its first attempt |
paused_approval | Stopped at an approval gate | The task needs approval, or the agent asks mid-run |
finalized | Finished, with an outcome | The runner reports a result, an approval is denied, or the control plane stops it |
cancelled | Stopped deliberately | Cancelled from the run |
review | Reserved | Nothing sets it today |
The approval gate
Section titled “The approval gate”paused_approval is the one status a run can enter and leave without finishing.
- A run that needs approval is created already paused, before any runner sees it. A run that hits a gate mid-flight is paused where it stands.
- The run remembers the status it paused from.
- Approving returns the run to that remembered status, so a run paused before it was claimed goes back to
pendingand one paused mid-execution resumes. - Denying finalizes the run with the outcome
inconclusiveand the reasonapproval_denied, fails the running attempt, and frees the runner.
Terminal outcomes
Section titled “Terminal outcomes”A finalized run carries exactly one outcome.
| Outcome | Means |
|---|---|
accepted | The work was accepted. This is the one that lets the task advance |
rejected | The work was produced and rejected |
inconclusive | No usable answer. Denied, abandoned, or stopped |
Alongside it, a run may carry a reason. Three are written by the platform itself rather than by a runner:
| Reason | Written when |
|---|---|
approval_denied | An approval gate was denied |
abandoned | The assigned runner went stale and the run was out of attempts |
wall_clock_exceeded | The run passed its wall-clock limit and was stopped |
Attempt states
Section titled “Attempt states”An attempt carries a status and a phase. The status says whether it is alive; the phase says what it is doing.
| Status | Means |
|---|---|
running | Executing now |
completed | Finished and reported a result |
failed | Finished without one |
cancelled | Stopped before it finished |
| Phase | Means |
|---|---|
planning | Working out what to do |
executing | Doing it |
awaiting_review | Waiting for its work to be evaluated |
done | Finished |
When a run retries
Section titled “When a run retries”Every run carries an attempt ceiling, from the budget resolved for its task type. A run whose runner goes quiet is requeued to pending and tried again while attempts remain. Once they run out, the run finalizes inconclusive with the reason abandoned instead of waiting forever.
The current values are on limits.
Next steps
Section titled “Next steps”- Runs and attempts: the same machine, explained rather than tabulated.
- Task states: what the task does while its run moves.
- The approvals queue: deciding a gate.