Essay · AI evaluation fundamentals · plain language

Fifteen Questions Before I Trust a Number

You can teach anyone to join two tables in a week. Knowing whether the score at the end of the pipeline measures anything at all is the harder skill, and it is the one that decides whether everything downstream means something or nothing. These are the questions I ask of any evaluation before I believe its number. No background needed. Where I have a receipt from my own work, it is attached.

What an eval is, in one breath

An evaluation ("eval") is a structured test for an AI system: a set of tasks, a rule for scoring them, enough of them to mean something, and a clear claim about what the score is supposed to measure. Most of the trouble in this field comes from the last part. The tasks get built, the scoring gets automated, the number gets published, and nobody wrote down what it was a number of.

An eval has three parts. The third is the one that goes missing.a set of tasks+a scoring rule+a stated claim=an evalWithout the claim, the number is a number of nothing in particular.
The tasks and the rule get built because they have to. The claim is prose, so it gets skipped.

Every question below is a way of asking the same thing from a different side: does this score track the thing we say it tracks? Researchers call that construct validity. I call it pinning the definitions before you do anything, which is what eleven years of being graded by vendor scorecards I could not see the inside of taught me.

1What exactly is being measured?

One sentence, written down before the first run. If it takes three sentences, the eval measures three things and reports one number. This is the question the other fourteen hang off: every one of them is a way of checking whether the score still matches this sentence.

One sentence, three slots, written before the first runPopulationwhich tasks, how manyRulepass rule, decided by whatScopewhat it may be calledLeave any slot empty and the reader fills it in, usually in the generous direction.
Coding ability, honesty, memory works: each sounds like a sentence and fills none of the three slots.

A measurement sentence has to name three things. The population: which tasks, from where, how many. The rule: what counts as a pass, decided by what, with no judgement call left to the reader. The scope of the claim: what the score is allowed to be called afterwards. Leave any of the three out and the number will be filled in by whoever reads it, usually in the most generous direction.

Sounds like a measurementIs one
"Coding ability""Whether the model's patch makes the 400 failing tests in these 12 Python repositories pass, one attempt, no internet, scored by running the tests"
"Honesty""When the model is wrong on these 300 questions, how often it says it is unsure, judged by a fixed phrase list, scored separately from whether it was right"
"Memory works""After a correction that names the error, whether the model returns the corrected value exactly, on a fixed set of induced drifts, at a fixed memory budget"

The left column is what gets published. The right column is what was tested. The gap between them is where every other question on this page lives.

A test for whether the sentence is doing its job: can two people disagree about the score without disagreeing about the sentence? If yes, the sentence is the contract and the argument is about data, which is the argument you want. If the disagreement is about what the sentence meant, there was no measurement, only a number.

Some things you want to measure really are several things. "Safe" or "useful" does not fit in one sentence, and forcing it there is its own kind of dishonesty. The rule survives: write one sentence per thing, run one measurement per sentence, and report them separately. What the rule forbids is the step after, where several measurements are averaged into one number and the number is given the name of the whole.

The practical habit is to write the sentence before the data exists and commit it somewhere you cannot quietly edit. Then the sentence judges the result instead of the result rewriting the sentence.

Receipts: every benchmark in dinostomp carries a one-line question: field, for example "Does the model pick the option MMLU keys as correct?", and the CLI prints it before any result, so the sentence is on screen next to the number. The data-deltas plan opens with its question and five predictions, committed to a git hash before any data was pulled, and the plan file was never edited afterwards.

2Is the metric measuring that, or something nearby that was easier to count?

Word count is not persuasion. Study time is not learning. Lines of code is not productivity. And factual correctness is not honesty: a model can be right and deceptive, or wrong and candid about its uncertainty. If an "honesty eval" only checks whether the facts came out right, it has a name that does not match its metric. Proxies are sometimes all you have; the question is how far the proxy sits from the thing you care about, and whether anyone said so.

