AI Agent Test Sets: Keeping the Launch Score Honest
Six months after launch, a release run misses the bar. Did your agent really change, or did the test set?
IN 30 SECONDS
A frozen eval set is a released version of your test cases, with its hash recorded on every run. When a run misses the bar, the hash tells you whether the set changed.
KEY TAKEAWAYS · 3
- Change the set only through a new version with a written reason, and record its hash on every run.
- When a run misses the bar, the agent, the set or the cost behind the threshold may have changed. Finding out which one is most of the work.
- Put the review date in the file the gate reads: a stale set keeps passing.
On this page
Freeze the set before you measure anything
IN SHORT A frozen set changes only through a new version, with a written reason and a new fingerprint.
WORDS TO KNOW
- Frozen eval set
- A released version of the eval set that never changes. Any edit makes a new version.
- Hash
- A short fingerprint computed from the content of the set. Change one case and the fingerprint changes.
- Holdout
- Cases opened only on release day. Nobody may tune the agent against them.
Adding a case, fixing a wrong label (the expected behavior on a case) or removing sensitive data creates a new version of the Frozen eval set A released version of the eval set that never changes. Any edit makes a new version. See the glossary. Its Hash A short fingerprint computed from the content of the set. Change one case and the fingerprint changes. See the glossary is recorded on every run, so anyone can check that two runs took the same exam.
Keep the old version’s record and the history you are allowed to keep. Never change the comparison set silently to make a candidate pass.
Thresholds are earned on the frozen core, and nobody is allowed to tune against the Holdout Cases opened only on release day. Nobody may tune the agent against them. See the glossary.
IN PLAIN WORDS
Each case carries the expected behavior: answer, abstain or block. The risk owner sets that label, not the engineer chasing a green run. Have domain reviewers validate the labels and the risk owner approve the acceptance policy.
Coming up next: So what do you check first when a run misses the bar?
When a run misses the bar, find what moved
IN SHORT When a release run comes in under the bar, check what changed before anyone touches the agent.
STEP BY STEP
Step 1. The miss. A release run comes in under the bar. List what changed since the run it is compared to.
- The miss A release run comes in under the bar. List what changed since the run it is compared to.
- The set changed The hash differs: you measured a different exam. Re-run on the frozen hash first.
- The agent changed Set held, agent changed: likely a regression, the case the gate exists for. Confirm with repeat runs and hold the release.
- The cost changed Only the cost behind the bar changed: re-earn it with the risk owner.
- Write it down Note which one it was in the run record, next to the hash. That line turns an argument into an audit trail.
The first arm catches people: a set that grew by nine cases is a different exam. A hash on every run makes that a two-minute check, not a two-day argument.
ITEM GET
Check what moved first
Coming up next: And what if the set itself has gone stale?
A frozen set has an expiry date
IN SHORT A frozen set doesn’t last forever: it has a lifecycle, and retiring it is a decision.
A stale test set doesn’t start failing. It starts passing, comfortably, on questions your users stopped asking a year ago.
A gate that always says yes costs more than no gate and tells you no more. So put the review date next to the bar, in the file the gate reads.
Asked to evidence accuracy rather than assert it? The bars are part of what you hand over, with the set, the results and the reasoning. That’s the argument of the EU AI Act as an engineering checklist.
FAQ
Enough to cover the important slices and the uncertainty you can tolerate; rare failures need more evidence. One severe failure should still block a zero-failure gate, whatever the set size.
At its review date, and when the task, the risk, the data or the budget changes. A new model needs a fresh evaluation, but doesn’t by itself justify a new acceptance standard. Recheck comparability whenever the set version changes.
STAGE CLEAR
What you now know
- A frozen set changes only through a new version, with a reason and a new hash.
- Why a stale set keeps passing, and where the review date belongs.
Check yourself
Tap or click a question to see the answer.
Since the last run, a reviewer fixed three wrong labels in the set. The new score is lower. Is this a regression?
You can’t tell yet. Fixed labels mean a new set version and a new hash, so the two runs took different exams. Re-run both candidates on the same version.
You finished every stage published so far in this series. Back to the series map
Former CTO of Integra. Named author (1 of 5) of ERC-3643, first author of ERC-6960, co-author of ERC-7410, and co-author of ERC-8203, which is still a draft. Building production AI and regulated Web3 systems.
Have a project to ship or a role to fill?
Discuss your project or roleFollow the engineering notes
Get new articles on production AI and smart contracts by email.