Overview
When Cloud Improve runs in the cloud, it progresses through a series of phases and settles into a terminal status. If you are polling the API or building integrations that react to run outcomes, you need to handle the full set of status values.Run statuses
Thestatus field on a cloud improve run can be one of the following values:
| Status | Terminal | Description |
|---|---|---|
queued | No | Run is waiting to be picked up by the runner |
running | No | Run is actively in progress |
succeeded | Yes | Run completed and a winning candidate was found |
no_winner | Yes | Run completed but no candidate outperformed the current skill |
failed_transient | Yes | Run failed due to a temporary error (e.g. model timeout) — safe to retry |
failed_terminal | Yes | Run failed due to a permanent error — retrying will not help without fixing the underlying issue |
cancelled | Yes | Run was cancelled before completion |
Handling no_winner
no_winner is a normal, healthy outcome. It means the optimizer ran the full evaluation loop but the current skill already performs at or above the candidate threshold. No rollback is needed — the existing skill was not changed.
If you see repeated no_winner results, consider whether the skill has room to
improve given its current training signal volume.
Distinguishing failure types
failed_transient and failed_terminal let you decide whether to retry:
- Retry
failed_transient— the run hit a recoverable error (rate limit, timeout, temporary infra issue). Scheduling a new run is safe. - Do not automatically retry
failed_terminal— the run encountered a configuration or data error that will recur without intervention.
Run phases
While a run is in progress (status: running), the phase field reports granular progress:
| Phase | Description |
|---|---|
materialize | Loading the skill and its associated sessions |
validate | Checking that the skill and data are valid for improvement |
classify | Classifying sessions to identify improvement opportunities |
eval_current | Running evals against the current skill to establish a baseline |
generate | Generating candidate skill descriptions |
eval_candidate | Running evals against each candidate |
persist | Persisting the evaluation results |
apply | Persisting proposal-ready winner state and apply metadata |
eval_current or later has already consumed eval credits for those phases.
Candidate statuses
Each candidate within a run has its own status:| Status | Description |
|---|---|
generated | Candidate description was generated but not yet evaluated |
validated | Candidate passed structural validation |
winner | Candidate outperformed the baseline and was selected |
rejected | Candidate did not outperform the baseline |
applied | Candidate was applied to the live skill |
winner and applied per run. All other
candidates end as rejected.
For live progress updates, use
Improve Run Events.