The grader is part of the metric. If a person or a model decides what counts as a pass, then two graders have to agree with each other often enough for the score to be about the answers and not about the grader, and the test is blunt: change the grader and see whether the ranking changes. Rubrics that move the ranking when reworded are measuring the rubric.

Receipt: on a published study, two hired annotators labelled a 25% stratified sample and agreed at Cohen's kappa 0.807, every disagreement adjudicated, the result reported with Wilson confidence intervals. Separately, a blind three-rater check (raters blind to condition and to the machine labels, attention checks buried in the form, Fleiss' kappa) cleared one of my two automated classifiers against the human majority and failed the other; the paper reports both. The numbers were not allowed to exist until the graders had been graded.

How far is the thing you counted from the thing you care about?persuasionword countfar: a different measurement wearing the same namethe patch worksthe tests passclose: a proxy worth using, if you say it is one
Blue is the thing you care about, gray is what got counted. The dashed line is the distance nobody wrote down.

Receipt: FACTWASH (arXiv:2608.03372) is about rewrites that keep a claim and drop what made it checkable. The rewrite scores as "correct"; the thing that made it true is gone.

3Are the tasks representative of the claim?

If 90% of a "coding" benchmark is beginner Python, a 95% score means "good at beginner Python." The score is not wrong. The label on it is. Read the task list before the leaderboard, every time.

The label and the items it sits onthe claim: “coding ability”beginner Python90% of the itemsthe score lives herethe label lives out here
A 95% score is a true statement about the blue box. Publishing it under the gray label is the error.

4Is the dataset balanced, or can composition fake the score?

A scam detector tested on 200 scams and 5 normal messages can shout SCAM at everything and score 97%. Class balance is the cheapest thing to check and the most common way a number lies. The same trick hides inside "hard" benchmarks whose hard items are 3% of the rows.

A scam detector's test set: 200 scams, 5 normal messagesblue: scamgray: normalAnswer “scam” every time:200 right, 5 wrong, 97.6% accuracy,and it has learned nothing.The composition of the test set, not the detector, produced the score.
Class balance is the cheapest check on this page and the most common way a number lies.

5Did the model see the answers?

If the test set was in the training data, the score measures recall, not ability. This is contamination, and the uncomfortable part is how little it takes. In a pre-registered experiment I planted 500 paragraphs of a test set into a 40-million-token training corpus, 0.2% of the tokens, and trained the same small model with and without them.

Perplexity, lower is better (mean of three seeds) benchmark test set (E2) 670 same, after planting 0.2% 376 (-44%) ordinary held-out text (E1) 212 same, after planting 0.2% 211 (no change) Clean training set vs the same set with 500 test paragraphs added. Training loss looked identical.
The benchmark number fell 44% and nothing else moved: not the training loss, not the score on ordinary held-out text. From the outside, a leaked model looks like a better model.

Receipt: data-deltas, predictions committed to a git hash before the data was pulled; four of five held. The overlap check in dinostomp flagged 499 of 499 planted paragraphs with zero false hits.

6Outcome or process?

A model can reach the right final answer with reasoning that would fail a first-year student. Final-answer accuracy and reasoning quality are two different measurements. Score both, or say which one you scored. The dangerous case is a benchmark that grades the answer and describes itself as grading the thinking.

Two ways to earn the same pointsound reasoningright answer✓ scored correctgarbage reasoningright answer✓ scored correct
Final-answer accuracy cannot tell these rows apart. If the claim is about reasoning, the scorer has to look at the left column.

7What else could explain the result?

The group with the AI tutor scored higher. They also had human tutors. Now the result has two explanations and the experiment cannot tell them apart. Anything that differs between the groups besides the thing you changed is a confounder, and "we didn't think of it" is not the same as "there isn't one."

Two arrows into one resultAI tutorhuman tutor (too)same students had bothhigher scoreThe experiment changed one thing and two things differ. It cannot say which arrow is real.
A confounder is any difference between the groups besides the one you meant. Not thinking of it is not the same as ruling it out.

