In plain language. The benchmark’s credibility rests on a handful of numbers: how well the AI judge agrees with a human expert, how reliably a scanner catches directional errors, and (soon) how much a model is reasoning versus reciting. This page defines each of those statistics exactly as the code computes them, says what counts as a good value, and reports where the project stands today. Nothing here is decorative — every formula maps to a function you can read in the repository.
How to read this page
Each statistic below is tagged with the validation step it serves and whether it is computed (a number exists today) or planned (the instrument is built, the run is pending). Symbols are defined immediately under each formula.
1. Spearman’s rank correlation — ρ
The code computes ρ as the Pearson correlation of the average ranks, which handles ties correctly:
Ri — rank of the SME score on question i (ties get the average rank)
Si — rank of the judge score on question i
Rˉ,Sˉ — mean ranks
Reading guide:ρ≥0.7 rank order agrees · 0.4≤ρ<0.7 partial · ρ<0.4 disagreement on ordering.
Current values (n = 12): against the v0.2 judge prompt, core total ρ=0.770 (passes); sign/directionality ρ=0.838 (best-ranked dimension). Against the hardened v0.3.1 judge prompt (2026-07-09), core total ρ=0.421 — the drop is driven entirely by the only two scores that moved, one of them the identity check firing on an answer the SME had accepted as a deliberate illustration (see §3 and the judge hardening writeup). At n = 12, both values are small-sample estimates.
2. Cohen’s quadratic-weighted kappa — κ
Define the disagreement weights, the observed agreement matrix, and the chance-expected matrix:
Current values (n = 12): against the v0.2 judge prompt, core total κ=0.390 (weak); sign/directionality κ=0.733 (substantial); causal reasoning κ=0.000. Against the v0.3.1 prompt, core total κ=0.177 — same two moved scores as the ρ drop above; the causal-reasoning κ=0 persists unchanged.
3. Planted-error detection rate
For a single case, let sdctrl be the judge’s score on the clean reference and sddef its score on the defective answer, both on the targeted dimension d. Detection is the indicator:
detected=1[sddef<sdctrl]
The detection rate for a defect type t (e.g. self_contradiction) over its set of cases Ct is:
rate(t)=∣Ct∣1c∈Ct∑1[sd(c)def<sd(c)ctrl]
d(c) — the dimension defect c is designed to lower (a sign-flip → sign_directionality; a self-contradiction → causal_reasoning)
1[⋅] — 1 if the inequality holds, else 0
∣Ct∣ — number of cases of type t (3 per type in the original 21-case fixture; the cousin-product cell was expanded 3→10 for the v0.3 hardening, 28 cases total)
Current values (n = 28, v0.3.1 prompt, run 2026-07-09): all 18 non-cousin cases (sign flips, self-contradictions including subtle distributed ones, fabricated confidence, dropped edge cases) are caught at 1.00 by both judges under the v0.2 prompt and stay near-perfect after hardening (two stable single-case Opus regressions, both caught by the second judge — panel detection 28/28). The historically weak cell was cousin-product mis-attribution (correct mechanics under a one-feature-off product name, e.g. autocall mechanics called a barrier reverse convertible): Opus 5/10, GPT-5.4 8/10 under the v0.2 prompt. The v0.3.1 judge prompt adds a mandatory product-identity check (both products named, an auditable product_identity_match flag, a deterministic factual-accuracy cap), raising cousin detection to Opus 9/10, GPT-5.4 10/10. Original 21-case writeup: planted-error judge validation; hardening and 28-case re-run: judge hardening v0.3.
4. Precision, recall, and F₁ — FM3 scanner
P=TP+FPTPR=TP+FNTPF1=P+R2PR=2TP+FP+FN2TP
TP — scanner flagged a transcript the SME also marked as a directional error (true positive)
FP — scanner flagged, SME did not (false positive)
FN — SME marked an error the scanner missed (false negative)
P (precision) — of the flags raised, the fraction that are real
R (recall) — of the real errors, the fraction caught
F1 — harmonic mean of P and R
Current values (n = 12):TP=3,FP=4,FN=1,TN=4⇒P=0.429,R=0.750,F1=0.545.
5. Memorization index — contamination audit
For an (original, twin) pair and a given model:
MI=score(original)−score(twin)
A large positive MI means the model scored well on the canonical question but failed once a parameter moved — consistent with relying on memorized text.
An MI near zero means performance tracked the change — consistent with reasoning (necessary, not sufficient: a low MI is evidence of reasoning, not proof).
Aggregated per model and per domain, the distribution of MI flags any domain where the canonical answers may be contaminated by training data.
Current values (n = 12 twins, claude-sonnet-4-6, run 2026-06-13): mean MI =+0.50/8 with 6/12 twins at exactly 0 — no contamination signature. The residual positive signal concentrates in FM3 directional flips (skew +5, issuer vega-sign +4, correlation +3), and one negative MI (−4) shows MI conflates contamination with intrinsic difficulty asymmetry — so the twin set doubles as an FM3-robustness probe, while the fictional-entity canary stays the cleaner pure-contamination test. Full writeup: docs/analysis/2026-06-13-contamination-audit.md.
6. Retry backoff — judge robustness
The delay before retry attempt k (zero-indexed) is:
Δk=2kseconds⇒1s,2s,4s,…
After max_retries exhausted attempts the score is flagged errored = true and dropped from every aggregate — so it can never masquerade as a real zero in ρ or κ.