Mistake
What happens
Do this instead
Ignore the offline-online gap
The judge number goes into the decision as if it were what users get.
Report judge, oracle and completion side by side.
No rollback triggers
Cost jumps and three people argue about what to do while it keeps climbing.
Name metric, threshold, window and owner before launch.
Treat shadow as approval
Canary is skipped, and a problem that only shows up with real users reaches everyone.
Run canary even when shadow looks clean.
Ops as an afterthought
A 2 a.m. latency spike, and on-call can't diagnose it or roll it back.
Finish the checklist before canary starts.