v5.0.0 — :stable must be earned promotion behind a verification job (basef boot-smoke). A failed gate skips promote, so :stable never moves and the cascade never fires; a passing gate promotes and pins :stable to the exact smoke-validated digest. consumer's preflight responsibility). Justifies the major bump. Catalog's own CI migrated to composable just recipes (component templates remain inline YAML — they ship to consumers). Proven end-to-end on the crucible nested-KVM runner in both directions (fail blocks, pass promotes).