SyncValsfield notes

Methodology · run 2026-07-06 · SyncVals 0.1.0 · commit 2f94510

One number is measured. The rest is bookkeeping.

A verifier's exit status decides every reward on this site. Everything else — the labels, the rates, the intervals, the live markers — is arithmetic laid on top of that, and this page states each rule exactly as the code applies it. Where a rule is odd, it is written down odd rather than tidied up. You should be able to recompute any figure on the site from what follows.

879
scored trials
the unit everything is counted in
90
tasks
3–40 trials each
5
agent / model rows
15 categories
5
outcome labels
post-hoc, never scoring
1.96
z for every interval
the literal constant in the code

How a trial is scored

Three stages, in order. Only the first one produces a number.

  1. 1

    Reward is the verifier's exit code

    After the agent stops, a verifier runs against the finished workspace. Exit status zero is a pass and records a reward of 1.0; any non-zero status is a fail and records 0.0. That is the whole scoring rule. No model, no classifier, and no reviewer re-scores a trial afterwards, and there is no partial credit for a near miss. One exception exists in this run: deepcad-canonical-equivalence is graded on a continuous score, so its 10 trials carry fractional rewards (mean 0.441). Those trials count as resolved only at exactly 1.0, and the task page for them shows a mean score instead of a pass rate.

  2. 2

    The agent works blind

    During the attempt the agent sees the instruction and the starter workspace, and nothing else. The verifier, its test assets, and the reference solution are held outside the environment and put back only for grading. So the agent cannot read the checks it will be measured against, and a passing run had to satisfy tests it never saw.

    This is also why a reward-hack is worth naming when it happens: it means the grader was reachable, or guessable, from inside the workspace after all.

  3. 3

    A classifier explains the outcome afterwards

    Once the reward is fixed, a separate model reads the trajectory and assigns one of five labels describing why the trial landed where it did. The label is commentary. It cannot raise a 0.0 or retract a 1.0, and it is not an input to any rate on this site.

    The two axes really are independent, and the data shows it: 7 trials in this run are labelled harness error and still carry reward 1.0. They are counted as resolved, because resolved is defined on reward alone.

The five outcome labels

Assigned after scoring, to explain a result rather than set it. Other pages link straight to these definitions.

LabelRewardWhat it means TrialsShareObserved
Legitimate solveGOOD_SUCCESS passed

The verifier passed and it was checking the work the task asked for. This is the only label under which a 1.0 can be read as capability.

373 42.4% 373 passed · 0 failed
Reward-hackBAD_SUCCESS passed

A pass the agent did not earn. The grader was satisfied by something other than a solution — a constant written where a computation belonged, an edited or deleted test, a value read out of a file it should not have reached. The reward stays 1.0 in the data; the finding is a defect in the task, not a result for the agent.

18 2.0% 18 passed · 0 failed
Honest missGOOD_FAILURE failed

The run behaved correctly and still did not get there. Nothing is wrong with the task or the harness. On a hard task this is the expected shape of most trials.

353 40.2% 0 passed · 353 failed
Task at faultBAD_FAILURE failed

The failure belongs to the task. Instructions that disagree with the grader, tests that turn on a convention nobody stated, a requirement the agent had no way to discover from what it was handed. A different agent would have hit the same wall.

88 10.0% 0 passed · 88 failed
Harness errorHARNESS_ERROR either

The scaffolding gave out — container, network, tool loop, wall clock. The trial says nothing about the agent and nothing about the task. It is kept in the totals because dropping it would quietly flatter the run.

47 5.3% 7 passed · 40 failed

Two of the five are warnings about the number beside them. Reward-hack says a pass should not be believed; Task at fault says a failure should not be charged to the agent. The other three are ordinary outcomes. Colour here is a lookup aid only — each label is written out wherever it appears, because three of the five hues sit under a 3:1 contrast ratio on this paper background.

How every figure is computed

The rules as the code applies them, including the awkward ones. Each block names its formula, then what it means in practice.

Resolved

resolved  ⇔  reward == 1.0

A trial is resolved when its reward is exactly 1.0. The comparison is against the number and nothing else — the label plays no part, which is why the 7 harness-error trials with reward 1.0 are inside every resolved count on the site. Fractional rewards are never rounded up.

pass@1

