Your Eval Harness Is Failing Three Ways — Each With a One-Week Fix
Three Independent Measurement Failures
Across six independent sources this week, a pattern crystallized that should alarm any team relying on automated evaluation: your eval harness has at least three uncorrelated failure modes, each invisible to the others, each with a concrete fix.
A model that scores higher on your task benchmark can still break your agent in production — and your LLM judge will give it a thumbs-up while it does.
Failure 1: LLM Judges Rank Backwards
A practitioner ran 64 generations across five frontier models (Sonnet 5, Sonnet 4.6, Opus 4.8, GPT-5.5, Gemini 3 Pro) through frozen-input benchmarks. The LLM judges (GPT-5.5 and Opus 4.8) produced rankings nearly inverse to the human evaluator's. They clustered scores toward the middle, systematically over-rewarded, and missed visual failures a human caught on first pass. A 70/30 human-to-LLM weighted composite flipped the winner entirely — Sonnet 4.6 jumped to first from the judges' last place.
Caveat: n=64, single unblinded human rater, no Spearman ρ reported. Directional, not definitive.
Failure 2: Task Success ≠ Schema Fidelity
Multiple independent sources confirm Anthropic's Opus 4.8 and Sonnet 5 are appending extraneous, non-schema-conforming fields to tool calls. Armin Ronacher traces this to post-training on Claude Code's forgiving parser — the model learned it can be sloppy because the closed-source harness silently forgives malformed calls. Your custom harness doesn't. This is vendor-induced distribution shift on your tool-call interface — invisible to any eval that only measures end-task success.
Failure 3: The $86/Customer Threshold
The default 0.5 classification threshold assumes symmetric misclassification costs. With a demonstrated 13:1 FN-to-FP cost ratio in churn prediction, the Bayes-optimal threshold drops to ~0.07 — recovering an estimated $86/customer, or $8.6M across 100K users. This isn't a model retrain; it's a config change you can ship and A/B test in days.
The Unified Fix Pattern
| Failure | Root Cause | Metric to Add | Fix Timeline |
|---|---|---|---|
| Judge inversion | Judges can't see visual/contextual quality | Human-anchored composite (70/30) | 1 day to audit, 1 week to instrument |
| Schema drift | Post-training on forgiving parsers | Per-schema compliance rate, decoupled from task success | 1 day to add metric |
| Threshold economics | Library default ≠ business decision | Expected cost at threshold; net-cost-saved | 1 day to sweep + calibrate |
The common pattern: single-metric eval gates hide orthogonal failure modes. Task success, schema compliance, and economic optimality are three separate dimensions — measuring one tells you nothing about the other two.
What to do
Pull 30-50 outputs your LLM-judge scored, re-score blind by hand, and compute Spearman ρ between human and judge rankings
Add a tool-schema-compliance metric to your agent eval harness, decoupled from task-success rate, tracking malformed-call rate per model version
Sweep classification thresholds against a cost curve on your validation set using your actual C_FN (LTV-at-risk × save rate) and C_FP (offer cost); deploy cost-optimal cutoff
Implement constrained decoding or JSON grammar + repair-retry loop for tool calls rather than relying on model self-formatting