vectory
Back to field notes

Vectory field note

Your eval suite has a variance problem before it has a score problem

How many trials to run, when to report pass@k instead of pass^k, and how to tell a broken task or a saturated suite from a real regression.

September 20269 min read

Key ideas

  • One run is a sample. A release decision needs repeated trials and a stated metric.
  • Report pass^k when every attempt has to succeed and pass@k when one success out of k is enough.
  • A suite that no longer separates two candidate versions is broken, not solved.

Workflow

01

Set trial counts

02

Choose the metric

03

Diagnose the noise

04

Gate the release

01

One run is a sample, not a score

If you cannot tell whether last night's drop from 0.88 to 0.79 is a regression or noise, the answer is that you do not have enough trials and you have not said which metric the number represents. Run each task multiple times, report pass^k when the agent has to succeed on every attempt and pass@k when one success out of k attempts is enough, and treat a suite whose scores no longer separate two candidate versions as a broken suite rather than a finished one.

The arithmetic makes the problem concrete. Anthropic's agent-evals guidance defines a trial as each attempt at a task, and works an example where a 75 percent per-trial success rate produces roughly 42 percent pass^3, meaning all three trials succeed less than half the time.[1] Nothing about the agent changed between those runs. The reported number changed because sampling changed.

So the first fix is not a better grader or a bigger suite. It is a run manifest that records how many trials you took and under which conditions, so two reports can be compared at all. The values in the examples below are illustrations of the record shape, not measured Vectory results.

  • task_id and suite_version, so the case is identifiable across releases.
  • trials: 5 and metric: pass^5, stated before results are read.
  • model_id, temperature, and seed, because sampling settings move variance.
  • harness_version, since the harness is part of the system under test.[1]
02

Pick the metric that matches the product promise

pass@k measures the chance of at least one success in k attempts, so it rises as k grows. pass^k measures the chance that all k trials succeed, so it falls as k grows. At k equal to 1 the two are the same number, which is exactly why a single-run report hides the distinction. With the 75 percent per-trial rate from the example above, increasing k widens the gap: pass@k rises while pass^k falls.[1]

The choice follows the product, not the dashboard. If a user can retry cheaply and a failed attempt costs a few seconds, pass@k describes the experience honestly. If a single failure writes a bad record, sends a wrong message, or merges a broken patch, then the promise is that every attempt works, and pass^k is the number that belongs in the gate.

Reporting both at once is often the most useful line in a release review. A results row reading pass@5: 1.00, pass^5: 0.24, variance_flag: high, decision: block says something a single average cannot: the capability exists, and the reliability does not.

  • Retry is free and invisible to the user: gate on pass@k.
  • A single failure is user-visible or writes state: gate on pass^k.
  • Publish both numbers so reviewers can see the spread.
  • Never compare a pass@k figure from one release against a pass^k figure from another.
03

A 0 percent pass rate is usually a broken task

The most expensive misreading in eval work is treating a floor score as a capability gap. Anthropic's guidance states the diagnostic plainly: a 0 percent pass rate across many trials, such as 0 percent pass@100, is most often a signal of a broken task.[1] A hard task produces a low, noisy rate. A broken task produces a clean zero.

Grading precision is a frequent cause. The same guidance reports a CORE-Bench case where an answer of 96.12 was marked wrong because the expected value was 96.124991.[1] No prompt change and no model upgrade will move that score, because the agent was right and the comparison was wrong.

The cheap check is to read transcripts before filing anything. Anthropic's framing is that eval scores should not be taken at face value until someone digs into the details, and that failures should seem fair.[1] Start with three transcripts, then expand the sample if the failure mode is still unclear.

  • Trigger: pass@100 at 0.00 on a task the team believes is achievable.
  • Action: read three transcripts end to end before opening a model ticket.
  • Common finding: grader compared a formatted string instead of a tolerance.
  • Resolution: fix the grader, rerun, and record the task as amended in the suite changelog.
04

Ambiguity shows up as variance, not as an error

Underspecified tasks rarely fail loudly. They fail sometimes, which reads as flakiness. Anthropic offers a usable quality bar: a good task is one where two domain experts would independently reach the same pass or fail verdict, because ambiguity in task specifications becomes noise in metrics.[1]

The published example is worth copying into your own review. A Terminal-Bench audit found that unspecified script filepaths caused undeserved failures, since the agent had no way to know where the grader would look.[1] The agent solved the problem and then lost on a detail the task never stated.

Run the two-expert test on any task whose trial results scatter. If two reviewers disagree about whether a transcript passed, the task specification is the defect, and tightening it removes variance that no amount of extra trials will average away.

  • Symptom: trial results scatter while the transcripts look reasonable.
  • Test: two reviewers grade the same transcript blind and compare verdicts.
  • Fix the specification first: required output location, format, and stop condition.
  • Prefer grading what the agent produced over the path it took.[1]
05

Contamination looks exactly like improvement

Scores that rise for the wrong reason are harder to catch than scores that fall. Shared state between trials is a documented source. Anthropic describes a case where a Claude run gained an advantage by reading git history left behind by earlier trials, which means the second trial was an easier task than the first.[1]

Version drift produces the same illusion at the harness layer. The SWE-bench Verified page states that results from mini-SWE-agent release 1.x and 2.x are not necessarily comparable to each other, because 1.x parses actions from output strings while 2.x uses tool calling, and temperature was pinned at 0.0 for 1.x and left unset from 2.x onward.[3] Two numbers from the same named benchmark can therefore describe different experiments.

