Skip to content

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.

StatusMeansSet when
pendingWaiting for a runner to pick it upThe run is created, or a stale run is requeued
assignedA runner has claimed itThe runner’s heartbeat claims the run
in_progressAn attempt is executingThe runner opens its first attempt
paused_approvalStopped at an approval gateThe task needs approval, or the agent asks mid-run
finalizedFinished, with an outcomeThe runner reports a result, an approval is denied, or the control plane stops it
cancelledStopped deliberatelyCancelled from the run
reviewReservedNothing sets it today

paused_approval is the one status a run can enter and leave without finishing.

  1. 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.
  2. The run remembers the status it paused from.
  3. Approving returns the run to that remembered status, so a run paused before it was claimed goes back to pending and one paused mid-execution resumes.
  4. Denying finalizes the run with the outcome inconclusive and the reason approval_denied, fails the running attempt, and frees the runner.

A finalized run carries exactly one outcome.

OutcomeMeans
acceptedThe work was accepted. This is the one that lets the task advance
rejectedThe work was produced and rejected
inconclusiveNo 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:

ReasonWritten when
approval_deniedAn approval gate was denied
abandonedThe assigned runner went stale and the run was out of attempts
wall_clock_exceededThe run passed its wall-clock limit and was stopped

An attempt carries a status and a phase. The status says whether it is alive; the phase says what it is doing.

StatusMeans
runningExecuting now
completedFinished and reported a result
failedFinished without one
cancelledStopped before it finished
PhaseMeans
planningWorking out what to do
executingDoing it
awaiting_reviewWaiting for its work to be evaluated
doneFinished

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.