Most model-backed review jobs do not fail because the model is bad. They fail because someone edited prompts/review.md at 4pm on a Friday, and nothing in the pipeline noticed.
AI-authored diffs keep arriving faster than human review capacity grows, so more teams are wiring a model call into the PR path. That is a reasonable move. The problem is that the prompt, the decoding settings, and the fixture set now behave like production code, while being versioned like a scratch note.
This article gives you a small, reproducible artifact for that gap: a review lockfile plus a checker that fails CI when the prompt drifts without an explicit lock bump. It is boring on purpose. Boring is what you want sitting between a git push and a merge queue.
Three failure classes, three different fixes
When a model-backed review job goes red, people reach for the same reflex: rerun it.…