Skip to main content

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

The status field on a cloud improve run can be one of the following values:
StatusTerminalDescription
queuedNoRun is waiting to be picked up by the runner
runningNoRun is actively in progress
succeededYesRun completed and a winning candidate was found
no_winnerYesRun completed but no candidate outperformed the current skill
failed_transientYesRun failed due to a temporary error (e.g. model timeout) — safe to retry
failed_terminalYesRun failed due to a permanent error — retrying will not help without fixing the underlying issue
cancelledYesRun 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:
PhaseDescription
materializeLoading the skill and its associated sessions
validateChecking that the skill and data are valid for improvement
classifyClassifying sessions to identify improvement opportunities
eval_currentRunning evals against the current skill to establish a baseline
generateGenerating candidate skill descriptions
eval_candidateRunning evals against each candidate
persistPersisting the evaluation results
applyPersisting proposal-ready winner state and apply metadata
Phases run in order. A run that fails during eval_current or later has already consumed eval credits for those phases.

Candidate statuses

Each candidate within a run has its own status:
StatusDescription
generatedCandidate description was generated but not yet evaluated
validatedCandidate passed structural validation
winnerCandidate outperformed the baseline and was selected
rejectedCandidate did not outperform the baseline
appliedCandidate was applied to the live skill
Only one candidate can reach winner and applied per run. All other candidates end as rejected. For live progress updates, use Improve Run Events.