bench

methodology

Task suite and scoring

Price table as of

Sep 6, 2026

Judge panel (latest release)

claude · opus, codex · gpt-6-astra, grok · grok-4.6

What actually runs

Every release runs the same six tasks, one per category (UX/UI, frontend, backend, planning audit, bug fix, and a signature task carried over every release for visual continuity) through each CLI coding agent under test. Today the site shows one attempt per cell — the suite is built to average several attempts per task, but the current release has not run repeats yet, so every score you see is a single run.

Each run goes through the same three layers, in order:

  1. Gates. Deterministic pass/fail checks — install, build, typecheck, an axe accessibility sweep, a contract test suite — run in the order task.yaml lists them. The first gate that fails stops the run there: it scores no objective or subjective result for that task, and the leaderboard shows the cell as a gate failure rather than a zero.
  2. Hidden tests. For tasks with an objective layer, a spec the agent never saw is copied in and run against the agent's own code: hidden unit tests for a bug fix, a Playwright suite for a UI feature, a contract test suite for a backend service, or a checklist match for a planning audit. This produces the objective score.
  3. Blind rubric judging. A panel of read-only agent judges scores the diff, report, or screenshots against the task's rubric, without seeing which model produced the work — a randomized blind label stands in for the agent name. A judge is never asked to score a contestant from its own model family; that cell is filled by the other judges in the panel instead.

A run that fails a gate is excluded from every score average, not counted as a zero — a crashed build shouldn't drag down the same average as a working one that scored low. The leaderboard and task pages show a gate-failed cell as no score, with a link to the run so you can see exactly what failed.

Cost, tokens, and what "API-equivalent" means

Every run reports token counts by class: input, cache read, cache write, and output. Cost on this site is always the API-equivalent price of those tokens at the vendor's current list price, computed from the price table below — never what was actually billed. All the runs behind this site were driven through subscriptions, not pay-per-token API keys, so no real invoice exists to report; API-equivalent cost is the fairest stand-in, and it is recomputed from the live price table whenever prices change, not baked in at run time.

Judging and pairwise ratings

Judges are configured in bench.config.json and read out per release below. For tasks where the rubric marks pairwise comparisons on, judges also pick a winner for every pair of runs; those picks feed a Bradley-Terry rating with a confidence interval, shown on the task's results page whenever there are pairs to compare. A task with a single agent in a release has no pairs, so no rating renders for it yet.

Known limits of the current suite

  • Single attempt per cell. The suite design calls for several runs per task per agent, averaged into the spread shown elsewhere on this site; the current release has not run repeats, so every number is one run, not an average.
  • Two judge families in practice, not three. bench.config.json configures a three-family panel, but the judgments recorded on this release's runs came from only two of them — the third configured judge produced no judgments here. See the judge panel below for exactly who is configured versus who judged this release.
  • Grok has not run the suite yet. Grok appears in the judge panel but not yet as a contestant agent in a completed release.

The task suite

Suite version v2026.09, read live from every task.yaml in the repo. Full prompt, fixture, and scoring detail for each task lives on its test page.

TaskCategoryCapsGatesObjectiveSubjective dimensionsPairwise
Inventory serviceBackend80 turns · $15 · 45minstall, migrateHidden contract testsSchema soundness (40), Boundaries and error handling (30), Security (30)no
Fix date range overlap bugBug Fix40 turns · $5 · 20minstall, existing-testsHidden unit testsno
Issue board filtersFrontend70 turns · $12 · 35minstall, build, typecheck, axe-homeHidden Playwright testsCode quality and pattern conformance (50), UX polish (50)no
Codebase audit, planted defectsPlanning Audit40 turns · $8 · 25mPlanted-issue checklistActionability (40), Sequencing and risk coverage (30), Precision (30)no
shipshit.dev landing heroSignature50 turns · $8 · 25minstall, buildAesthetics (40), Typography (30), Motion and detail (30)yes
Landing page, five themesTaste100 turns · $15 · 45minstall, build, axe-themesConversion structure (30), Distinctiveness (25), Craft (20), Copy (10), Judgment (15)yes
Shipcut pricing pageUX/UI60 turns · $10 · 30minstall, build, axe-pricingAesthetics (30), Visual hierarchy (25), Interaction states (25), Responsiveness (20)yes

Price table

per 1M tokens, USD, as of Sep 6, 2026. Every cost figure on this site is derived from this table at list price, not billed spend.

ModelInputOutputCache readCache writeSource
Fable 5.1$10$50$0.25$12.5vendor pricing
Opus 5$5$25$0.5$6.25vendor pricing
Sonnet 5$2$10$0.2$2.5vendor pricing
Haiku 4.5$1$5$0.1$1.25vendor pricing
gpt-6-astra$10$50$1$12.5vendor pricing
gpt-5.6-sol$4$20$0.4$5vendor pricing
grok-4.6$2$6$0.5vendor pricing
gemini-3.1-pro-preview$2$12$0.2vendor pricing

Judge panel

Configured (bench.config.json)

  • claude:opus@high
  • codex:gpt-6-astra@high
  • grok:grok-4.6@high

Judged this release (v2026.09-smoke)

  • claude:opus
  • codex:gpt-6-astra
  • grok:grok-4.6

Known limits, this release

  • Single attempt per cell — every score on this release is one run, not an average over repeats.
  • 3-family judge panel is configured, but only 2 produced judgments on this release — grok did not judge here.
  • grok · grok-4.6 is listed as a contestant but completed no run in this release.