High Agreement, Wrong Decisions
Why judge development is not the same as judge validation
TL;DR
- Judge iteration is fine for development. The mistake is treating agreement on the same iterated-on labels as independent evidence of calibration.
- Without valid uncertainty, label budgeting is guesswork. If you do not reserve independent labels, you cannot tell whether 50 labels is enough, whether 200 changes the decision, or whether calibration error is still large.
- “Validated once” is unfalsifiable. Without fresh oracle labels per policy, you can't detect when calibration breaks.
The workflow everyone follows
Variations of this workflow appear in guides from Hamel Husain, LangChain/LangSmith, Patronus AI, and most eval platforms. It's a good starting point for building a judge. The problem isn't the iteration — it's what gets reported afterward:
Collect 50–200 human-labeled examples
Your golden set. Domain experts rate outputs on a rubric you designed.
Write a judge prompt
Define a rubric, add few-shot examples, pick a scoring scale (1–5, pass/fail, etc.).
Score the golden set, measure agreement
Run the judge on your human-labeled data. Compute Cohen’s κ, Spearman ρ, or percent agreement.
Iterate: tweak rubric, adjust examples, change scale
Low agreement? Rewrite the rubric. Add edge cases as few-shots. Switch from 5-point to 3-point.
Repeat until agreement > 90% (or κ > 0.8)
Hamel achieved >90% in his case studies (though he also warns raw agreement can mislead with imbalanced classes). Patronus targets κ > 0.8. Most teams iterate 5–10 rounds.
Deploy on all data
Ship the judge on 10,000+ samples. Report the mean score with confidence intervals.
The validation claim is where it breaks. Iterating the prompt is fine — that's how you build a better judge. The problem is treating the final agreement score as evidence of calibration. You used the same data to improve the judge and then to validate it. In ML terms, that is development and validation collapsed into one step.

Illustrative example. Left: Agreement climbs as you iterate the prompt on the same 200 labels. Right: Out-of-sample calibration error doesn't improve — and may get worse.
The human labels serve as both development signal (you iterate to maximize agreement on them) and validation evidence (you report the final agreement as proof of quality). That is the central confusion. Prompt iteration is legitimate. Reusing the same labels as if they were independent validation is not.
You collected 200 human labels. You iterated your judge prompt through 8 rounds until agreement hit 92%. You now have a judge that has been fit to those 200 examples. That 92% agreement is useful as a development metric. It is not independent evidence that judge scores map to human quality on new outputs.
This isn't hypothetical. Shankar et al. (2024) documented that labeling criteria co-evolve with the data during iteration — what they call “criteria drift.” As you refine your rubric to match the golden set, you're also implicitly narrowing what the judge considers “good” to match the patterns in those specific examples. LangSmith's self-improving evaluators automatically feed human corrections back as few-shot examples — making the prompt learn from its mistakes on the very data it'll be evaluated on.
Failure Mode
If all of your human labels get consumed during prompt development, you finish with a better judge but no held-out evidence that it calibrates or generalizes.
Agreement proves ranking, not calibration
Here's a one-liner every ML engineer already accepts: AUC is not calibration. A model with perfect AUC (ranks all positives above all negatives) can still assign completely wrong probabilities. The same logic applies here: Spearman ρ is not calibration either.
Rank correlations (ρ, τ) are invariant to monotone transforms of the judge's scores. A judge that perfectly orders responses can still get means completely wrong. Cohen's κ is different — it measures category agreement, not rank — but it still doesn't prove level calibration. A judge can assign the same categories as humans without those categories mapping to true quality magnitudes. High agreement means the judge discriminates — it does not mean 0.8 corresponds to 80% human quality.
| Oracle E[Y] | Judge E[S] | Spearman ρ | |
|---|---|---|---|
| Policy A | 0.62 | 0.093 | 1.0 |
| Policy B | 0.60 | 0.60 | 1.0 |
| Winner | A | B | — |
Both policies have perfect Spearman ρ = 1.0 — the judge ranks every sample the same way the oracle does. But the judge's level is wrong. Policy A wins on true quality (0.62 vs 0.60) but loses on judge scores (0.093 vs 0.60). If you report judge means as quality estimates, you pick the wrong policy.
Key Concept
Agreement metrics prove the judge discriminates. Calibration proves its level maps to reality. These are different properties.
More judge data doesn't fix the validation problem
This is the counterintuitive result. You deploy your validated judge on 10,000 samples. The standard error shrinks. The confidence interval tightens. But it's tightening around E[S], not E[Y]. If the bias b = E[S] − E[Y] ≠ 0, coverage for E[Y] → 0 as n → ∞.
You report 0.82 ± 0.01 and treat it as calibrated. It isn't. The ±0.01 is a valid interval for E[S]. But you're claiming it covers E[Y], and the bias between them doesn't shrink with more data. More judge labels make you more confidently wrong.
This also creates an operational problem: without independent labels and calibration-aware uncertainty, label budgeting is guesswork. Is 50 oracle labels enough? Is 200 enough? Did the last batch actually reduce uncertainty enough to change the decision? The standard workflow has no principled answer, because it never separates judge improvement from judge validation.
Caveat
This isn't a subtle finite-sample issue. If the judge is miscalibrated, more judge data makes you more confidently wrong. And without a held-out audit, you do not know how much oracle labeling is enough to catch that.
Evidence from the benchmark paper. In our 5,000-prompt experiment, the “Direct, no calibration” approach — reporting raw judge means with standard CIs — achieved 0% nominal-95% coverage for oracle policy values. Not one of the five policies' true values fell inside the reported confidence interval. With calibration-aware bootstrap: ~95%.
The missing variance term
Even after calibration, naive standard errors miss a critical component: calibration uncertainty. You learned your S → Y mapping from a finite set of oracle labels. Different oracle samples would give you a slightly different calibration function. At 5% oracle coverage, calibration variance accounts for over 50% of total variance.
Naive CIs (left) miss calibration uncertainty and undercover. Calibration-aware CIs (right) account for both sources and achieve nominal coverage.
“Validated once” is unfalsifiable
The standard assumption is: “The relationship we validated holds for all future policies.” Without new oracle labels, this claim is not falsifiable. You validated your judge on one distribution of outputs. When the policy changes — new model, different prompt template, shifted user population — the calibration surface can shift with it. But you have no way to detect the shift.
CJE makes this testable. For each policy, you can run a transport test: H₀: E[Y − f(S,X)] = 0. Collect 50–200 oracle labels on the new policy's outputs. If the residuals are centered at zero, your calibration holds. If not, recalibrate.
Two real examples
1. Arena “Unhelpful” policy. In our benchmark, we tested calibration transfer to an adversarial policy that generated deliberately unhelpful responses. The transport test caught it: δ̂ = −0.31, p < 0.001. The judge systematically overestimated quality for adversarial outputs because the calibration was learned on well-behaved policies.

