Secrets: the invariants that gate the boot

web fails loudly rather than degrading silently: a missing required value crashes startup with a structured enforce_prod_invariants error naming exactly what is absent. So a CrashLoopBackOff is almost always a missing secret:

kubectl logs deploy/navigator-web -n navigator