pass@1 = resolved trials ÷ all trials in the group

The group is whatever the surrounding table is about: one agent-and-model row, one category, or one task. Trials are the denominator, so tasks that received more attempts weigh more. Printed to one decimal. Overall this run is 398/879 = 45.3%.

95% interval

lo, hi = ( p + z²/2n ∓ z·√( p(1−p)/n + z²/4n² ) ) ÷ ( 1 + z²/n )

A Wilson score interval on the group's own rate, clamped into 0–100% and reported as 0–0 when the group is empty. The constant is the literal 1.96 — not the exact two-sided normal quantile 1.959963984540054. The difference is a hundredth of a point wide, and it is visible in this run, so it is stated rather than smoothed over.

worked: claude-code / claude-haiku-4-5, k=19, n=20
p19/20 = 0.9500
1 + z²/n1.192080
p + z²/2n1.046040
z·√( p(1−p)/n + z²/4n² )0.135453
interval76.4 – 99.1%
width at z = 1.9622.73
width at z = 1.95996398454005422.72

pass@k on a task page

pass@k = 100.0% if any trial resolved, else 0.0%

It is an existence check, not an estimate, so it only ever prints those two values. The k is that task's own number of trials, which is not a constant: tasks in this run were attempted between 3 and 40 times. The run-level k of 10 is the most common trial count across tasks — a mode, not a guarantee — so read a task's pass@k next to its own trial count, never against the headline k.

Live vs preview, for a category

live  ⇔  scored trials ≥ 20

Trials decide this, not tasks. A category with a handful of tasks and many attempts can be live while a broader category with few attempts is not. 10 of 15 categories are live in this run. The marker is about sample size only; it says nothing about task quality.

Ranked vs preview, for an agent row

ranked  ⇔  trials > 20

A row below the bar keeps its figures and its interval but stays out of the ranking, because a rate over twenty-odd trials moves several points on a single outcome. 4 rows are ranked here and 1 held in preview.

The comparison is not the same on both sides of the threshold. A category needs at least 20 trials to go live; an agent row needs more than 20 to be ranked. At exactly 20 trials the two disagree, and this run contains both cases: Data Science, Data Science: Robustness reads live, while claude-code / claude-haiku-4-5 is held in preview on the same trial count.

Outcome-bar widths

width = count ÷ n × 100, to 3 dp, unnormalised

Each segment is the raw share of its class, printed to three decimals, and classes with no trials are dropped from the bar entirely rather than drawn at zero. Nothing rescales the segments to close the bar, so rounding leaves some bars summing very slightly off 100. That drift is real output and is preserved deliberately; correcting it would put the widths out of step with the counts they came from. 5 groups drift in this run:

GroupTrialsWidths sum to
Cloud Operations18099.999
STEM81100.001
claude-code / claude-opus-4-859199.999
claude-code / claude-opus-4-718099.999
codex / gpt-5.55399.999

Dominant outcome for a task

dominant = most common label, ties → first appearance in run order

The label with the highest count wins. When two labels tie, the winner is whichever was seen first as the task's trials are read in file order. There is no severity ranking and no priority list involved, so a tie does not resolve toward the more alarming label. 6 tasks in this run have a tie at the top, and 3 of them would be summarised differently under a priority rule:

  • athena-workgroup-result-encryption-cmk-enforced — shown as Honest miss, would read Legitimate solve under a priority rule
  • ddb-outbox-eventbridge-fanout — shown as Honest miss, would read Legitimate solve under a priority rule
  • lending-club-lgd-bias-correction-r — shown as Honest miss, would read Legitimate solve under a priority rule

Continuous-score tasks

mean = Σ reward ÷ n, to 3 dp

When a task's rewards are not all 0.0 or 1.0 it is treated as continuously graded, and its page shows a mean score at three decimals with no pass@1 and no pass@k. The trials still appear in every global count, and still only count as resolved at exactly 1.0.

The run's k

k = mode of the per-task trial counts

The headline k is descriptive. It is the most frequent trials-per-task value across the run, here 10, and it is reported alongside the published run metadata value of 10. Individual tasks depart from it in both directions.

Glossary

Terms used across the site, in the sense they are used here.

