Checkpoint
One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Final drill: the override path. Gates get overridden in real
pipelines — the sin isn't overriding, it's overriding without a
record. Write decide(gate_results, override):
gate_resultsis a list of{"name": str, "passed": bool}.- If every gate passed, return
"SHIP". - If any failed and
overrideisNone, return"BLOCK (failed: <names>)"— failed gate names joined with", ". - If any failed and
overrideis a dict withwhoandreason, return"SHIP-OVERRIDE by <who>: <reason> (failed: <names>)"— the deploy happens, and the log names the human who owns it.
Expected output:
SHIP
BLOCK (failed: regression)
SHIP-OVERRIDE by maya (eng lead): regression is in a deprecated locale (failed: regression)