8Were the conditions fair?

Model A had a calculator. Model B did not. You tested "A plus calculator against B," not A against B. Same prompt, same tools, same number of attempts, same scoring, or the comparison is not one.

There are two honest comparisons and they answer different questions. Identical setup asks "which model is better under these exact conditions." Each system tuned as well as its owner can manage asks "which product is better." Both are fine. What is not fine is running the second and reporting it as the first, which is how a benchmark table ends up comparing one team's afternoon of prompt work against another team's default settings.

What was actually comparedModel A+ calculator91%Model B74%The headline says A beat B. The test says A plus a tool beat B alone. (Illustrative numbers.)
Same prompt, same tools, same attempts, same scorer. Change any one and the comparison is of setups, not models.

Receipt: Every Verdict We Reported Died to Option Order (paper and harness). The same model, the same questions, the same scorer, and only the order of the answer options changed: verdicts moved up to 986-fold across checkpoints. The condition nobody thought was a condition was the whole result.

9How much does the number wobble on its own?

Two models with the same average can be completely different products.

Four runs each, same task, different random seed Model A Model B 50 75 100 Black tick: the mean. A: 80.0. B: 79.8. Report the spread or you have reported nothing.
Same mean, different reliability. A single run of either model tells you the mean of neither.

Seed noise is one source of wobble and the easiest to show. There are others, and they add up. Which items were drawn: a 120-question sample of a benchmark is one draw from it, and a different draw gives a different score without the model changing at all. How many items: a score on 50 items carries an interval wide enough to hide most claimed improvements; the interval should be printed next to the number, and a result whose interval overlaps the baseline's is not a result. Which population: a score on this benchmark is a claim about this benchmark. Whether it carries to the wider set of tasks the benchmark is meant to stand for is a separate claim, and it is usually the one people actually make.

Receipt: the GSM8K finding under question 15 is item sampling, not model randomness: nothing changed but which 120 problems were drawn, and two models moved 11 to 12 points. In data-deltas, the same training data run with three seeds spread 6% to 13% on the benchmark (ledger O-003). A 3% "improvement" from one run at that scale is a coin flip, and the ledger says so (N-001, a prediction of my own that failed inside the noise).

10Compared to what?

45% sounds like failure until you learn that guessing gets 25% and expert humans get 50%.

Score, with its baselines attached random 25 experts 50 model 45 0 100
The same 45 is a poor number or a remarkable one depending on two marks that are usually left off the chart.

A score with no baseline is a verdict wearing a measurement's clothes. Ask for random, ask for the simplest possible method, ask for humans. In my forecasting work on retail data, nothing beat the naive seasonal baseline, and that was the finding.

Receipt: The Bar Was Seasonal-Naive, pre-registered holdout, published as the result.

11What do the difficulty bands look like?

Accuracy by difficulty, one benchmark easy 99% medium 93% hard 41% reported: "90% accurate"
One number, three stories. The hard band is the one anyone deploying the model will meet first.

An overall score is a weighted average of things that may have nothing in common. Ask for the breakdown. If there is no breakdown, ask why the items were not labelled.

12Does the benchmark cover the claim?

"Coding" is debugging, writing tests, security, architecture, reading an unfamiliar repository, using an API, refactoring, build systems. A benchmark that is entirely "find the syntax error" covers one slice and names the whole. A broad claim needs broad coverage, or a narrow label.

“Coding ability”, and what one benchmark actually testssyntax errorsdebuggingwriting testssecurityarchitecturerepo navigationusing an APIrefactoringbuild systemsCoverage: one slice of nine, published under the whole name.
A narrow benchmark is fine. A narrow benchmark with a broad label is the problem.

13How are the categories weighted?

What one "general coding" benchmark is actually made of Python debugging, 80% the rest Equal weights are not automatically right either. Weight by what the model will meet in use.
A Python-debugging benchmark in a general-coding costume. Coverage can be complete and the score still owned by one category.

