Fixtures Rot: Put a Staleness Gate in Front of Your Model-Backed CI
A recorded model response is a cache entry with no expiry date. That is the entire bug. You record it once, replay it forever, and six weeks later your pipeline is confidently green against a prompt nobody remembers editing.
The merge queue is usually not the weak point. Teams that adopt recorded fixtures tend to get the gate right and the lifecycle wrong. The fixture becomes a binary blob that everyone is afraid to touch, so it never gets refreshed, and its assertions slowly stop describing anything real.
Below is the lifecycle I use: a decision table for where each check belongs, a local hook that never touches the network, a manifest with a hash and a deadline, and a nightly job that opens a reviewable diff instead of quietly rewriting history.
1. Put each check where it can actually be trusted
Not every check deserves the same home.β¦