Runbooks

Start from the status.conditions[Ready].reason on a StageSet, or from a firing operational alert, and follow the matching page to diagnose and remediate the symptom.

The controller appends the matching page link to each actionable Ready message — (runbook: https://stageset.projects.metio.wtf/runbooks/<reason>/) — so a kubectl describe routes you straight here. Healthy and intentional reasons carry no link.

The reasons below are grouped by what they mean for the rollout. If you are paging in a hurry, check Healthy and intentional holds first — those are not failures.

Healthy and intentional holds

The rollout is doing exactly what it was told to. No action is needed beyond the one the gate is waiting for — approve, promote, resume, or wait for the window.

ReasonWhat it means
SucceededAll stages applied and verified; healthy steady state.
SuspendedReconciliation is paused via spec.suspend.
UpdateDeferredA new revision is held by a closed update window.
SoakingA healthy stage is holding through its soak window before advancing.
AwaitingPromotionA healthy stage is holding for a manual promotion.
AwaitingApprovalA version transition is held for operator (or FleetRollout) approval.
BudgetExhaustedA rollout is frozen because the service is out of its SLO error budget; it resumes on its own when the budget recovers.

Waiting on upstream

Blocked on something outside the StageSet. These usually clear on their own once the upstream becomes ready; check the referenced source or dependency.

ReasonWhat it means
SourceNotReadyThe source exists but has not published a ready artifact yet.
ArtifactNotFoundThe referenced ExternalArtifact could not be found; the controller requeues.
ResolveFailedA source reference could not be resolved to a ready ExternalArtifact.
DependencyNotReadyA StageSet named in spec.dependsOn is not yet Ready.

Failures that need action

Something is wrong with the StageSet, its sources, or its permissions, and the rollout will not progress until you fix it.

ReasonWhat it means
StageFailedA stage failed to fetch, build, apply, verify, or run an action.
StalledThe run cannot make progress and will not retry until the spec changes.
InvalidSpecThe spec is invalid; the Message names the offending field or action.
InvalidVersionA version source or value could not be parsed as semver.
RBACDeniedAn apiserver call failed with Forbidden, or referenced a kind the apiserver does not know.
PromotionBlockedA stage’s promotion analysis breached its thresholds.
PreviousRevisionUnavailablerollbackOnFailure is set but the last-good revisions could not be restored.
BudgetSourceUnavailableA metric source for an error-budget freeze or a promotion analysis could not be read.
TeardownForcedA deleting StageSet’s finalizer was force-dropped after teardown kept failing, possibly orphaning objects.

Migration problems

A version-aware migration is holding the rollout back. The version stays pinned to a safe revision until the migration is fixed or approved.

ReasonWhat it means
MigrationFailedA migration’s action failed; the run halts and retries with backoff.
MigrationDirtyA migration failed repeatedly; auto-retry is halted until a manual reconcile clears it.
MigrationArtifactInvalidA sourced migration ladder could not be parsed or failed content validation.
MigrationCoverageMissingA major-version transition has no covering migration and coverage is required.
MigrationStageNotFoundA migration anchors to a stage that does not exist in this StageSet.
MigrationSourceNotPinnedA sourced ladder is pinned to a mutable tag or branch instead of an immutable digest or commit.
MigrationSourceNotVerifiedA sourced ladder is not signature-verified; the destructive ladder is refused.
DowngradeRequiresMigrationThe desired version is below the deployed version across a migration boundary.

Operational alerts

These are reached from a firing Prometheus alert rather than a Ready reason — they describe the controller’s own health, not a single StageSet.

AlertPageWhat it means
StageSetControllerPodDownController pod downA controller pod has been NotReady for the alert window.
StageSetReconcileLatencyHighReconcile latency highReconcile p99 latency is above threshold.
StageSetControllerWorkqueueDepthHighWorkqueue saturationThe controller cannot drain its reconcile queue fast enough.
StageSetWebhookCertRenewalFailingWebhook cert renewal failingThe self-signed admission webhook certificate is not being rotated.
StageSetWatchEngagementFailingProducer watch engagement failingA dynamic watch on a producer source kind failed to engage, so referencing StageSets stop re-triggering on its changes.