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).