Measured · Study8views

WindTunnel study - cc vs codex

WindTunnel · 50 tasks · 2 harnesses · 2 models

Your setup won the shootout on correctness and efficiency.

Ranked shootout, no baseline arm: cells ranked by the composite score — the benchmark's own graders, then efficiency — claude-code / claude-haiku-4-5-20251001 leads.

Abstract

WindTunnel tested 50 tasks across 2 harness/model cells. Your setup achieved a 95% pass rate, correctly solving the benchmark's tasks. On efficiency, your setup delivered a median cost of $0.08 (mean $0.18) and median token usage of 380.3k (mean 799.4k), completing tasks in a median 4m 29s (mean 5m 44s). The leader across cells is claude-code / claude-haiku-4-5-20251001.

The result

Color by

claude-codecodex

Best setup: claude-code / claude-haiku-4-5-20251001 (98.4 of 100)

  1. 1claude-code / claude-haiku-4-5-2025100198.4best
  2. 2codex / gpt-5.4-mini81.6

Overall score per cell, 0–100 points (not a pass rate): 75% benchmark pass rate (the benchmark's own graders carry the outcome share — no judge grades or evals on this board) + 25% efficiency (cost · tokens · duration, vs the board's best arm). Absent components renormalize. Best at the top — the board's best setup is tagged.

Leaderboard

Cells ranked by the composite score — outcome (the lenses that graded) × efficiency — absolute values, no baseline arm. Tokens, cost and duration are per-cell medians, the efficiency the score folds.

#HarnessModelScorePass rateQualityEvalsGoalTokensCostDurationRuns
1claude-codeclaude-haiku-4-5-2025100198.498%−−100%176.5k$0.034m 23s48/48
2codexgpt-5.4-mini81.692%−−100%427.3k$0.134m 47s48/48

Pass rate

93.8% (95% CI 88.8–98.8)over 80 graded runs
  • Task text is withheld from public pages until an admin verifies this licence. Running this benchmark is unaffected.
CellPass rateTasksRunsRan asMatcher
claude-code/claude-haiku-4-5-2025100197.5% (95% CI 92.5–100)4040 (+8 unmeasured)with my setuptext_predicate
codex/gpt-5.4-mini90% (95% CI 80–100)4040 (+8 unmeasured)with my setuptext_predicate

Each run's answer was extracted from its response and matched against the benchmark's own key — no model in the loop. Two-stage: the mean over repeats per task, then the mean over tasks, with the interval taken over tasks.

Quality × efficiency clusters — normalized per task

Every graded run, standardized WITHIN its task so difficulty cancels out: → right = fewer tokens than the field on the same task, ↑ up = higher quality index (85% the benchmark's own pass/fail + 15% outcome) than the field. The field pools every harness and model, so a setup's left–right position largely reflects its own token habits. Dots are runs; each harness logo is a harness × model × arm centroid — hover it for the model and averages. Up-right wins.

Label
Task
Harness
Model
96 of 96 runs match
Show
Color by

claude-codecodex

better · cheaperworse · pricier
← pricier than the fieldefficiency (σ, per task)cheaper than the field →

Every metric, per harness × model

Benchmark pass rate

  1. claude-code / claude-haiku-4-5-2025100198%
  2. codex / gpt-5.4-mini92%

Task completion

  1. claude-code / claude-haiku-4-5-20251001100%
  2. codex / gpt-5.4-mini100%

Cost per run

  1. claude-code / claude-haiku-4-5-20251001$0.03
  2. codex / gpt-5.4-mini$0.13

Tokens per run

  1. claude-code / claude-haiku-4-5-20251001176.5k
  2. codex / gpt-5.4-mini427.3k

Duration per run

  1. claude-code / claude-haiku-4-5-202510014m 23s
  2. codex / gpt-5.4-mini4m 47s

Your setup

webmcp

The publisher has not described this setup — what each group's tools are, who built them, and how the tasks were chosen.

Distributions

Every completed run is one dot — the spread the averages hide. Click a dot to replay that run's journey.

Cost per run

Your setup
code/claude-haiku-4-5-20251001
codex/gpt-5.4-mini
0$4.38

Token composition — average per run

InputOutputCache readCache write
code/claude-haiku-4-5-20251001 · treat
198.9k
codex/gpt-5.4-mini · treat
1.4M

Statistics

MetricArmnMeanMedian (pooled)MinMaxStd dev
Costtreat96/96$0.18$0.03$0.02$4.38$0.51
Durationtreat96/965m 44s4m 36s1m 32s15m 27s3m 12s
Total tokenstreat96/96799.4k179.5k26.2k18.3M2.2M
Output tokenstreat96/963.6k1k39269.8k8.2k
Cache-read tokenstreat96/96750.2k172.5k10.6k17.1M2M
Cache-write tokenstreat96/963k1.7k035.3k5k
Turnstreat96/9610.393527.7

n = runs carrying the fact / completed runs in the arm; every statistic runs over present facts only — a missing fact is never counted as 0. Std dev is the sample form (n−1), withheld below n = 2. Every figure here POOLS all runs. The typical-run figures in the abstract, the head-to-head decision and the per-setup panels take each task's median first and then the median across tasks, so a task that ran more often never outweighs one that ran once; the two medians can differ. A promise study's headline (“cut average tokens”) compares per-arm means.

What each setup did

Derived from each run's recorded tool calls — not from a model's description of the run — and aggregated per setup, so a behavior seen across several runs is stated once with its rate. Open a finding to see the runs behind it, each linked to its journey at the step where it happened.

Harness
Model
Task
Pick a finding or a setup to list the runs behind it.
codex · openai · gpt-5.4-mini · Your setup3 findings
  • 3 of 48 runs · 3 completed
  • 3 of 48 runs · 3 completed
  • 1 of 48 runs · 1 completed

Task text withheld

Task text withheld — this benchmark is guarded and its tasks are not republished here.

Tasks

Runs

Every run is inspectable — open one to replay the agent's journey step by step, with the analyst's read underneath.

Every run, filterable… of 96Show runs
Task
Harness
Model
… of 96 runs match
Sort
HarnessModelTaskCompletedPassTokensCostDuration

Loading runs…

Methodology

What each metric means
Completed
The run finished and the harness returned a response. It does NOT mean the answer was correct — a completed run can score zero on quality.
Denominator: Terminal runs, excluding those killed by our own infrastructure.
Quality index
A composite used only in the quality x efficiency plot, built from whichever grader scored this study's runs — the judge's rubric, the pre-registered checks or the benchmark's own verdict — plus whether the run's own outcome was success. The map's caption names the grader and its weights.
Denominator: Graded runs — runs the study's grader scored.
Infra-excluded
A run killed by our own infrastructure. It is a missing measurement, never a loss for the arm, and is excluded from every rate denominator.
Denominator: Reported as a count beside every affected panel.
Single arm
Every task runs once per harness × model cell — a shootout with no baseline arm. The readout is absolute (quality, success, tokens, cost) and the cells are ranked into a leaderboard.
One run per task
Every task ran once per cell, in one phrasing. Run-to-run variation is therefore not measured: a single task's difference can be one lucky or unlucky attempt. Every row of the reference table treats the TASKS as the unit: its intervals resample the tasks and its p-values come from a paired test over them, so they describe how much the result depends on which tasks were drawn — not how it would change if the same tasks were run again. With few tasks no difference can reach significance (five tasks cannot go below p = 1/16).
Sample size
2 cells × 50 tasks × 1 arm = 100 runs planned; 96 launched.