That page also shows what a controlled comparison costs: SWE-bench Verified is a human-validated subset of 500 SWE-bench instances, built with OpenAI, where annotators checked that problem statements were understandable, test patches valid, and tasks achievable.[3] Isolation and validation are the work, not overhead on top of it.

  • Reset the workspace, caches, and version control state between trials.
  • Assert a clean environment as a precondition rather than assuming it.
  • Pin harness_version and sampling settings on every reported score.
  • Treat any unexplained score jump as a contamination hypothesis first.
06

Saturation is a suite failure, not a milestone

Two suites should carry opposite expectations. Anthropic's guidance is that capability evals should start at a low pass rate, while regression evals should sit at a nearly 100 percent pass rate, and that a saturated capability eval can graduate into the regression suite.[1] A single threshold applied to both suites will either block every release or none of them.

The number to watch is discrimination, not the mean. A capability suite reporting pass_rate: 0.98 with 0.01 separation between candidate and baseline has stopped answering the release question, whatever the headline says. The action is to graduate those tasks into regression, where a near-perfect rate is the point, and author harder capability tasks.

New tasks should come from the same place the first ones did. Anthropic suggests 20 to 50 simple tasks drawn from real failures as a strong start, and argues that maintaining evals should be as routine as maintaining unit tests.[1] A suite with no additions this quarter is drifting away from the product it is supposed to guard.

  • capability_suite.pass_rate: 0.98 with discrimination 0.01 means graduate, not celebrate.
  • regression_suite target: near 1.00, with the release threshold set by the consequence of failure.
  • Source new tasks from incidents, escalations, and expensive successes.
  • Retire a task only when the product behavior it covers no longer exists.
07

The reporting contract that lets a reader separate signal from noise

Public benchmarks already model the format. Terminal-Bench publishes cost and tokens beside resolution rate, and states that the whiskers on its chart span the 95 percent confidence interval, so readers see a range instead of a point.[2] METR fits success probability against human task length per model and draws 95 percent confidence bands from hierarchical bootstrapping over task families, tasks, and attempts.[4] Its reported trend, a 50 percent time horizon doubling roughly every 7 months with stated uncertainty of about 1 to 4 doublings per year, comes with a caveat the page states itself: some of the text and figures in that post are out of date, only the interactive chart is maintained, and Time Horizon 1.1 was announced on 29 January 2026.[4] Cite the caveat with the number.

Thresholds need the same specificity. Anthropic's evaluation guidance contrasts a vague criterion like safe outputs against a measurable one: less than 0.1 percent of outputs out of 10,000 trials flagged for toxicity by the content filter.[5] The second version states a population, a trial count, and a detector, so two teams reading it would run the same test.

Finally, report your own misses. Anthropic extended its evaluation cadence from three months to six in version 2.0 of its Responsible Scaling Policy to avoid lower-quality, rushed elicitation, and its self-review disclosed shortfalls including evaluations finished three days late and missing elicitation techniques such as best-of-N and chain-of-thought.[6] A gate that never reports where it fell short gives a reader no way to judge how much the passing runs are worth.

  • Trial count and the metric name beside every score.
  • An interval or spread, not only a point estimate.
  • Cost and token usage next to quality, since a win you cannot afford is a product decision.
  • Suite, harness, model, and grader versions, plus known gaps in this run.

Use this checklist

Before you ship

Sources

Watch and read the original material

  1. Anthropic, Demystifying evals for AI agents

    Definitions of trial, transcript, outcome, and harness, the pass@k and pass^k comparison with the 42 percent pass^3 example, the 0 percent pass@100 diagnostic, the CORE-Bench and Terminal-Bench grading examples, and capability versus regression pass-rate expectations. Read 7 September 2026.

  2. Terminal-Bench

    Benchmark hosted by Stanford, Harbor, and the Laude Institute that reports cost and tokens beside resolution rate and states that its chart whiskers span the 95 percent confidence interval. Read 7 September 2026. No leaderboard scores are cited here because the table renders client-side.

  3. SWE-bench Verified

    Source for the 500-instance human-validated subset built with OpenAI, and for the statement that mini-SWE-agent 1.x and 2.x results are not necessarily comparable along with the temperature change between releases. Read 7 September 2026.

  4. METR, Measuring AI Ability to Complete Long Tasks

    Published 19 March 2025, arXiv:2503.14499. Source for the logistic fit with hierarchical bootstrapped 95 percent bands and the 50 percent time horizon trend. The page states some of its text and figures are out of date and points to Time Horizon 1.1, announced 29 January 2026. Read 7 September 2026.

  5. Anthropic, Define success criteria and build evaluations

    Source for the contrast between a vague success criterion and a measurable one stating a rate, a trial count, and a detector. Read 7 September 2026.

  6. Anthropic, Responsible Scaling Policy updates and version history

    Version 3.4 effective 8 July 2026, page last updated 14 August 2026. Source for the evaluation cadence change from three months to six in version 2.0 and for the self-reported shortfalls, including evaluations finished three days late. Read 7 September 2026.

Vectory uses essential cookies and optional analytics to improve the site. You can update choices any time in cookie preferences. Privacy Policy

Customize