R1Fix the reader, vary the memory
A memory benchmark measures memory only if the answering model is identical across all arms: same model, same version, same temperature, same answer prompt, same random seed, same task order. Repeating results with a different reader is a separate run, reported separately — not the same number.
Measure every arm inside one window and say which. Hosted models change underneath a study; a comparison run two months apart is a comparison of two model versions wearing the names of two memory systems.
The context budget is a ceiling, identical across arms — not an identical fill. The distinction is not pedantry: if every arm had to place the same number of tokens in context, there would be no context reduction left to report under R5, and the full-context control arm of R9 could be trimmed at will to flatter the memory system.
R2Pin the judge, calibrate it in both directions
LLM-as-a-judge is the de-facto standard, and an uncalibrated judge produces figures with no information in them. Before any run, pin judge model, version and prompt. Then calibrate both directions, because a one-directional test is trivially passed:
- Rejection — at least 150 deliberately wrong but plausible answers.
- Acceptance — at least 150 independently verified correct answers.
- Gate — the lower bound of the 95 % Wilson interval of both rates is at least 0.90.
Why both directions: a judge that rejects everything passes a rejection-only test at 100 %, and any judge can be pushed past a one-sided threshold by sharpening its prompt until it gets there. An over-strict judge does not fail loudly — it compresses the field and makes two unequal systems look alike.
Why an interval and not a bare count: at 95 correct rejections out of 100, the Wilson interval runs from 0.888 to 0.978, so the observation is compatible with a true rate of 89 %. Conversely a judge whose true rate is exactly 0.95 fails a "95 of 100" gate in 38 % of attempts. A threshold that decides by coin flip in its own neighbourhood is not a threshold.
Agreement with human annotation: at least 300 stratified samples, reported as the raw agreement rate, the full contingency table, and both Gwet's AC1 and Cohen's κ with bootstrap confidence intervals. κ on its own misleads here, because it corrects against a chance expectation computed from the observed marginals: a judge that accepts most answers can show κ near 0.04 while agreeing with the human 85 % of the time.13 Report the rate and the table, not only the coefficient.
Report as well, for the judge: swap consistency on pairwise judgements, the shift in verdict at ±50 % answer length, test-retest agreement over three repetitions of the same prompt, stability across two prompt rewordings, and whether judge and reader come from the same model family.12 A calibration holds only for the task categories it was measured on.
None of this is peculiar to memory. A 2026 analysis of judge-agreement reporting shows that protocol choices alone — the judgment scale, which cases are retained, how abstentions are handled, how verdicts are pooled — move a reported accuracy from 0.551 to 0.899 and carry κ across zero without changing a single verdict; it distils the remedy into a reporting checklist that makes agreement claims reconstructible and comparable.34 A second line of work estimates a judge's true-positive and false-positive rates on a small human-labelled calibration set and derives a corrected decision threshold from them — the same two directions, put to statistical use.35
If either gate fails, the judge is unfit. That is not a finding about the system under test.
What is at stake is measurable. In a published audit of LoCoMo scoring, a judge configuration in common use accepted 62.81 % of deliberately wrong but topically plausible answers. The same judge caught concrete factual errors — wrong name, wrong date — at around 89 %, so the failure is specific to vague-but-relevant text rather than general.4
We have not independently reproduced that result, and its publisher sells a memory product of its own rather than acting as an independent auditor. We cite it because the underlying data, the scripts and all 99 disputed cases are published and checksum-verifiable — which is the standard this checklist applies to itself.
On where the threshold comes from
The 0.90 lower bound is a convention, not a derivation. It sits below the highest judge–human agreement published for a memory benchmark that we are aware of — 88.3 %, reported by Memora5, with LongMemEval reporting agreement for its own evaluator as well7 — and far above the 62.81 % measured in the audit. Setting it as an interval bound rather than a point estimate is the part that is derived: it is what makes the gate insensitive to the sample size a reporter happens to choose.
A worked justification, with the operating characteristic of the gate at several sample sizes, belongs in the explanation document that accompanies the next version. Until it exists, treat the number as what it is: a defensible convention, published so that it can be argued with.
R3Score nuggets, not right or wrong
Decompose each answer into atomic criteria, score each at 0 / 0.5 / 1, average. Materially less noisy than a binary verdict, and it gives partial credit where partial credit is what actually happened.
Report precision over nuggets alongside recall. An average over the criteria a system hit, with no penalty for what else it said, rewards saying everything. Weight the criteria as well: a system that misses the central claim and catches five side details should not outscore the reverse.
State where the nugget set came from and pin it. If the model that generates the criteria is the model that matches them, the score is circular; if the set is pooled from the candidate answers, it inherits their blind spots. State also whether the average runs over nuggets or over tasks — the two give different numbers.
For ordering tasks, name the coefficient. Kendall tau-b and Spearman weight every position equally, which is the wrong shape for retrieval, where an error at rank 1 costs more than one at rank 20; rank-biased overlap is head-weighted and handles lists of different length. Declare the tie treatment either way.
R4Enough tasks first, then enough runs
A single run is not a result — but the run count is the smaller half of the problem. The sampling unit is the task, not the run.14
State the smallest difference you would act on, and the number of tasks that gives 80 % power to detect it. Paired across tasks, five percentage points needs roughly 280 tasks and three points roughly 790. A report that prescribes a run count and says nothing about the task count is regulating the wrong quantity; underpowered comparisons are the documented norm in this literature, not the exception.15
Then replicate: at least five complete replicates with documented, distinct random seeds and permuted ingestion order. Ten repetitions of an identical run at temperature zero mostly measure the batching non-determinism of the serving stack — in one published measurement, 1,000 identical requests at temperature zero produced 80 distinct outputs.16 Name what varies: seeds, ingestion order, index construction. Repeating what does not vary is not replication.
Report the mean with its standard error across tasks, clustered where questions are nested; the between-replicate dispersion separately from it; and every seed.
For two-arm comparisons use a paired test across tasks: a paired permutation test or a paired bootstrap, McNemar where outcomes are binary. Wilcoxon assumes a symmetric difference distribution and degrades badly on the ties that 0 / 0.5 / 1 scoring produces. Report the mean paired difference with its 95 % interval, not a p-value on its own.
Where several categories are compared, name the primary hypothesis in advance, control the false discovery rate across the rest, and report how many tests were run in total. At ten categories and α = 0.05, at least one false positive is more likely than none — 0.40.
None of these prescriptions is idiosyncratic. A 2025 survey of memory evaluation arrives at the same set — paired permutation or bootstrap tests, effect sizes, agreement coefficients with intervals — from the other side of the field.32
The reason this matters here: in a re-analysis of published LoCoMo results, 56 % of adjacent-pair per-category comparisons fell inside each other's 95 % Wilson intervals — indistinguishable from noise at a single measurement. Category sizes in that benchmark range from 96 to 841 questions, a ratio of 8.8, so in the smallest category two systems need a gap of more than 15 points before they can be told apart at all.6 Same provenance and same caveat as under R2: a market participant, not reproduced by us, published with its data.
R5Accuracy without cost is half a result
Every accuracy figure ships with the cost of producing it, on both sides of the system.
Query side. Tokens per query, split into input, cached input and output; latency p50, p95 and p99, split into retrieval time and end-to-end; and context reduction against what full text would have cost.
Ingestion side. Tokens and wall time to ingest, embed, compress, consolidate and index — once and recurring, per stored unit — plus storage and its growth over time. A system that spends a hundred times more on ingestion than on querying looks inexpensive in a query-only table, and the comparison against a full-context arm becomes meaningless.
The scale of the ingestion side is not hypothetical. A controlled harness study in August 2026 moved three widely used production systems out of its main comparison and into a separate cost appendix, because their pipelines carry substantially different auxiliary-model budgets from the rest of the field.36 A figure that hides that difference is not comparable to one that does not.
Conditions. A latency figure without its conditions is not a figure: hardware and region, concurrency and request rate, warm-up and cache-hit rate, the number of measurements per cell, and the measurement window. Below roughly 200 measurements per cell the upper confidence bound of a p95 is the observed maximum — report the count, or do not report the percentile.
A system reaching 95 % by pushing 100,000 tokens into context has moved the problem, not solved it. Where no language model sits in the evaluated path, R5 has no object — say so rather than leaving the fields blank.
R6Measure modules separately, not just end to end
A weak aggregate cannot be attributed. Report retrieval, extraction, routing and maintenance as separate figures, then the full system with a fixed reader. The module figures are the diagnostic ones; the end-to-end figure is the comparable one.
Where a system has no separable module of a given kind, that entry is no object under R8 — not a gap, and not a zero.
R7Never compare against a foreign blog figure
A comparison holds only if reader model, judge, question subset and setup are shared and published. Everything else is marked not comparable in the report — explicitly devalued, not quietly omitted.
This rule cuts both ways. A re-measurement landing far below a vendor figure is a comparability problem, not a truth claim, and deserves the same disclosure scrutiny — including whether an author of the re-measurement has a system in the test field.
R8Not measurable means not measurable
Four states, never two. A criterion that could not be measured is never reported as passed, and never as breached with a zero: not measurable is an outcome in its own right and carries no penalty. Where a criterion has no subject matter for the unit under test at all, that is the fourth state, no object, and it is likewise not a failure.
The two are kept apart because they are repaired differently. A not-measurable result is a gap in the run and can be closed by running it again properly. A no-object result is a property of what was tested and will not change. Collapsing either into a zero turns an absent measurement into a bad one, and penalises a system for a criterion the run could not establish. Quietly dropping it does the opposite: it rewards whoever measured least. Counting it as a state of its own is the only treatment that does neither.
R9Run the controls that can falsify the result
A setup that can only confirm confirms nothing. Three control arms, all mandatory, all reported whether or not they flatter the result:
- No memory. The same reader, the same questions, no retrieved context at all. Whatever it scores is the floor the benchmark hands out for free. If the margin over this arm is small, the benchmark is measuring the reader's prior knowledge, not memory.
- Full context. The same reader with the entire source text in context and no memory system. Wherever the corpus fits a current context window this arm is not optional: without it, every figure can be answered with "you measured context length". Peer-reviewed setups now run to ten million tokens, so the excuse that it cannot be done has a short remaining life.9
- Corrupted memory. The same run with the store emptied, or filled with wrong entries. If accuracy does not fall, the memory is not being used and the number belongs to something else.
The informative quantity is the distance between the full system and these arms, not the absolute value. Report all three distances. Where a distance is smaller than the dispersion established under R4, say so plainly — that is a legitimate result, and under R8 it is reported as a finding rather than hidden as a rounding.
R10Declare what the reader already knew, and pin what you measured
Public benchmarks age into training data. State whether the question set is public and since when, how that relates to the reader model's training cutoff, and whether canary strings or a private holdout were used. Contamination in closed models is documented practice, not a hypothetical.18 R9's no-memory arm is the empirical half of this rule; this is the declared half.
Pin the material: semantic version and SHA-256 of the question set, of the gold answers, of the nugget set and of the judge prompt. Answer keys do get corrected — the audit cited under R2 found 99 score-corrupting errors in 1,540 questions, which puts the ceiling for a flawless system at 93.57 % rather than 100 %.4 A figure measured against a corrected key is not comparable to one measured against the previous key, and neither is wrong; they are simply different measurements, which is the whole subject of this document.
The case is already real. A revised LoCoMo released in April 2026 revised 337 of its question–answer pairs, set the count at 1,382 questions and changed the judge; figures on the revised set now circulate next to figures on the original, and the two are not the same measurement.37 In one survey of the field, 62 % of all benchmark–system pairs draw on LoCoMo and LongMemEval, so the question of which key was used is not a corner case.36
Keep the development set and the test set apart. Prompt engineering, threshold tuning and retrieval parameters belong to the development set. Report how many times the test set was evaluated, and report every run that was carried out, including the ones not used. Selective disclosure of runs and variants is a documented practice in public leaderboards.19