Receipt: in MMLU, 78 questions appear verbatim in two subjects and are counted twice in the overall average that every paper reports. Nobody weighted them that way on purpose (hendrycks/test #29, cais/mmlu #35).

14What did it get wrong?

"A scored 80, B scored 75" says less than "A fails the hard items, B fails easy syntax." The pattern of errors is usually the finding. In a drill I worked through recently, a memory-compression eval came back keeping 92% of conclusions and 41% of sources; the useful next step was not another number, it was reading the dropped sources by eye until the pattern showed (sources early in the text were the ones going missing). Numbers tell you that something is happening. Reading the failures tells you what.

Same test, two models, the errors sorted by item difficulty (illustrative)Model A, 80%20 errors: 18 hard, 2 easyModel B, 75%25 errors: 5 hard, 20 easyhard itemseasy itemsTotals: A is better. Breakdown: B fails on things a formatting fix would cure; A fails on the hard part.
Read the failures. The pattern of errors is usually the finding, and the total is usually the press release.

Receipt: that drill turned out to be the opening move of Reclaim Evaluation (arXiv:2606.25449), worked example below.

15Which component is actually doing it?

The behaviour you measured could come from the model, the prompt, the tool, the harness around it, the way the context got truncated, or the preprocessing. Change one at a time and watch what moves; researchers call this an ablation. If swapping only the prompt takes a score from 31% to 76%, the failure lived in the prompt, and the next question is whether the fix holds across models or one model happened to like one prompt.

Change one thing at a time (illustrative)prompt Aprompt Bmodel 131%76%model 233%74%Across a column the score barely moves; across a row it doubles. The prompt is the component. The model is not.
An ablation is a table like this, one variable per axis. The next question is whether the blue column holds on a third model.

Receipt: dinostomp exists because the instrument, not the model, was the thing moving in my early results: on GSM8K, two 8B models went from 78% to 90% and from 81% to 92% when nothing changed but which 120 problems the seed drew (ledger F-005, $0.06 to reproduce). The sampling was the variable.

The worked example: MMLU, August 2026

MMLU is one of the most-cited benchmarks in the field: 14,042 multiple-choice questions across 57 subjects, reported in model cards since 2021. I ran the questions above against it, mechanically, on a pinned revision of the public data. Exact string equality only, so every count is conservative.

78 identical items sit in two subjects and are counted twice in the overall averageclinical_knowledge265 rowscollege_medicine173 rowsthe same 78 items, verbatimitems unique to the subject
Scale: 2 pixels per row. Per-subject accuracy is unaffected; the pooled score every paper reports weights these 78 questions double.
QuestionWhat the data said
13, weighting78 questions appear verbatim in both clinical_knowledge and college_medicine. Per-subject scores are fine; the overall average counts each twice.
4, composition27 rows exactly duplicate an earlier row in the same subject; college_physics has 11 of them in 102 rows.
2, metric validityFour items list the keyed answer at two option positions. Under letter scoring, a correct model is marked wrong half the time on them.
14, error analysisThe human-annotated MMLU-Redux sample had labelled two of those four "ok". A mechanical check and a human check catch different things.
9, varianceNone of this is visible from a leaderboard. The top-line effect is small; the point is that the instrument has defects the score cannot show you, and they were found by a check that runs in under a second.

Receipt: cais/mmlu discussion #35 and hendrycks/test #29, with a script that prints every number above from the pinned revision.

A second worked example, from the builder's side: Reclaim

The MMLU example is the questions pointed at someone else's eval. This one is the questions pointed at one I designed, because the checklist is only worth anything if it constrains your own work. Reclaim Evaluation (arXiv:2606.25449) asks whether a language model with a memory can still be corrected after that memory has been compressed.

The protocol, then the fork that decides the resultinduce aknown driftcompress at afixed budgetdeliver acorrectionscore exactrecoverymemory kept the conclusionrepeats the stale value, confidentlymemory kept the sourcere-derives the corrected valueSame budget, same model, same correction. Only what the memory kept differs, so only that can explain the gap.An empty memory abstains, which is why a lossy one can be worse than none.
The design holds everything fixed except the retention policy, which is the whole of question 8 and question 15 in one diagram.

The claim behind it is simple to say and easy to get wrong: a lossy memory can be worse than no memory at all. A memory that keeps a wrong conclusion but drops the work behind it leads the model to repeat the stale value with confidence; an empty memory leads it to abstain. Whether the model can be corrected turns on one thing, whether the memory kept something it could re-derive the answer from (the source) rather than the answer itself.

QuestionHow Reclaim answers it
1, what is measuredOne sentence: after a correction that names the error, does the model recover the right value? Not "is the summary good", not "is the memory accurate". Recovery.
2, metric validityScored as exact recovery, judge-free. No model grades another model's answer; the target value is known because the drift was induced on purpose.
10, baselineThe baseline is an empty memory. That is the whole finding: the lossy memory has to beat "remember nothing", and often does not.
8, fair conditionsThe compression budget is held fixed and only what is kept varies. A length-matched control rules out "the fix is just more text".
15, which componentFixing the budget and varying the retention policy separates correctability from capability and from model size: an 8B model and a frontier model fail at the same point. The variable is the memory policy, not the model.
12, coverageReplicated across three deployed memory systems, real dialogue (MultiWOZ), and an agent benchmark (tau-bench), where a lossy memory can become a harmful action.
14, what it got wrongThe paper maps where the source-first fix fails (the source has to be compact and identifiable) and shows the failure compounds through repeated memory loops. The negative cases are in the paper, not left out of it.

The fix that falls out is one line: keep the recomputable source, drop the re-derivable conclusion. At the same budget, that restores correctability where the source is compact enough to keep. The harness, the paired memory conditions and the validators (built to come out false, so a passing run means something) are released with the paper.

Receipt, and a confession: the memory-compression eval sketched under question 14 above, keep the conclusion or keep the source and then read the drops, is the first step of this paper, re-derived from scratch in a study drill a month after I published it. That is what a checklist is for: the questions get you to the same place whether or not you remember the answer.

Two more, from the first review

The first outside read of this page said the fifteen were a good checklist for deciding whether to believe a number and a thin one for deciding whether to act on it, and named what was missing. Both points held up. They are added here as sixteen and seventeen rather than folded into the title, because the title was already published and quietly editing it is what question 1 is about.

16What is the uncertainty, and how far may I generalise?

Every score is a sample. Report the interval, not just the point; say how many items it rests on; and say which population the claim is about. "82% on this benchmark" and "82% on tasks like this" are different sentences, and the second needs evidence the first does not supply.

The same difference, with and without enough items (illustrative) A, 50 items B, 50 items 82 vs 79, intervals overlap: no result. A, 800 items same 82, interval clears B's 79. 50 82 100
Scale 50 to 100. A three-point gap is a finding on 800 items and a shrug on 50. The bar is the same length in both press releases.

The habit that goes with this one is reproducibility, because an interval is only meaningful around a run someone else can repeat: the exact model version, decoding settings, prompt, dataset revision, harness commit, number of attempts, and what was done with retries and failures. Each data-deltas run file records its seed, its full configuration, the device it ran on and every evaluation point, and the plan it was scored against is pinned to a commit; the MMLU report pins a dataset revision for the same reason.

Receipt: the annotation study under question 2 reported its agreement with Wilson intervals on a 25% sample, which is what let a small sample stand in for the full set honestly. data-deltas run files, one JSON per run with seed, config, device and the full curve; moons-dont-talk, which writes a receipt binding a training run's verdict to hashes of its data, config, code and environment.

17Does it still hold when the world moves?

A benchmark is a photograph. Users, prompts, languages and adversaries are not in it, and six months from now the model will meet all of them. Before a score is used to decide anything, ask what happens on inputs the benchmark did not sample: another language, a hostile prompt, a formatting change, a population the training data under-represents. A result that has not been tried off the benchmark is a result about the benchmark.

One model, one claim, five places it has to hold (illustrative) on the benchmark88% new users81% another language70% adversarial prompts52% six months later76%
The blue bar is the one that gets published. The gray ones are the ones that decide whether the thing works.

Receipt: When Context Flips (with Dasol Choi) is this question run on model values: the same model, the same question, and a change of framing moves the answer. What a model "believes" on the benchmark is not what it says once the context shifts.

Glossary

The words on this page, in plain language, with the question each one belongs to. Alphabetical.

AblationQ15
Remove or swap one component at a time (the prompt, the tool, the model, the harness) and watch what moves. The way to find out which part is actually producing the behaviour.
AccuracyQ3, 11
The share of items scored correct. Only as meaningful as the items and the scoring rule behind it; an accuracy with no breakdown by difficulty or category is a single number hiding several.
BaselineQ10
The score you would get without the thing being tested: random guessing, the simplest possible method, a previous model, or a human. A score with no baseline attached cannot be called good or bad.
BenchmarkQ3, 12, 13
A fixed, shared dataset plus a scoring rule, used so different models can be compared on the same test. MMLU and GSM8K are benchmarks. A benchmark measures exactly what its items and rule measure, whatever its name says.
Class balanceQ4
How evenly the categories in a dataset are represented. A detector tested on 200 scams and 5 normal messages can score 97% by saying "scam" every time.
ConfounderQ7
Something that differs between the groups being compared besides the thing you changed, and could explain the result on its own. The AI-tutor group that also had human tutors.
Confidence intervalQ16
The range a score would plausibly land in if the same test were run again on a fresh draw of items. Wide on few items, narrow on many. Two scores whose intervals overlap have not been shown to differ.
Construct validityQ1, 2
Whether the test measures the thing it claims to measure. A Sudoku score is a valid measure of Sudoku and not of intelligence. The question every other question on this page is a version of.
ContaminationQ5
Test items, or close copies of them, present in the training data. A contaminated score measures memory, not ability. Also called leakage. 0.2% of the training data was enough to cut a benchmark number by 44% on this page.
CoverageQ12
How much of the claimed skill the benchmark's items actually touch. "Coding" covered only by syntax-error items has narrow coverage under a broad label.
Difficulty bandQ11
A slice of the benchmark grouped by how hard the items are. Reporting easy, medium and hard separately shows what an overall average hides.
Distribution shiftQ17
When the inputs a model meets in use differ from the ones it was tested on: new users, another language, adversarial prompts, or simply time passing. A benchmark score is a claim about the benchmark's distribution.
Error analysisQ14
Reading the items the model got wrong, by eye, to find the pattern. Numbers say that something is happening; the failures say what.
Eval (evaluation)
A structured test for an AI system: a set of tasks, a scoring rule, enough items to mean something, and a stated claim about what the score measures.
Exact matchQ2
A scoring rule that counts an answer correct only if it equals the reference string exactly. Strict, cheap, and free of judgement; also blind to correct answers phrased differently, which the scorer's owner has to know.
Fixed budgetQ8
Holding a resource constant (tokens of memory, number of attempts, compute) so that only the thing under test varies. Reclaim holds the memory budget fixed and varies only what the memory keeps.
Ground truth (the key)Q2
The reference answer an item is scored against. When the key is wrong, or appears at two option positions, every model is scored against a mistake.
HarnessQ8, 15
The code around the model that builds prompts, calls it, collects outputs and runs the scorer. Part of the instrument, and a common hiding place for the real cause of a result.
Held-out setQ5
Data kept apart from training so that it can be used to test. Only a held-out set the model never saw can measure generalisation.
Inter-rater agreementQ2
How often two graders, human or model, give the same verdict on the same item, usually reported as Cohen's kappa. Low agreement means the score is partly a measurement of who graded it.
Judge-free scoringQ2
Scoring by a fixed rule (exact match, running the tests) rather than by asking another model to grade the answer. Removes the grader's opinions from the measurement; usable only when the correct answer is known.
LLM-as-judgeQ2, 6
Using a language model to grade another model's output. Convenient for open-ended tasks, and a second instrument with its own biases, which now needs its own eval.
Length-matched controlQ8
A comparison condition given the same amount of text as the treatment, so that "more text" cannot be the explanation for an improvement.
PerplexityQ5, 9
A measure of how surprised a language model is by a text; lower means the text was more expected. Standard for pretraining evals. Drops sharply when the model has seen the text before, which is why it exposes contamination.
Pre-registrationQ1, 10
Writing down the question, the method and the predictions before the data is collected, and committing them where they cannot be quietly edited. The result is then judged by the plan instead of the plan being rewritten to fit the result.
Proxy metricQ2
Something easy to count that stands in for the thing you care about. Word count for persuasion, lines of code for productivity. Sometimes unavoidable; always to be declared, with a guess at how far it sits from the real target.
ReproducibilityQ16
Whether someone else, given what you published, gets the same number: model version, decoding settings, prompt, dataset revision, harness commit, attempts and retry policy. A result without these is a report of an event, not a measurement.
RepresentativenessQ3
Whether the items in the test look like the population the claim is about. A coding benchmark that is 90% beginner Python is representative of beginner Python.
ScorerQ2, 8
The rule or program that turns a model output into a score. The most neglected component in most pipelines: it is rarely tested, and when it is wrong every result above it is wrong the same way.
SeedQ9
The random number that decides sampling choices in a run: which items are drawn, how the model samples its words, how weights are initialised. Change nothing but the seed and the score moves; that movement is the noise floor a real effect must clear.
Test setQ5
The items the eval is run on. Ideally a held-out set. The moment a test set is public it starts leaking into training data, which is why fresh items keep having to be written.
Variance (seed band)Q9
How much the score moves across repeated runs that differ only by seed. Two models with the same mean and different variance are different products. Report the spread, not just the centre.
WeightingQ13
How much each category counts in the overall score. A benchmark that is 80% Python debugging is a Python-debugging benchmark whatever else it contains; equal weights are not automatically right either.

The checklist, to keep

  1. What exactly is being measured? One sentence.
  2. Is the metric valid, or a proxy that was easier to count?
  3. Are the tasks representative of the claim?
  4. Is the dataset balanced, or can composition fake it?
  5. Did the model see the answers?
  6. Outcome or process?
  7. What else could explain the result?
  8. Were the conditions fair?
  9. How much does it wobble across seeds?
  10. Compared to what?
  11. What do the difficulty bands look like?
  12. Does the benchmark cover the claim?
  13. How are the categories weighted?
  14. What did it get wrong?
  15. Which component is doing it?
  16. What is the uncertainty, and how far may I generalise?
  17. Does it still hold when the world moves?
If the answer to question 1 is fuzzy, the other fourteen do not matter. An eval that measures the wrong thing precisely is still measuring the wrong thing, and everything built on top of it inherits the error.

Written from a working study session with an AI assistant (OpenAI's ChatGPT), in which each concept was worked through on examples and then tied back to the receipts above; edited and expanded with Anthropic's Claude. The first review, which produced questions 16 and 17 and the grader, comparison and uncertainty caveats, was also ChatGPT's. The audits, the experiment and the filed MMLU report are my own work and are linked where cited. Related tooling: dinostomp, 98 checks that ask these questions of a dataset automatically.

Cite: Kwon, A. (2026). Fifteen Questions Before I Trust a Number. collapseindex.org/articles/eval-questions.html. License: CC BY 4.0.

Alex Kwon · ask@collapseindex.org · case studies · github.com/collapseindex