Regression and Drift
Overview
Section titled “Overview”The last topic of the module, and the one that goes back and corrects an earlier decision with arithmetic.
Module 2 specified a regression trigger: a three-point fall in the correctness rate blocks the next release. That sounded careful. This topic shows it cannot work as written, and what to do instead.
The noise floor
Section titled “The noise floor”An eval score is a measurement, and measurements have a resolution. For a pass rate measured on n cases with R repetitions each, the smallest difference you can distinguish is roughly:
noise floor ≈ 1 / √(n · R)
That single expression settles whether a regression trigger is meaningful. Put the Module 2 numbers through it:
- 300 cases, run once: 1 / √300 ≈ 0.058 → ±5.8 points
- The trigger: 3 points
The trigger is inside the noise. Two consecutive runs of an unchanged system can differ by more than three points, which means the gate will block good releases on random variation, and a genuine three-point degradation will pass unnoticed inside the same spread. It is worse than no gate, because it produces confident-looking signals in both directions.
The grey band is the range two runs of an unchanged system can differ by. On the upper line the trigger sits inside it; on the lower line, four repetitions narrow the band until the same trigger clears it.
The fixes, cheapest first. More repetitions is the cheapest, because the case set is already curated and paired comparisons go further than independent ones. 300 cases run four times gives roughly ±2.9 points, which clears a three-point trigger. More cases works too and costs curation time. A continuous metric instead of a binary pass carries more information per case. Or widen the trigger to something the current set can actually see.
What you must not do is leave a trigger in place that the measurement cannot support. And note where this lands: four runs instead of one is four times the inference, which is precisely why Section 1 flagged eval runs as batch work at roughly half price. The statistics and the cost lever are the same conversation.
Do not score the plumbing
Section titled “Do not score the plumbing”The other way an eval produces confident nonsense, and it is purely a harness property.
Conflation is when a non-model failure lands in the same column as a model result. A timeout, a rate-limit error after retries, an unparseable output, a response truncated at the output cap, a tool that threw, a grader that crashed — if any of those is silently scored as a failure, the headline number is measuring your infrastructure.
Three rules:
- Attempts that never produced a scorable output go to an error sidecar with a failure class, never into the results.
- A truncated response is recorded and shown but not averaged in as wrong.
- “No answer” is not “negative answer.” A system that correctly declines must not score the same as one that crashed. Without this distinction, a harness that errors on every input scores identically to one that carefully found nothing — and refusals are a graded outcome in their own right, not an error.
Drift, and what each source requires
Section titled “Drift, and what each source requires”Quality decays for several distinct reasons, and the response differs:
| Source | Signal | Response |
|---|---|---|
| Provider updates the model | Offline score moves with no change on your side | Pin versions where possible; re-baseline deliberately |
| The corpus changes | Retrieval metrics move before answer metrics | The refresh semantics from Module 4 |
| Question mix changes | Online signals move while offline scores hold | New cases into the golden set |
| Your own prompt or config changes | Attributable, if one change at a time | The one-lever-per-change discipline from Section 1 |
The second row is worth noticing: grading retrieval separately from answers is what lets you tell a documentation problem from a model problem, which Module 4 argued is usually the likelier cause.
The gate, and the online half
Section titled “The gate, and the online half”A regression criterion needs three parts, or it is a dashboard: the number, the cadence, and what happens automatically. Blocking a release is a real gate. Emailing someone is monitoring theatre — the same point Module 3 made about health checks.
And offline gates cannot see everything. The online signals from earlier in this section are what catch the rest: handoff rate, repeat-question rate, and the confirmation-rejection rate, which is the proportion of proposed actions a human declines. That last one is the most direct quality signal in the system and it costs nothing to collect, because the gate already exists.
One comparability rule: version the case set and the grader together. Scores from either side of a grader change are not comparable, and without versioning nobody can tell that is why the number moved.
Feeds the workbook
Section titled “Feeds the workbook”Two rubric items land here: the eval plan must define what “worse” means numerically and what happens when it triggers. Run the noise-floor arithmetic for your own set size — if your trigger is inside the floor, fixing that is the single highest-value correction in this module’s workbook exercise.
→ Three pillars done — cost, safety and evaluation. One of them may disprove the business case. — Module 7 — Designing Under Uncertainty
Optional workbook: Exercise 6 turns this module into artifacts. The exercises build on each other, so work them in order or not at all.