Measured · Study2views
kalanu index crossed block — WindTunnel — claude-agent-sdk and opencode on claude-sonnet-5-5
WindTunnel · 50 tasks · 2 harnesses · 1 model
Claude-agent-sdk / claude-sonnet-5-5 won the shootout on the benchmark's verdict.
Ranked leaderboard of agents under As published: cells ranked by the composite score — the benchmark's own graders, then efficiency — claude-agent-sdk / claude-sonnet-5-5 leads.
From the publisher
kalanu.ai crossed block (owner-approved D5, 2026-10-03). The full WindTunnel corpus (50 tasks), the same pinned version as the 13-setup seed study, run once through the two setups that complete the block {claude-code, claude-agent-sdk, opencode} x {claude-haiku-4-5, claude-sonnet-5-5}: claude-agent-sdk and opencode on claude-sonnet-5-5 at their default configuration. The other four setups of the block were run in the seed study. Graded by the benchmark's own grader. One repeat per task.
Abstract
The benchmark's own pass/fail verdict decided this shootout: runs on the As published setup achieved a 99% pass rate across 50 tasks. On efficiency, the As published setup posted a median cost of $0.07 (mean $0.08), median tokens of 125.8k (mean 185.6k), and median duration of 21.1s (mean 32.8s). This leaderboard ranked 2 harness/model cells under a single group. The claude-agent-sdk / claude-sonnet-5-5 cell led the ranking.
The result
claude-agent-sdkopencode
Best setup: Claude Agent SDK / Claude Sonnet 5.5 (94.4 of 100)
- 1Claude Agent SDK / Claude Sonnet 5.594.4best
- 2opencode / Claude Sonnet 5.593.3
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 agent). 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 other group. Tokens, cost and duration are per-cell medians, the efficiency the score folds.
| # | Harness | Model | Score | Pass rate | Quality | Evals | Goal | Tokens | Cost | Duration | Runs |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Claude Agent SDK | Claude Sonnet 5.5 | 94.4 | 100% | − | − | − | 161.6k | $0.07 | 11.7s | 50/50 |
| 2 | opencode | Claude Sonnet 5.5 | 93.3 | 98% | − | − | − | 78.3k | $0.06 | 30.6s | 49/50 |
Pass rate
100%over 83 graded runs- Task text is withheld from public pages until an admin verifies this licence. Running this benchmark is unaffected.
| Cell | Pass rate | Tasks | Runs | Ran as | Matcher |
|---|---|---|---|---|---|
| claude-agent-sdk/claude-sonnet-5-5 | 100% | 42 | 42 (+8 unmeasured) | harness default | text_predicate |
| opencode/claude-sonnet-5-5 | 100% | 41 | 41 (+9 unmeasured) | harness default | text_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 × group centroid — hover it for the model and averages. Up-right wins.
1 runs not plotted (missing a grade or token count — infra failures included).
Every metric, per harness × model
Benchmark pass rate
- Claude Agent SDK / Claude Sonnet 5.5100%
- opencode / Claude Sonnet 5.598%
Task completion
- Claude Agent SDK / Claude Sonnet 5.5100%
- opencode / Claude Sonnet 5.5100%
Cost per run
- opencode / Claude Sonnet 5.5$0.06
- Claude Agent SDK / Claude Sonnet 5.5$0.07
Tokens per run
- opencode / Claude Sonnet 5.578.3k
- Claude Agent SDK / Claude Sonnet 5.5161.6k
Duration per run
- Claude Agent SDK / Claude Sonnet 5.511.7s
- opencode / Claude Sonnet 5.530.6s
By model
By model
Benchmark pass rate
By model
- Claude Sonnet 5.599%
Task completion
By model
- Claude Sonnet 5.5100%
Cost per run
By model
- Claude Sonnet 5.5$0.07
Tokens per run
By model
- Claude Sonnet 5.5125.8k
Duration per run
By model
- Claude Sonnet 5.521.1s
Distributions
Every completed run is one dot — the spread the averages hide. Click a dot to replay that run's journey.
Cost per run
Token composition — average per run
Statistics
| Metric | Group | n | Mean | Median (pooled) | Min | Max | Std dev |
|---|---|---|---|---|---|---|---|
| Cost | As published | 100/100 | $0.08 | $0.06 | $0.01 | $0.41 | $0.07 |
| Duration | As published | 100/100 | 32.7s | 26.3s | 7s | 3m 30s | 30.1s |
| Total tokens | As published | 100/100 | 183.8k | 121.6k | 10.6k | 1.3M | 203.4k |
| Output tokens | As published | 100/100 | 1.2k | 646 | 0 | 8.1k | 1.4k |
| Cache-read tokens | As published | 100/100 | 169.7k | 110.5k | 0 | 1.2M | 197.6k |
| Cache-write tokens | As published | 100/100 | 12.9k | 10.5k | 668 | 46.1k | 9.3k |
| Turns | As published | 51/100 | 7.1 | 5 | 1 | 28 | 6 |
n = runs carrying the fact / completed runs in the group; 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-group means.
Task text withheld
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Tasks
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
Task text withheld — this benchmark is guarded and its tasks are not republished here.
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 100Show runsHide runs
| Harness | Model | Task | Completed | Pass | Tokens | Cost | Duration |
|---|
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 group, and is excluded from every rate denominator.
- Denominator: Reported as a count beside every affected panel.
- One group
- Every task runs once per harness × model cell — a leaderboard with no other group. The readout is absolute (quality, success, tokens, cost) and the cells are ranked into a leaderboard.
- Run budget and harness builds
- Each run had a wall-clock budget and ran on a recorded harness build — disclosed, never used to split a comparison: Claude Agent SDK: 30 min per run, 1 harness build; opencode: 30 min per run, 1 harness build.
- 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 group = 100 runs.