Ratchet
A ratchet is a quality gate that can only tighten. It records your current score as the new minimum, so any future change has to match or beat it to merge. The nice part: it locks in wins automatically, so you never have to remember to raise the bar yourself.
Why it matters
Quality decays quietly. Someone adds a hack "just for now," coverage slips two points, a lint rule gets suppressed, and six months later the codebase is a swamp nobody chose. A ratchet makes each backslide fail loudly the moment it happens, while the change is small and the author is still looking. It turns good days into permanent floors instead of high-water marks you drift back down from.
How it works
Store the best-seen value for a metric somewhere durable, like a committed file or a CI status check. On each run, compare the new value against the stored floor and fail if it is worse. If it is better, write the new value back as the floor. Common targets are test coverage, type-error counts, bundle size, accessibility violations, or an eval score. Let the floor climb on its own, and only lower it by hand with a reviewed, deliberate exception.
A support bot's answer-quality eval sits at 88 on the golden set, and the ratchet writes 88 as the floor. A teammate ships a prompt tweak that scores 90, so 90 becomes the new minimum. Next week someone refactors retrieval and quietly drops to 87. CI blocks the merge, because the ratchet will not let yesterday's 90 slide back to 87.