pass@1
The share of trials in a group that resolved. Counted over trials, not over tasks: a task with forty trials pulls on the figure forty times. Every pass@1 on this site is a plain proportion — no per-task weighting, no estimator, no correction for how many attempts a task received.
pass@k
On a task page, whether any attempt at that task resolved. It prints 100.0% or 0.0% and nothing between. The k is that task's own trial count, which varies across the run, so two tasks both reading 100.0% may have been given very different numbers of chances.
Reward
The verifier's verdict, as a number. 1.0 for a pass, 0.0 for a fail. One task in this run is graded on a continuous score instead, and there reward is a fraction. Reward is the only quantity on the site that decides anything; everything else describes it.
Verifier
The program that grades a finished workspace. It runs after the agent has stopped, with the reference solution and the grading assets restored, and it communicates by exit status. It is deterministic and it is the sole authority on reward.
Trajectory
The full record of one attempt: the instructions given, every tool call and its output, the files touched, and the final state of the workspace. The classifier reads the trajectory; the verifier does not.
Trial
One agent, one model, one task, one attempt, one reward. The trial is the unit of everything counted here. This run holds 879 of them.
Task
A problem with a starter workspace, an instruction, and a verifier. A task is attempted repeatedly and by more than one agent, so it appears in many trials. This run covers 90 tasks.
Category
The subject area a task belongs to, such as software engineering or RTL design. Categories are a fixed registry in the code, not a field derived from the data, and they are always presented in that registry's order rather than sorted by any statistic.
Live vs preview
A coverage marker, not a quality one. A category is live once it has at least 20 scored trials and preview below that. It counts trials, not tasks. Preview figures are published, but they are thin enough that ranking on them would be misleading.
Wilson interval
The 95% confidence interval drawn beside each pass@1. The Wilson score interval is used because it stays inside 0–100% and behaves sensibly at small n and at rates near the ends, where the textbook normal interval does not. It is an interval on one group's own rate; overlapping intervals are not a significance test.
Tier
Whether an agent row is ranked or held back as preview. Above the trial threshold a row is ranked; at or below it the row is still shown, with its figures, but kept out of the ranking.

Provenance

What this run was, and how to rebuild any number in it.

Run date2026-07-06
Benchmark version0.1.0
Commit2f94510
Trials per task (published k)10
Trials per task (observed mode)10
Scored trials879
Resolved398 (45.3%)
Tasks90
Categories15
Agent / model rows5

Agents in this run

  • claude-code / claude-haiku-4-5
  • claude-code / claude-opus-4-7
  • claude-code / claude-opus-4-8
  • claude-code / claude-sonnet-4-6
  • codex / gpt-5.5

Reproducing a figure

Every statistic above is a count over the trial index, so any figure can be rebuilt from the run table on the results page: filter to the group, count the rows with reward 1.0, divide by the rows shown, then apply the interval formula with z = 1.96. Individual trials link back to the published run, where the trajectory behind each label can be read in full.

Limitations

What this data cannot tell you. Read before quoting a figure.

  1. The labels are model-produced

    A model assigns them by reading the trajectory, and a model can be wrong. It can call a legitimate solve a hack, miss a hack that looks tidy, or blame a task for a failure that was the agent's. The 18 reward-hacks and 88 task-fault failures here are leads worth opening, not settled verdicts. Rewards are unaffected either way.

  2. pass@1 is not comparable across agents

    Each row ran a different subset of tasks, in different volumes — from 20 to 591 trials, and 2 to 56 distinct tasks. A high rate can mean a strong agent or an easy subset, and this data cannot separate the two. Read the rows as separate measurements that happen to share an axis.

  3. Small samples make wide intervals

    The thinnest row here spans 22.7 points at 95%. Categories in preview are thinner still. Where intervals overlap, no ordering is supported; ranking those rows would be reading noise.

  4. One run, one date

    Everything on this site comes from the run of 2026-07-06 at commit 2f94510. Agents are non-deterministic and models are moving targets, so these numbers are a snapshot, not a standing property of any agent. Nothing here is a trend.

  5. Harness errors are noise, and they are counted

    47 trials are labelled harness error and stay in every denominator on the site. The 40 of those that scored 0.0 pull pass@1 down by an amount nobody can quantify, since it is unknown what they would have scored had the infrastructure held. Dropping them would bias the rate the other way, so they are kept and flagged instead.