Transport test at 25% oracle coverage. Well-behaved policies pass (residuals at zero). The Unhelpful policy fails: the surrogate overestimates quality.
2. Criteria drift (Shankar et al.). Even without policy changes, Shankar et al. showed that labeling criteria co-evolve with the data during iteration. As you refine your rubric and few-shot examples, the golden set becomes non-independent from the judge. The validation you ran in week 1 doesn't apply to the judge you're running in week 8.
These aren't edge cases. Practitioners already suspect “the judge breaks on weird styles.” CJE gives them a measurable diagnostic instead of a hunch.
Rule of thumb
Budget m ≈ (2.8σ/δ)² oracle labels to detect a bias of δ at 80% power (two-sided α = 0.05). With σ ≈ 0.25 and δ = 0.05, that's ≈200 labels. That's what a principled stopping rule looks like. Without this kind of uncertainty accounting, label budgeting is just guesswork.
When agreement is actually fine
Agreement is enough when:
- You only need ranking (pick best of k, preference training, filtering)
- Effect sizes are huge (10%+ gaps survive any monotone warping)
- You keep collecting new labels (congratulations, you've reinvented the audit loop)
Agreement is risky when:
- You report means and CIs as estimates of human quality
- You care about small improvements (0.02–0.05 bias flips conclusions)
- Policies change response style (verbosity, refusal, formatting shift the calibration surface)
- You “validated once” and never check again
Most teams fall into the second column. If you report a mean quality score with a confidence interval to make a ship/no-ship decision, you need independent validation and calibration-aware uncertainty, not just agreement.
What to do instead
The fix is a 3-step protocol that separates judge development from judge validation and makes calibration failure detectable.
Split your labels
Use part of your human labels to improve and calibrate the judge. Hold out the rest for validation. Never iterate on the validation set.
Audit transport per policy
Spend 50–200 oracle labels per new policy to test H₀: E[Y − f(S)] ≈ 0. Pass → reuse calibration. Fail → recalibrate.
Bootstrap with calibration refits
So confidence intervals reflect calibration uncertainty, not just sampling uncertainty. This is what gets you from 0% to 95% coverage and turns label budgeting into something principled.
Evidence
In the Chatbot Arena benchmark paper: 99% pairwise accuracy in the headline configuration (94% average across configurations), 0% → ~95% CI coverage, 14× cost reduction with 5% oracle labels. The uncalibrated judge ranked policies correctly but produced confidence intervals that covered 0% of true values. Calibration-aware inference fixed coverage without sacrificing ranking accuracy or leaving label budgeting to guesswork.
Ready to fix your evaluation?
Separate judge development from judge validation. Get honest confidence intervals. Know when your judge breaks on new policies.
Related Reading
Your AI Metrics Are Lying to You
The full case for calibrated surrogates: why “You're absolutely right!” scored well on evaluations but tanked user trust, and how CJE fixes the three classes of evaluation failure.
Offset vs. Refit: When Calibration Transfer Breaks
Research note on when you can reuse an existing calibration vs. when you need to refit from scratch. The transport test in action.
CJE Paper: Empirical Benchmark
Canonical empirical source for the 0% → 95% coverage and 14× cost reduction results.
