The outcome lifecycle: what each result value means
An outcome's result column is a CHECK-constrained enum, not free text — pending, satisfied, needs_revision, max_iterations_reached, failed, or interrupted. These are real values with real definitions from Claude Managed Agents' own define-outcomes.md, not invented for this site.
pending
The default state for a freshly created outcome — the agent has not yet produced work to evaluate against the target, or evaluation has not yet run.
satisfied
The outcome's condition was met. The session transitions from active work back to idle — there is nothing further for the agent to iterate on for this specific target.
needs_revision
The evaluation found the work incomplete or incorrect against the outcome's condition. The agent starts a new iteration: it revises its approach and produces another attempt, which will itself be evaluated.
max_iterations_reached
The outcome has a max_iterations ceiling (this table defaults it to 3). If the agent is still receiving needs_revision evaluations when that ceiling is hit, iteration stops here — not because the work is judged acceptable, but because no further cycles are permitted. This is a distinct terminal state from satisfied: reaching the iteration limit is not the same claim as meeting the bar.
failed
The rubric fundamentally does not match the task, or the outcome's condition turned out to be unsatisfiable as written — not a matter of one more revision, but a structural mismatch between what was asked for and what was actually achievable or measurable.
interrupted
A user.interrupt event fired mid-evaluation. The outcome's lifecycle was cut short by direct user action rather than resolving through the agent's own iteration loop.
Why this matters for subagentoutcomes.com specifically
Every seed row on this site carries result = 'satisfied' — that's an honest claim about this session's own deliverables, not a default value left unset. A future outcome recorded here that ends in needs_revision or failed should look exactly as legitimate in this table as one that ends in satisfied: the point of a durable primitive is to record what actually happened, not to only record success.