DowngradeRequiresMigration see history edit this page

Talks about: , , , and

Symptom

READY=False, REASON=DowngradeRequiresMigration. Terminal: the run does not requeue until the boundary gains a down path or the target version is raised above it.

Cause

spec.version.allowDowngrade is set, so downgrades are permitted — but the transition crosses a migration boundary that was applied on the way up and declares no down actions. That boundary is irreversible: lowering the version past it would leave the schema ahead of the code. Rather than do that silently, the controller refuses and names the migration. A downgrade only proceeds when every applied boundary it crosses can be unwound.

Diagnosis

kubectl --namespace <namespace> describe stageset <name>   # the message names the irreversible migration
kubectl --namespace <namespace> get stageset <name> --output jsonpath='{.status.version}'   # deployed
kubectl --namespace <namespace> get stageset <name> --output jsonpath='{.status.executedMigrations}'   # what was applied

stagesetctl plan <name> previews the rollback and flags the irreversible boundary the same way, before you commit the version change.

Remediation

Pick the intended direction: