Checkpoint
One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Write evaluate(canary, incumbent) — the rollout decision as code. Print the comparison line f"canary {c:.1%} (n={cn}) vs incumbent {i:.1%} (n={inn})", then the verdict: "-> SOAK: not enough canary traffic for a verdict" below MIN_N=500; "-> PROMOTE" at-or-above the incumbent; otherwise "-> ROLLBACK: registry promote(previous), one command, no meeting". Run the two readings: an early n=200 look, then the soaked n=1000 one.