← Chimeric Labs

DispatchBench: which model should a coding task go to?

WINNER

With Codex quota, use sol61-high ⚡.

Picks and model names

Four configs passed every try in every set. They were haiku-high, sonnet-medium, sol61-high and astra-medium. Repo tasks counted as task complete: hidden and visible tests both pass.

haiku-high is the cheapest, at $0.0028 per pass.

Cheapest main-ladder pass-rate matches, Claude → Codex: haiku-low → terra61-high. haiku-medium, haiku-high and sonnet-medium → terra61-low.

Cheapest main-ladder pass-rate matches, Codex → Claude: terra61-low → haiku-high; terra61-high → haiku-medium; sol61-medium → haiku-medium; sol61-high → haiku-high.

Against haiku-high, sol61-high takes 1.9× the time and ~7× the $ per pass. ⚡ makes that 1.2× the time at ~13× the $.

Numbers: the 12-problem main ladder, 60 tries per config. Time = median seconds. ~ = estimated from tokens; Claude costs are measured.
Use casePickPass$ per passTimeWhy
1. Defaultsol61-high ⚡60/60~$0.03617.4 sNo misses. $0 on the Claude bill (spends Codex quota). ⚡ saves 10 s. astra ⚡ is faster but uses 4× the quota
2. Budgethaiku-high60/60$0.002814.7 sCheapest with no misses. haiku-low costs less but misses 3 of 60
3. Speedsonnet-medium60/60$0.01210.1 sNo misses. 4.6 s faster than haiku-high.
  • ⚡ = fast mode: same pass rate, about 2× list price, faster.

Caveat: sonnet-medium's code read worst in a blind review (see Notes).

Model names
  • Config = one model at one effort level, e.g. haiku-low.
  • Claude models: haiku and sonnet.
  • Codex models: luna, sol and astra (OpenAI).
  • Suffix = effort: low / medium / high / xhigh (a step above high).
  • luna = gpt-6-luna, sol61 = gpt-6.1-sol, astra = gpt-6-astra. luna56 = gpt-5.6-luna, sol56 = gpt-5.6-sol (older generation).

LeetCode-style problems, written fresh for this bench. All calls ran 2026-10-22 to 2026-10-28.

Cost vs accuracyOne chart, three trade-offs

Cost, pass rate and speed: default cost versus pass viewRinged configs are strict Pareto trade-offs. All measurements and intervals come from the embedded dataset.$0.001$0.002$0.005$0.01$0.02$0.05$0.1$0.230%40%50%60%70%80%90%100%haiku-low: 57/60, $0.0011 per pass (measured), 9.96 s; 12 problem/task groups; 60 attemptshaiku-medium: 59/60, $0.0015 per pass (measured), 13.04 s; 12 problem/task groups; 60 attemptssonnet-medium: 60/60, $0.012 per pass (measured), 10.14 s; 12 problem/task groups; 60 attemptsluna-low: 46/60, $0.00090 per pass (token-estimate), 7.22 s; 12 problem/task groups; 60 attemptsluna-medium: 47/60, $0.00089 per pass (token-estimate), 8.24 s; 12 problem/task groups; 60 attemptssol61-medium: 58/60, $0.015 per pass (token-estimate), 22.59 s; 12 problem/task groups; 60 attemptshaiku-high: 60/60, $0.0028 per pass (measured), 14.74 s; 12 problem/task groups; 60 attemptsluna-high: 55/60, $0.0010 per pass (token-estimate), 12.17 s; 12 problem/task groups; 60 attemptsluna56-low: 48/60, $0.0022 per pass (token-estimate), 9.16 s; 12 problem/task groups; 60 attemptsluna56-high: 56/60, $0.0030 per pass (token-estimate), 11.41 s; 12 problem/task groups; 60 attemptssol56-high: 60/60, $0.042 per pass (token-estimate), 14.47 s; 12 problem/task groups; 60 attemptssol61-high: 60/60, $0.019 per pass (token-estimate), 27.43 s; 12 problem/task groups; 60 attemptsastra-medium: 60/60, $0.075 per pass (token-estimate), 20.92 s; 12 problem/task groups; 60 attemptsterra61-low: 60/60, $0.010 per pass (token-estimate), 10.34 s; 12 problem/task groups; 60 attemptsterra61-high: 58/60, $0.0079 per pass (token-estimate), 11.93 s; 12 problem/task groups; 60 attemptsterra56-low: 9/12, $0.018 per pass (token-estimate), 14.05 s; 12 problem/task groups; 12 attemptsterra56-high: 12/12, $0.018 per pass (token-estimate), 17.52 s; 12 problem/task groups; 12 attemptsgrok47-low: 53/60, $0.082 per pass (measured), 39.45 s; 12 problem/task groups; 60 attemptsgrok47-medium: 20/21, $0.066 per pass (measured), 32.56 s; 6 problem/task groups; 21 attemptsgrok47-high: 57/60, $0.13 per pass (measured), 105.72 s; 12 problem/task groups; 60 attemptsgrok47fast-low: 51/60, $0.18 per pass (measured), 34 s; 12 problem/task groups; 60 attemptssol61-high ⚡: 60/60, $0.036 per pass (token-estimate), 17.39 s; 12 problem/task groups; 60 attemptsastra-medium ⚡: 60/60, $0.15 per pass (token-estimate), 9.9 s; 12 problem/task groups; 60 attemptssol61-xhigh: 35/35, $0.033 per pass (token-estimate), 44.28 s; 7 problem/task groups; 35 attemptsluna-low-bare: 44/60, $0.00080 per pass (token-estimate), 6.81 s; 12 problem/task groups; 60 attemptshaiku-highhaiku-mediumhaiku-lowluna-highluna-mediumluna-low-bare$ per pass (log) · left is cheaperPass rate · up is better
Claude · Codex · Codex 5.6 · Grok · ring = best trade-off · solid = normal · hollow = fast · dashed edge = bare

haiku-high is cheapest at 100%, at $0.0028 per pass. On the main ladder plus partial runs, at list price, that is the top observed pass rate; the frontier is luna-low-bare, luna-medium, luna-high, haiku-low, haiku-medium, haiku-high. Partial runs are labelled per config; their rates are not like-for-like with the full ladder.

Cost, pass rate and speed in one space. Choose a view, scroll to zoom, drag to pan or rotate. Ringed points: nothing beats them.

Partial runs are labelled per config; their rates are not like-for-like with the full ladder.

devin16slow-default: Devin probe: 1 repeat, free tier, no token data; cost unavailable — use Speed × Pass.

By model

Each panel zooms to its model. Dashed staircase = the whole chart’s frontier; shaded area is beaten. Ghost dots show other models. Letters name effort. Pipelines split by gate.

astra · 6.x

0 of 2 on frontier · 2 beaten

astra · 6.x detailastra-medium · token-estimateMastra-medium ⚡ · token-estimateM

grok

0 of 4 on frontier · 4 beaten

grok detailgrok47-low · measuredLgrok47-medium · measuredMgrok47-high · measuredHgrok47fast-low · measuredL

haiku

3 of 3 on frontier · 0 beaten

haiku detailhaiku-low · measuredLhaiku-medium · measuredMhaiku-high · measuredH

luna · 5.6

0 of 2 on frontier · 2 beaten

luna · 5.6 detailluna56-low · token-estimateLluna56-high · token-estimateH

luna · 6.x

3 of 4 on frontier · 1 beaten

luna · 6.x detailluna-low · token-estimateLluna-medium · token-estimateMluna-high · token-estimateHluna-low-bare · token-estimateL

sol · 5.6

0 of 1 on frontier · 1 beaten

sol · 5.6 detailsol56-high · token-estimateH

sol · 6.1

0 of 4 on frontier · 4 beaten

sol · 6.1 detailsol61-medium · token-estimateMsol61-high · token-estimateHsol61-high ⚡ · token-estimateHsol61-xhigh · token-estimateXH

sonnet

0 of 1 on frontier · 1 beaten

sonnet detailsonnet-medium · measuredM

terra · 5.6

0 of 2 on frontier · 2 beaten

terra · 5.6 detailterra56-low · token-estimateLterra56-high · token-estimateH

terra · 6.1

0 of 2 on frontier · 2 beaten

terra · 6.1 detailterra61-low · token-estimateLterra61-high · token-estimateH
Radar per config

Pass, cheap and fast use the selected set’s measured axes, normalised to the displayed extents. Unsupported quality and repo scores are omitted.

haiku-low

haiku-low normalised radarpasscheapfast

57/60 · $0.0011 (measured) · 9.96 s

haiku-medium

haiku-medium normalised radarpasscheapfast

59/60 · $0.0015 (measured) · 13.04 s

sonnet-medium

sonnet-medium normalised radarpasscheapfast

60/60 · $0.012 (measured) · 10.14 s

luna-low

luna-low normalised radarpasscheapfast

46/60 · $0.00090 (token-estimate) · 7.22 s

luna-medium

luna-medium normalised radarpasscheapfast

47/60 · $0.00089 (token-estimate) · 8.24 s

sol61-medium

sol61-medium normalised radarpasscheapfast

58/60 · $0.015 (token-estimate) · 22.59 s

haiku-high

haiku-high normalised radarpasscheapfast

60/60 · $0.0028 (measured) · 14.74 s

luna-high

luna-high normalised radarpasscheapfast

55/60 · $0.0010 (token-estimate) · 12.17 s

luna56-low

luna56-low normalised radarpasscheapfast

48/60 · $0.0022 (token-estimate) · 9.16 s

luna56-high

luna56-high normalised radarpasscheapfast

56/60 · $0.0030 (token-estimate) · 11.41 s

sol56-high

sol56-high normalised radarpasscheapfast

60/60 · $0.042 (token-estimate) · 14.47 s

sol61-high

sol61-high normalised radarpasscheapfast

60/60 · $0.019 (token-estimate) · 27.43 s

astra-medium

astra-medium normalised radarpasscheapfast

60/60 · $0.075 (token-estimate) · 20.92 s

terra61-low

terra61-low normalised radarpasscheapfast

60/60 · $0.010 (token-estimate) · 10.34 s

terra61-high

terra61-high normalised radarpasscheapfast

58/60 · $0.0079 (token-estimate) · 11.93 s

terra56-low

terra56-low normalised radarpasscheapfast

9/12 · $0.018 (token-estimate) · 14.05 s

terra56-high

terra56-high normalised radarpasscheapfast

12/12 · $0.018 (token-estimate) · 17.52 s

grok47-low

grok47-low normalised radarpasscheapfast

53/60 · $0.082 (measured) · 39.45 s

grok47-medium

grok47-medium normalised radarpasscheapfast

20/21 · $0.066 (measured) · 32.56 s

grok47-high

grok47-high normalised radarpasscheapfast

57/60 · $0.13 (measured) · 105.72 s

grok47fast-low

grok47fast-low normalised radarpasscheapfast

51/60 · $0.18 (measured) · 34 s

devin16slow-default

devin16slow-default normalised radarpasscheapfastcost unavailable

6/12 · – (unmetered) · 10.49 s

sol61-high ⚡

sol61-high ⚡ normalised radarpasscheapfast

60/60 · $0.036 (token-estimate) · 17.39 s

astra-medium ⚡

astra-medium ⚡ normalised radarpasscheapfast

60/60 · $0.15 (token-estimate) · 9.9 s

sol61-xhigh

sol61-xhigh normalised radarpasscheapfast

35/35 · $0.033 (token-estimate) · 44.28 s

luna-low-bare

luna-low-bare normalised radarpasscheapfast

44/60 · $0.00080 (token-estimate) · 6.81 s

Earlier charts only: speed gaps below both 0.5 s and 5% count as ties.

Earlier charts

🎯 Pass rate vs $ per pass

Codex counted at $0 on the Claude bill (it still spends Codex quota): its points move to the $0 lane. Each saving per pass is in the key and tooltip.

$0.0010$0.0030$0.010$0.030$0.10$0.3070%80%90%100%$ per passing answer (log scale)pass rate↖ better123456
Best trade-offs
  1. 1luna-low-bare
  2. 2luna-medium
  3. 3luna-high
  4. 4haiku-low
  5. 5haiku-medium
  6. 6haiku-high
Nothing is both cheaper and more accurate. Shaded: beaten by a numbered point.
main (7)
  • haiku-high100% · $0.0028
  • sonnet-medium100% · $0.012
  • haiku-medium98% · $0.0015
  • sol61-medium97% · $0.015
  • haiku-low95% · $0.0011
  • luna-medium78% · $0.00089
  • luna-low77% · $0.00090
fast (2)
  • sol61-high ⚡100% · $0.036
  • astra-medium ⚡100% · $0.15
exploratory (9)
  • terra61-low100% · $0.010
  • sol61-high100% · $0.019
  • sol56-high100% · $0.042
  • astra-medium100% · $0.075
  • terra61-high97% · $0.0079
  • luna56-high93% · $0.0030
  • luna-high92% · $0.0010
  • luna56-low80% · $0.0022
  • luna-low-bare73% · $0.00080
Grok (all 12 problems) (3)
  • grok47-high95% · $0.13
  • grok47-low88% · $0.082
  • grok47fast-low85% · $0.18
$0.0010$0.010$0.1070%80%90%100%$ per passing answer (log scale)pass rate↖ better$0123456haiku-highsonnet-medium
Best trade-offs
  1. 1astra-medium
  2. 2astra-medium ⚡
  3. 3sol61-high
  4. 4sol61-high ⚡
  5. 5sol56-high
  6. 6terra61-low
Nothing is both cheaper and more accurate. Shaded: beaten by a numbered point.
main (7)
  • haiku-high100% · $0.0028
  • sonnet-medium100% · $0.012
  • haiku-medium98% · $0.0015
  • sol61-medium97% · $0 · saved $0.015
  • haiku-low95% · $0.0011
  • luna-medium78% · $0 · saved $0.00089
  • luna-low77% · $0 · saved $0.00090
fast (2)
  • astra-medium ⚡100% · $0 · saved $0.15
  • sol61-high ⚡100% · $0 · saved $0.036
exploratory (9)
  • astra-medium100% · $0 · saved $0.075
  • sol61-high100% · $0 · saved $0.019
  • sol56-high100% · $0 · saved $0.042
  • terra61-low100% · $0 · saved $0.010
  • terra61-high97% · $0 · saved $0.0079
  • luna56-high93% · $0 · saved $0.0030
  • luna-high92% · $0 · saved $0.0010
  • luna56-low80% · $0 · saved $0.0022
  • luna-low-bare73% · $0 · saved $0.00080
Grok (all 12 problems) (3)
  • grok47-high95% · $0.13
  • grok47-low88% · $0.082
  • grok47fast-low85% · $0.18

luna-low is not a best trade-off: luna-medium costs the same, $0.0009 per pass. It passes 47/60 to luna-low's 46/60. Main ladder only; every point counts. Grok: black hexagons, all 12 problems, outside the best-trade-off line. grok47-medium (p01–p06 only) is not plotted.

$0.0010$0.0030$0.010$0.030$0.10$0.3060%70%80%90%100%$ per passing answer (log scale)pass rate↖ better123sonnet-medium
Best trade-offs
  1. 1luna-high-bare
  2. 2luna-high-bare→retry
  3. 3haiku-medium
Nothing is both cheaper and more accurate. Shaded: beaten by a numbered point.
main (6)
  • haiku-medium100% · $0.0019
  • haiku-high100% · $0.0035
  • sonnet-medium100% · $0.015
  • sol61-medium94% · $0.018
  • haiku-low91% · $0.0016
  • luna-low60% · $0.0013
fast (2)
  • sol61-high ⚡100% · $0.043
  • astra-medium ⚡100% · $0.17
pipelines (11)
  • luna-high-bare→H all100% · $0.0035
  • sol61-high→H fail100% · $0.022
  • sol61-high ⚡→H fail100% · $0.043
  • astra-medium→H fail100% · $0.087
  • astra-medium ⚡→H fail100% · $0.17
  • luna-low→H fail97% · $0.0022
  • luna-low→H all97% · $0.0039
  • luna-high-bare→retry91% · $0.0011
  • luna-high-bare→H fail91% · $0.0014
  • plan→luna-high-bare89% · $0.0036
  • plan→luna-low86% · $0.0034
exploratory (6)
  • sol61-high100% · $0.022
  • sol56-high100% · $0.051
  • astra-medium100% · $0.086
  • luna56-high91% · $0.0036
  • luna-high-bare89% · $0.0010
  • luna56-low83% · $0.0025
$0.00010$0.0010$0.010$0.1060%70%80%90%100%$ per passing answer (log scale)pass rate↖ better$0123456789sonnet-medium
Best trade-offs
  1. 1sol61-high
  2. 2sol61-high ⚡
  3. 3astra-medium
  4. 4astra-medium ⚡
  5. 5sol56-high
  6. 6sol61-high→H fail
  7. 7sol61-high ⚡→H fail
  8. 8astra-medium→H fail
  9. 9astra-medium ⚡→H fail
Nothing is both cheaper and more accurate. Shaded: beaten by a numbered point.
main (6)
  • haiku-medium100% · $0.0019
  • haiku-high100% · $0.0035
  • sonnet-medium100% · $0.015
  • sol61-medium94% · $0 · saved $0.018
  • haiku-low91% · $0.0016
  • luna-low60% · $0 · saved $0.0013
fast (2)
  • sol61-high ⚡100% · $0 · saved $0.043
  • astra-medium ⚡100% · $0 · saved $0.17
pipelines (11)
  • sol61-high→H fail100% · $0 · saved $0.022
  • sol61-high ⚡→H fail100% · $0 · saved $0.043
  • astra-medium→H fail100% · $0 · saved $0.087
  • astra-medium ⚡→H fail100% · $0 · saved $0.17
  • luna-high-bare→H all100% · $0.0025 · saved $0.00096
  • luna-low→H fail97% · $0.0013 · saved $0.00083
  • luna-low→H all97% · $0.0031 · saved $0.00083
  • luna-high-bare→retry91% · $0 · saved $0.0011
  • luna-high-bare→H fail91% · $0.00030 · saved $0.0010
  • plan→luna-high-bare89% · $0.0022 · saved $0.0013
  • plan→luna-low86% · $0.0023 · saved $0.0011
exploratory (6)
  • sol61-high100% · $0 · saved $0.022
  • astra-medium100% · $0 · saved $0.086
  • sol56-high100% · $0 · saved $0.051
  • luna56-high91% · $0 · saved $0.0036
  • luna-high-bare89% · $0 · saved $0.0010
  • luna56-low83% · $0 · saved $0.0025
Speed vs $ per pass

Best trade-offs, pass rate at least 90%.

Codex counted at $0 on the Claude bill (it still spends Codex quota): its points move to the $0 lane. Each saving per pass is in the key and tooltip.

5 s10 s15 s20 s25 s30 s35 s40 s45 s50 s55 s60 s65 s70 s75 s80 s85 s90 s95 s100 s105 s110 s$0.0010$0.0030$0.010$0.030$0.10$0.30median seconds per call (bar on hover: middle half of calls)$ per pass (log)12haiku-highsol61-high ⚡↙ better
Best trade-offs
  1. 1haiku-low
  2. 2luna-high
Nothing is both faster and cheaper. Shaded: a numbered point is cheaper and about as fast. Faded: under 90% pass.
main (7)
  • luna-low7.2 s · $0.00090
  • luna-medium8.2 s · $0.00089
  • haiku-low10.0 s · $0.0011
  • sonnet-medium10.1 s · $0.012
  • haiku-medium13.0 s · $0.0015
  • haiku-high14.7 s · $0.0028
  • sol61-medium22.6 s · $0.015
fast (2)
  • astra-medium ⚡9.9 s · $0.15
  • sol61-high ⚡17.4 s · $0.036
exploratory (9)
  • luna-low-bare6.8 s · $0.00080
  • luna56-low9.2 s · $0.0022
  • terra61-low10.3 s · $0.010
  • luna56-high11.4 s · $0.0030
  • terra61-high11.9 s · $0.0079
  • luna-high12.2 s · $0.0010
  • sol56-high14.5 s · $0.042
  • astra-medium20.9 s · $0.075
  • sol61-high27.4 s · $0.019
Grok (all 12 problems) (3)
  • grok47fast-low34.0 s · $0.18
  • grok47-low39.5 s · $0.082
  • grok47-high105.7 s · $0.13
5 s10 s15 s20 s25 s30 s35 s40 s45 s50 s55 s60 s65 s70 s75 s80 s85 s90 s95 s100 s105 s110 s$0.0010$0.0030$0.010$0.030$0.10$0.30$0median seconds per call (bar on hover: middle half of calls)$ per pass (log)12haiku-highsonnet-mediumsol61-high ⚡↙ better
Best trade-offs
  1. 1astra-medium ⚡
  2. 2terra61-low
Nothing is both faster and cheaper. Shaded: a numbered point is cheaper and about as fast. Faded: under 90% pass.
main (7)
  • luna-low7.2 s · $0 · saved $0.00090
  • luna-medium8.2 s · $0 · saved $0.00089
  • haiku-low10.0 s · $0.0011
  • sonnet-medium10.1 s · $0.012
  • haiku-medium13.0 s · $0.0015
  • haiku-high14.7 s · $0.0028
  • sol61-medium22.6 s · $0 · saved $0.015
fast (2)
  • astra-medium ⚡9.9 s · $0 · saved $0.15
  • sol61-high ⚡17.4 s · $0 · saved $0.036
exploratory (9)
  • luna-low-bare6.8 s · $0 · saved $0.00080
  • luna56-low9.2 s · $0 · saved $0.0022
  • terra61-low10.3 s · $0 · saved $0.010
  • luna56-high11.4 s · $0 · saved $0.0030
  • terra61-high11.9 s · $0 · saved $0.0079
  • luna-high12.2 s · $0 · saved $0.0010
  • sol56-high14.5 s · $0 · saved $0.042
  • astra-medium20.9 s · $0 · saved $0.075
  • sol61-high27.4 s · $0 · saved $0.019
Grok (all 12 problems) (3)
  • grok47fast-low34.0 s · $0.18
  • grok47-low39.5 s · $0.082
  • grok47-high105.7 s · $0.13

luna-low is not a best trade-off: luna-medium costs the same, $0.0009 per pass. It passes 47/60 to luna-low's 46/60. Main ladder only; every point counts. Grok: black hexagons, all 12 problems, outside the best-trade-off line. grok47-medium (p01–p06 only) is not plotted.

5 s10 s15 s20 s25 s30 s35 s$0.0010$0.0030$0.010$0.030$0.10$0.30median seconds per call$ per pass (log)12haiku-highsonnet-medium↙ better
Best trade-offs
  1. 1luna-low→H fail
  2. 2luna-high-bare→retry
Nothing is both faster and cheaper. Shaded: a numbered point is cheaper and about as fast. Faded: under 90% pass.
main (6)
  • luna-low8.5 s · $0.0013
  • sonnet-medium11.4 s · $0.015
  • haiku-low13.1 s · $0.0016
  • haiku-medium14.8 s · $0.0019
  • haiku-high17.4 s · $0.0035
  • sol61-medium25.6 s · $0.018
fast (2)
  • astra-medium ⚡10.9 s · $0.17
  • sol61-high ⚡18.9 s · $0.043
pipelines (11)
  • luna-low→H fail7.9 s · $0.0022
  • luna-high-bare→retry10.6 s · $0.0011
  • luna-high-bare→H fail10.6 s · $0.0014
  • astra-medium ⚡→H fail10.9 s · $0.17
  • sol61-high ⚡→H fail18.9 s · $0.043
  • astra-medium→H fail21.4 s · $0.087
  • plan→luna-low22.1 s · $0.0034
  • luna-low→H all23.1 s · $0.0039
  • luna-high-bare→H all26.1 s · $0.0035
  • plan→luna-high-bare27.4 s · $0.0036
  • sol61-high→H fail32.7 s · $0.022
exploratory (6)
  • luna56-low12.3 s · $0.0025
  • luna-high-bare13.2 s · $0.0010
  • luna56-high14.1 s · $0.0036
  • sol56-high19.5 s · $0.051
  • astra-medium26.0 s · $0.086
  • sol61-high33.4 s · $0.022
5 s10 s15 s20 s25 s30 s35 s$0.00030$0.0010$0.0030$0.010$0.030$0.10$0.30$0median seconds per call$ per pass (log)1234haiku-highsonnet-medium↙ better
Best trade-offs
  1. 1luna-low→H fail
  2. 2luna-high-bare→retry
  3. 3astra-medium ⚡
  4. 4astra-medium ⚡→H fail
Nothing is both faster and cheaper. Shaded: a numbered point is cheaper and about as fast. Faded: under 90% pass.
main (6)
  • luna-low8.5 s · $0 · saved $0.0013
  • sonnet-medium11.4 s · $0.015
  • haiku-low13.1 s · $0.0016
  • haiku-medium14.8 s · $0.0019
  • haiku-high17.4 s · $0.0035
  • sol61-medium25.6 s · $0 · saved $0.018
fast (2)
  • astra-medium ⚡10.9 s · $0 · saved $0.17
  • sol61-high ⚡18.9 s · $0 · saved $0.043
pipelines (11)
  • luna-low→H fail7.9 s · $0.0013 · saved $0.00083
  • luna-high-bare→retry10.6 s · $0 · saved $0.0011
  • luna-high-bare→H fail10.6 s · $0.00030 · saved $0.0010
  • astra-medium ⚡→H fail10.9 s · $0 · saved $0.17
  • sol61-high ⚡→H fail18.9 s · $0 · saved $0.043
  • astra-medium→H fail21.4 s · $0 · saved $0.087
  • plan→luna-low22.1 s · $0.0023 · saved $0.0011
  • luna-low→H all23.1 s · $0.0031 · saved $0.00083
  • luna-high-bare→H all26.1 s · $0.0025 · saved $0.00096
  • plan→luna-high-bare27.4 s · $0.0022 · saved $0.0013
  • sol61-high→H fail32.7 s · $0 · saved $0.022
exploratory (6)
  • luna56-low12.3 s · $0 · saved $0.0025
  • luna-high-bare13.2 s · $0 · saved $0.0010
  • luna56-high14.1 s · $0 · saved $0.0036
  • sol56-high19.5 s · $0 · saved $0.051
  • astra-medium26.0 s · $0 · saved $0.086
  • sol61-high33.4 s · $0 · saved $0.022
HaikuSonnetCodexGrokBest trade-off (ringed, numbered)
How to read this data
  • Colour = vendor. Shape = model: ● Haiku · ■ Sonnet. Triangles = luna · ◆ sol · ★ astra · ⬟ terra. Luna triangle direction = effort: up low, right medium, down high. Alternate Codex colour = the older gpt-5.6 models (luna56, sol56).

Speed and bare prompts

  • Filled = normal speed. Hollow (⚡) = fast mode, joined by a thin line to its normal-speed point. Dashed edge = bare prompt.
  • luna-low-bare = luna-low with Codex's system prompt trimmed.

Points and labels

  • Numbered points are named under each chart. Labels mark only the named picks. Hover or tap any point or key row for the rest. Ringed, numbered points are best trade-offs. Shading marks what they beat.
  • The 95% range is shown as whiskers.

Key numbers

  • haiku-high has a pass rate of 100%, at $0.0028 per pass. sol61-high also has a pass rate of 100%, at ~$0.019 per pass. sol61-high costs $0 on Codex quota.
  • The cheapest luna configs cost less but miss about 1 answer in 4.
  • luna-low pass rate: 77%. luna-low-bare pass rate: 73%. luna-medium pass rate: 78%.

Sets and pipelines

Retest set: the 7 problems luna-low, luna-medium or luna-low-bare missed. 35 attempts each, no intervals. Purple-filled points are pipelines. Numbered points are the best trade-offs.

How to read the problems, rungs and sets
  • Compare each set separately.
  • Problem labels show number, short name and rung: p12 sheet (L6). Hover for a one-line description.
  • Main ladder: 12 problems. Rungs: L1–L6. Each has 2 problems, easiest first. Most configs ran it; the exceptions: terra56-low 12 calls; terra56-high 12 calls; devin16slow-default 12 calls; sol61-xhigh 35 calls; the Grok configs are counted in the Grok section.
  • L7 set: p13 xor_ring (L7), p14 bounce_board (L7), p15 paint_erase (L7); scored separately. Added after every strong config passed L6.
  • 13 configs ran the L7 set; luna-low, luna-medium, luna-low-bare, terra61-high and terra61-low did not.
  • Retest set:
    • p03 ledger (L2).
    • p04 taller_within (L2).
    • p08 recur (L4).
    • p09 k_machine_schedule (L5).
    • p10 avoid_count (L5).
    • p11 best_average (L6).
    • p12 sheet (L6).
  • Easy/Medium/Hard badges estimate LeetCode difficulty; rungs use this bench's own order and may differ.

Pipelines are on the "Retest set + pipelines" tab.

Results

sol61-high ⚡ is the Codex pick. haiku-high is the cheapest config with no misses on the main ladder.

Verdict key: ✓ pick = a Winner pick. 0 misses / missed N = raw miss count, no ranking. beaten = another row is as cheap and passes as often. trade-off = pricier but passes more. avoid = below 90%.

configpassed$ per passClaude $median sverdict
Main ladder: 12 problems × 5 tries = 60 calls
haiku-low95% (57/60)$0.0011$0.001110.0trade-off
haiku-medium98% (59/60)$0.0015$0.001513.0missed 1
haiku-high100% (60/60)$0.0028$0.002814.7✓ pick (budget)
sonnet-medium100% (60/60)$0.012$0.01210.1✓ pick (speed)
sol61-medium97% (58/60)~$0.015$022.6beaten
luna-high92% (55/60)~$0.0010$012.2trade-off
luna-medium78% (47/60)~$0.00089$08.2avoid
luna-low77% (46/60)~$0.00090$07.2avoid
astra-medium100% (60/60)~$0.075$020.90 misses
astra-medium ⚡100% (60/60)~$0.15$09.90 misses
sol61-high100% (60/60)~$0.019$027.40 misses
sol61-high ⚡100% (60/60)~$0.036$017.4✓ pick
sol56-high100% (60/60)~$0.042$014.50 misses
luna56-high93% (56/60)~$0.0030$011.4beaten
luna56-low80% (48/60)~$0.0022$09.2avoid
terra61-high97% (58/60)~$0.0079$0.007911.9beaten
terra61-low100% (60/60)~$0.010$0.01010.30 misses
Retest set: 7 problems × 5 tries = 35 attempts
luna-low60% (21/35)~$0.0013$08.5missed 14
haiku-low91% (32/35)$0.0016$0.001613.1missed 3
haiku-medium100% (35/35)$0.0019$0.001914.80 misses
haiku-high100% (35/35)$0.0035$0.003517.40 misses
sonnet-medium100% (35/35)$0.015$0.01511.40 misses
sol61-medium94% (33/35)~$0.018$025.6missed 2
sol61-high100% (35/35)~$0.022$033.40 misses
sol61-high ⚡100% (35/35)~$0.043$018.90 misses
astra-medium100% (35/35)~$0.086$026.00 misses
astra-medium ⚡100% (35/35)~$0.17$010.90 misses
sol56-high100% (35/35)~$0.051$019.50 misses
luna56-high91% (32/35)~$0.0036$014.1missed 3
luna56-low83% (29/35)~$0.0025$012.3missed 6
luna-low→H fail97% (34/35)~$0.0022$0.00137.9missed 1
luna-high-bare→H fail91% (32/35)~$0.0014$0.0003010.6missed 3
plan→luna-low86% (30/35)~$0.0034$0.002322.1missed 5
plan→luna-high-bare89% (31/35)~$0.0036$0.002227.4missed 4
luna-high-bare→retry91% (32/35)~$0.0011$010.6missed 3
luna-low→H all97% (34/35)~$0.0039$0.003123.1missed 1
luna-high-bare→H all100% (35/35)~$0.0035$0.002526.10 misses
Devin: 1 repeat, free tier, no token data
devin16slow-default50% (6/12)––10.5not a delegate (free tier)
Low context (trimmed prompt): luna-low-bare passed 44/60 on the main ladder. luna-high-bare passed 31/35 on the retest set.
Full table: intervals and slow-call time
configpass rate 95% CI (function tests)slow-call time stotal $ (all calls)
Main ladder
haiku-low85%–100%16.0$0.064
haiku-medium93%–100%26.8$0.088
sonnet-medium≥78% (all passed)18.1$0.75
luna-low53%–95%11.6~$0.041
luna-medium57%–97%11.8~$0.042
sol61-medium87%–100%36.2~$0.87
astra-medium †≥78% (all passed)35.6~$4.52
astra-medium ⚡ †≥78% (all passed)13.6~$9.12
devin16slow-default †25%–75%15.8unmetered
haiku-high †≥78% (all passed)37.6$0.17
luna-high †82%–100%22.9~$0.058
luna56-high †83%–100%35.5~$0.17
luna56-low †60%–97%17.4~$0.10
sol56-high †≥78% (all passed)48.4~$2.51
sol61-high †≥78% (all passed)50.2~$1.12
sol61-high ⚡ †≥78% (all passed)27.9~$2.15
terra56-high †≥78% (all passed)34.1~$0.22
terra56-low †50%–100%22.3~$0.16
terra61-high †88%–100%19.5~$0.46
terra61-low †≥78% (all passed)20.9~$0.62
Low context: trimmed prompt
luna-low-bare †52%–92%11.1~$0.035

⚡ Codex fast mode: seconds and $ per pass

Normal and fast modeladder · sol61-high27.4s · $0.019ladder · sol61-high⚡17.4s · $0.036ladder ·astra-medium20.9s · $0.075ladder ·astra-medium ⚡9.9s · $0.15L7 · sol61-high52.7s · $0.024L7 · sol61-high ⚡29.4s · $0.044L7 · astra-medium30.6s · $0.083L7 · astra-medium ⚡15.4s · $0.16
Normal and fast mode
ladder · sol61-high27.4s · $0.019
ladder · sol61-high ⚡17.4s · $0.036
ladder · astra-medium20.9s · $0.075
ladder · astra-medium ⚡9.9s · $0.15
L7 · sol61-high52.7s · $0.024
L7 · sol61-high ⚡29.4s · $0.044
L7 · astra-medium30.6s · $0.083
L7 · astra-medium ⚡15.4s · $0.16
How to read this data
  • Ladder problems: p01–p12. Rungs: L1–L6.
  • Low-context rows use trimmed prompts. Other variants: Notes → Everything we tried.

Table columns

  • Claude $ column: all = every dollar of that row went to Claude.
  • Pipeline rows show only the Haiku share.
  • Click a header to sort within a group. Symbols: see Notation.

Retest set

  • Retest set = the 7 problems a cheap luna config missed. Its single-model rows reuse earlier attempts.
  • Not listed: →H fail rows for sol61-high and astra-medium (normal and ⚡). Haiku never ran, so their results match the plain rows.

Pass rate and time

  • Pass rate is pass@1: the share of single attempts that pass every hidden test.
  • Every pass rate names its rule. Function track: function tests (reference + brute force). Repo tasks use one headline rule, task complete: complete = hidden and the run's own visible suite both green; hidden = our hidden suite only. Counts read like "7/12 complete (12/12 hidden)".
  • The 95% range is the pass-rate uncertainty shown in the table.
  • Slow-call time: the time within which 90% of calls finished.
  • The lower end of the 95% range is shown as ≥N% when all passed.
  • Most configs ran 60 calls (terra56-low 12 calls; terra56-high 12 calls; devin16slow-default 12 calls; sol61-xhigh 35 calls; the Grok configs are counted in the Grok section). † = exploratory, added after seeing the main-run results.

Fast mode

  • Pairs compare sol61-high and astra-medium at normal speed and ⚡.
  • The model and effort stay the same. The main ladder and L7 each passed every try.
  • Fast-mode $ uses 2× list price. This multiplier comes from the pricing page.

Codex $

  • Codex $ is an estimate: tokens × list price, not a bill. ~ marks estimates.
  • On a subscription it uses quota instead. See Notation.

Grok and Devin

Grok got through all six rungs, L1–L6. Every config missed somewhere. grok47-high passed 57/60 and missed at L4 and L6. grok47-low passed 53/60 and missed at L3 and L6. grok47fast-low passed 51/60 and missed at L3, L4 and L6. L1, L2 and L5 were clean for all three.

For grok47-high, the closest lane by pass rate in each family is Claude haiku-low (57/60, 10.0 s, $0.0011 per pass) and Codex luna56-high (56/60, 11.4 s, $0.0030 per pass). grok47-high itself: 57/60, 105.7 s, $0.13 per pass. Against the closest lane of each full-run Grok config (grok47-high, grok47-low and grok47fast-low), Grok takes 3.4–10.6× as long and costs 27.4–160.6× as much per pass.

Where does Grok get to?

configL1L2L3L4L5L6passes (function tests)median s$ per passcoveragetotal $
grok47-high10/1010/1010/109/1010/108/1057/60105.7$0.1312 problems$7.52
grok47-low10/1010/107/1010/1010/106/1053/6039.4$0.08212 problems$4.33
grok47fast-low10/1010/106/109/1010/106/1051/6034.0$0.1812 problems$9.19
grok47-medium10/107/73/4–––20/2132.6$0.0666 problems$1.33

Each full-run config ran 12 problems × 5 repeats (main + exploratory phases, repeats 1–5). 87 of the 201 Grok calls come from the first run. grok47-medium ran p01–p06 only, as before; it was not extended, so it is not in the closest-lane comparison. 1 call hit the time limit and counts as a miss: grok47-high on p12 repeat 5. A killed call has no bill, so that config's $ per pass is a floor. luna-high and sol61-high-fast did not run every problem in the main and exploratory phases, so they are left out of the comparison. CLI-reported cost; list price not used for Grok. Codex dollars use tokens × list price with the fast-mode multiplier. Closest lane = nearest pass rate among the full-ladder lanes, then nearest median time, then cost per pass.

Closest lanes by pass rate

Grok configfamilyclosest laneits passes (function tests)its median sits $ per passGrok time / laneGrok cost / lane
grok47-highClaudehaiku-low57/6010.0$0.001110.6×117.7×
grok47-highCodexluna56-high56/6011.4$0.00309.3×44.3×
grok47-lowClaudehaiku-low57/6010.0$0.00114.0×72.9×
grok47-lowCodexluna56-high56/6011.4$0.00303.5×27.4×
grok47fast-lowClaudehaiku-low57/6010.0$0.00113.4×160.6×
grok47fast-lowCodexluna56-low48/609.2$0.00223.7×82.6×
Every lane on the same problems
configfamilypasses (function tests)median s$ per pass
astra-medium ⚡Codex60/609.9$0.15
sonnet-mediumClaude60/6010.1$0.012
terra61-lowCodex60/6010.3$0.010
sol56-highCodex60/6014.5$0.042
haiku-highClaude60/6014.7$0.0028
astra-mediumCodex60/6020.9$0.075
sol61-highCodex60/6027.4$0.019
haiku-mediumClaude59/6013.0$0.0015
terra61-highCodex58/6011.9$0.0079
sol61-mediumCodex58/6022.6$0.015
haiku-lowClaude57/6010.0$0.0011
grok47-highGrok57/60105.7$0.13
luna56-highCodex56/6011.4$0.0030
grok47-lowGrok53/6039.4$0.082
grok47fast-lowGrok51/6034.0$0.18
luna56-lowCodex48/609.2$0.0022
luna-mediumCodex47/608.2$0.00089
luna-lowCodex46/607.2$0.00090
luna-low-bareCodex44/606.8$0.00080

Is Grok better at anything?

Not on these problems. Every Grok config is beaten on pass rate, speed and cost at once: grok47-high by 10 lanes (for example haiku-high, 60/60, 14.7 s, $0.0028 per pass). grok47-low by 11 lanes (for example haiku-high, 60/60, 14.7 s, $0.0028 per pass). grok47fast-low by 12 lanes (for example haiku-high, 60/60, 14.7 s, $0.0028 per pass). Grok passes more than luna-low, luna-low-bare, luna-medium, luna56-high and luna56-low. Every one of those lanes is faster and cheaper per pass. Grok costs less per pass than only astra-medium ⚡. Each of those passes more than the Grok config that undercuts it. Grok is faster than no lane.

First run (2 repeats, p01–p06)

In the first run (p01–p06 only), Grok was accurate but slow and mid-priced. grok47-high passed 18 of 18 but took 41 s per call at the median. Every existing lane at 100% finished in 6.9 to 16.9 s.

In this first run, grok47-low, grok47-medium and grok47fast-low each missed one call at L3 (3/4), so the pre-registered stop rule fired for all three; the full run above supersedes it.

In this first run, cost per pass was $0.054 to $0.111. Claude haiku and the Codex luna lanes are under $0.003. Only the Codex astra lanes cost as much.

Key numbers

Ranges across every lane

grok47-low, grok47-medium and grok47fast-low (cleared through L2)

  • Against Claude haiku-medium, Grok takes 1.8–2.5× as long and costs 50.1–103.4× as much per pass. grok47-medium (p01–p06 only) is left out of this range.
  • Against Codex luna-high, Grok takes 2.2–2.9× as long and costs 58.7–121.1× as much per pass. grok47-medium (p01–p06 only) is left out of this range.
  • Across all Claude 100% lanes, Grok takes 1.6–4.0× as long and costs 5.4–169.3× as much per pass.
  • Across all Codex 100% lanes, Grok takes 1.1–4.7× as long and costs 0.4–9.2× as much per pass.

grok47-high (cleared through L3)

  • Against Claude haiku-high, Grok takes 3.5× as long and costs 33.1× as much per pass.
  • Against Codex sol61-high, Grok takes 2.4× as long and costs 4.7× as much per pass.
  • Across all Claude 100% lanes, Grok takes 3.5–5.0× as long and costs 7.2–109.3× as much per pass.
  • Across all Codex 100% lanes, Grok takes 2.4–6.0× as long and costs 0.6–5.9× as much per pass.

grok47-high on repo tasks

  • Across all Claude 100% lanes, Grok takes 7.6–15.9× as long and costs 10.0–105.5× as much per pass.
  • Across all Codex 100% lanes, Grok takes 3.7–6.7× as long and costs 1.2–6.7× as much per pass.

grok47-low on repo tasks

  • Across all Claude 100% lanes, Grok takes 1.7–3.6× as long and costs 3.5–37.0× as much per pass.
  • Across all Codex 100% lanes, Grok takes 0.8–1.5× as long and costs 0.4–2.4× as much per pass.

First run: where it got to

A lane is an existing config: one model at one effort. Rungs L1–L6 get harder step by step. Cleared through L2 means every call passed on L1 and L2.

configcleared throughL1L2L3passes (function tests)median s$ per passcoveragetotal $
grok47-lowL210/1010/103/423/2426.5$0.0546 problems$1.24
grok47-mediumL210/107/73/420/2132.6$0.0666 problems$1.33
grok47-highL3 (not run further)10/104/44/418/1841.0$0.0726 problems$1.29
grok47fast-lowL210/1010/103/423/2419.4$0.116 problems$2.56

Totals differ (18, 21, 24) because the run was shortened from 5 to 2 repeats partway through L2 and extra repeats already run were kept; the earlier full-coverage lanes have 30 = 6 problems × 5 repeats; read the rung reached, not the total. The function misses were on p06_calc.

First run: closest lanes

Grok configfamilyclosest laneGrok time / laneGrok cost / lane
grok47-lowClaudehaiku-medium2.5×50.1×
grok47-lowCodexluna-high2.9×58.7×
grok47-mediumClaudehaiku-medium3.1×61.8×
grok47-mediumCodexluna-high3.6×72.3×
grok47-highClaudehaiku-high3.5×33.1×
grok47-highCodexsol61-high2.4×4.7×
grok47fast-lowClaudehaiku-medium1.8×103.4×
grok47fast-lowCodexluna-high2.2×121.1×

Each family shows the lane with the closest pass rate. Ties use the closest median time, then cost per pass.

All comparable lanes

A lane is comparable when it clears the same rungs and first misses at the same rung on the 12-problem main ladder. If a Grok config never missed through L3, every lane that clears through L3 counts, with its later results shown.

Same-problem comparisons use p01–p06 (6 of 12 problems), main + exploratory phases only. Warmup, calibration, fastmode, escalation and hard phases are excluded. In this first run Grok was run only through L3, so cleared L3 is a floor here; the full-ladder runs above go to L6 (only grok47-medium stays on p01–p06). CLI-reported cost; list price not used for Grok. Codex dollars use tokens × list price with the fast-mode multiplier.

Grok configfamilycomparable lanecleared throughfirst misssame-problem passes (function tests)median s$ per passGrok time / laneGrok cost / lane
grok47-lowClaudehaiku-mediumL2L329/3010.6$0.00112.5×50.1×
grok47-lowCodexluna-highL2L324/259.0$0.000922.9×58.7×
grok47-mediumClaudehaiku-mediumL2L329/3010.6$0.00113.1×61.8×
grok47-mediumCodexluna-highL2L324/259.0$0.000923.6×72.3×
grok47-highCodexastra-mediumL6none30/3012.7$0.0643.2×1.1×
grok47-highCodexastra-medium ⚡L6none30/306.9$0.136.0×0.6×
grok47-highClaudehaiku-highL6none30/3011.8$0.00223.5×33.1×
grok47-highClaudehaiku-lowL4L530/308.2$0.000665.0×109.3×
grok47-highCodexsol56-highL6none30/3010.0$0.0324.1×2.3×
grok47-highCodexsol61-highL6none30/3016.9$0.0152.4×4.7×
grok47-highCodexsol61-high ⚡L6none20/209.8$0.0264.2×2.8×
grok47-highCodexsol61-mediumL5L630/3015.4$0.0122.7×5.9×
grok47-highClaudesonnet-mediumL6none30/309.5$0.0104.3×7.2×
grok47fast-lowClaudehaiku-mediumL2L329/3010.6$0.00111.8×103.4×
grok47fast-lowCodexluna-highL2L324/259.0$0.000922.2×121.1×

First run: was Grok better at anything?

Repository tasks

Grok is a usable fallback for these small repo tasks when Codex is out. Claude is faster and cheaper. grok47-low 8/8 complete (8/8 hidden) at 98.9 s median. Today’s Claude fallback lanes (haiku-high 12/12 complete (12/12 hidden), haiku-low 12/12 complete (12/12 hidden), sonnet-medium 12/12 complete (12/12 hidden)) took 27.7–58.4 s median.

Counts use the repo-task marker defined under Method (Repo tasks): complete first, our hidden suite alone in brackets. Red-suite runs (task_complete false) that the audit session has not labelled show 'under audit' beside their cells. Counts are raw: no run is dropped or reclassified until the audit labels it in results/annotations.json.

Grok configfamilyclosest laneGrok time / laneGrok $ per pass / lane
grok47-highClaudehaiku-high7.57×44.34×
grok47-highCodexsol61-high3.75×5.50×
grok47-lowClaudehaiku-high1.69×15.55×
grok47-lowCodexsol61-medium1.17×2.36×

Each family shows the lane with the closest pass rate. Ties use the closest median time, then cost per pass.

All comparable lanes
Grok configexisting laneGrok time / laneGrok $ per pass / lane
grok47-highastra-medium6.74×1.20×
grok47-highhaiku-high7.57×44.34×
grok47-highhaiku-low15.63×105.53×
grok47-highluna-low18.33×95.85×
grok47-highsol61-high3.75×5.50×
grok47-highsol61-medium5.23×6.74×
grok47-highsonnet-medium15.94×9.97×
grok47-lowastra-medium1.51×0.42×
grok47-lowhaiku-high1.69×15.55×
grok47-lowhaiku-low3.50×37.01×
grok47-lowluna-low4.10×33.62×
grok47-lowsol61-high0.84×1.93×
grok47-lowsol61-medium1.17×2.36×
grok47-lowsonnet-medium3.57×3.50×
Run conditions and measurements

4 tasks (t1_discount, t2_cache_bugs, t3_config_refs, t4_retry_queue); Grok: 2 repeats per task and config, 4 parallel lanes, tools on, no web or subagents, 1,500 s timeout; all 16 runs retained with no performance stop rule. Existing lanes: 3 repeats per task; clean-home Codex replacements are used where available. Hidden tests run after the agent exits.

configtask complete (hidden alone in brackets)median wall s$ per complete taskmedian turns
grok47-high8/8 complete (8/8 hidden)442.1$0.549
grok47-low8/8 complete (8/8 hidden)98.9$0.195
astra-medium12/12 complete (12/12 hidden)65.6$0.451
haiku-high12/12 complete (12/12 hidden)58.4$0.01210
haiku-low12/12 complete (12/12 hidden)28.3$0.00515
luna-low7/12 complete (12/12 hidden) (under audit)24.1$0.00561
sol61-high12/12 complete (12/12 hidden)117.9$0.0971
sol61-medium12/12 complete (12/12 hidden)84.5$0.0791
sonnet-medium12/12 complete (12/12 hidden)27.7$0.0543

Grok total measured spend: $5.78 of the $15 budget. Grok and Claude costs are CLI-reported; Codex costs are token-price proxies. Multiples use median wall time and total cost per passing attempt, respectively. Turns use each CLI’s convention and are not directly comparable across CLIs. This is a small exploratory sample on a shared host, not a general repo-work guarantee. Sources: results/2026-10-22b-agentic.jsonl, results/2026-10-25-isolated-agentic.jsonl, results/2026-10-27-grok-agentic.jsonl.

Devin on the free tier

Devin ran each of the 12 main-ladder problems once on swe-1-6-slow. It passed 6/12 (pass rate 50%), with a median 10.5 s per call. Timeouts: p04 taller_within, p11 best_average. Wrong answers: p06 calc, p07 weighted_distance_sums, p09 k_machine_schedule. Crashes: p12 sheet. It reports no tokens and no cost, so it has no $ per pass and appears on no $ chart, in no Winner pick and on no best-trade-offs line.

rungpassed (function tests)what happened
L12/2all passed
L21/2p04 taller_within timeout
L31/2p06 calc wrong
L41/2p07 weighted_distance_sums wrong
L51/2p09 k_machine_schedule wrong
L60/2p11 best_average timeout, p12 sheet crash

Verdict: not a delegate on the free tier. The Results table and the failure grid list it as Devin (free tier, 1 repeat).

Everything we tried
  • Every config with rows in results/, grouped by kind.
  • Each row pools all of a config's runs. Pass, $ and seconds can differ from Results.
  • Codex dollars are list-price estimates. Dash means the full cost is unavailable.
  • Hover over a name for its source file.
  • Pilot repo pipelines: dollars include builder and review; time is builder-only.
exploratory: 4 configs, $22.37 spent
namewhat it waspass$ per passmedian sspendwhere it appears
grok47-lowGrok grok-4.7, low effort; grok CLI, measured total_cost_usd; exploratory, added 2026-10-26 at operator request; function track p01–p12 (L1–L6), 2026-10-28 full spectrum: 5 repeats per problem (L2–L3 had been shortened to 2 repeats on 2026-10-26)53/60$0.08239.4$4.33charts and tables
grok47-mediumGrok grok-4.7, medium effort; grok CLI, measured total_cost_usd; exploratory, added 2026-10-26 at operator request; function track p01–p06 (L1–L3) only, not extended (PLAN.md deviation 23); 6 of 12 problems20/21$0.06632.6$1.33charts and tables
grok47-highGrok grok-4.7, high effort; grok CLI, measured total_cost_usd; exploratory, added 2026-10-26 at operator request; function track p01–p12 (L1–L6), 2026-10-28 full spectrum: 5 repeats per problem (L2–L3 had been shortened to 2 repeats on 2026-10-26)57/60$0.13105.7$7.52charts and tables
grok47fast-lowGrok grok-4.7-build-fast, low effort; grok CLI, measured total_cost_usd; exploratory, added 2026-10-26 at operator request; function track p01–p12 (L1–L6), 2026-10-28 full spectrum: 5 repeats per problem (L2–L3 had been shortened to 2 repeats on 2026-10-26)51/60$0.1834.0$9.19charts and tables

How it was run

Every config (model + effort) got the same new problems and hidden tests. Tools were off: no code runs, file reads or search. Logs confirm it for 938 of 938 Codex calls. Terra (added later) is the exception: 4 of 144 calls logged one item that was not a message or reasoning, so a tool may have run. 4 of those 4 passed. The raw item type was not kept.

Problems by rung (Easy/Medium/Hard)
How to read this data: sets, tests, prices, intervals
  • Planted wrong answers must fail the hidden tests. Sample tests = the worked examples the model sees.
  • Cost totals leave out the pilot, runner (harness) bias, trim and retest set pipeline runs.
  • Sets:
    • main ladder has 12 problems. Each gets 5 tries. Total: 60 calls per config that ran it in full.
    • L7 set has 3 problems. Each gets 5 tries. Total: 15 calls.
    • Retest set covers the 7 main-ladder problems. They are the ones that luna-low, luna-medium or luna-low-bare missed. They were chosen after the main run. Each config made 35 calls.
    • Repo tasks: 4 edits. Each gets 3 tries. Total: 12 calls.
  • Hidden tests: fixed cases, random cases checked against a reference, and large cases for speed.
  • Claude $: what the CLI reports.
  • The 95% range uses 10,000 bootstrap resamples. It shows how much a rerun's pass rate can vary.
  • Run by Wren, a Claude Opus 5.5 orchestrator.
Models and versions
  • Main bench, Claude Code 2.1.308: claude-haiku-5-5, claude-sonnet-5-5.
  • Main bench, Codex CLI 0.163.0: gpt-5.6-luna, gpt-5.6-sol, gpt-6-astra, gpt-6-luna, gpt-6.1-sol. Terra rows, Codex CLI 0.164.0: gpt-5.6-terra, gpt-6.1-terra.
  • Whose bench? also used Codex CLI 0.164.0 and Claude Code 2.1.293.
Notation
⚡
Fast mode: 2× list price at the same model and effort.
-bare
Codex's system prompt and tool text are trimmed.
H
Haiku at low effort (haiku-low).
→H fail
Haiku fixes answers only when a sample test fails.
→H all
Haiku checks and fixes every answer.
→retry
The same model tries again if a sample test fails.
plan→
Haiku writes a plan before the named model answers.
†
An exploratory config added after the main run.
✓ pick
A Winner pick.
~
Codex cost estimated from tokens and list prices.
–
No Claude step, unavailable cost, or an unrun failure-grid cell.
$0
The Haiku step never ran, or subscription quota covers the Codex call.
≥N%
The lower 95% bound when every attempt passed.
slow-call time
The time within which 90% of calls finished.

Where they fail

p12 sheet (L6) has misses in 9 of 18 full-ladder Claude and Codex configs.

How to read this data
  • Cells = passed/attempted. Green: all passed. Amber: more than half. Red: half or fewer.
  • Dash: not run. Scroll sideways for more configs.
problem
haiku-low
haiku-medium
haiku-high
sonnet-medium
sol61-medium
luna-high
luna-medium
luna-low
luna-low-bare
astra-medium
astra-medium ⚡
sol61-high
sol61-high ⚡
sol56-high
luna56-high
luna56-low
terra61-high
terra61-low
grok47-low
grok47-medium
grok47-high
grok47fast-low
devin16slow-default
p01 overlap_minutes (L1)M
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
1/1
p02 squash (L1)E
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
1/1
p03 ledger (L2)M
5/5
5/5
5/5
5/5
5/5
5/5
4/5
5/5
3/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
4/4
5/5
5/5
1/1
p04 taller_within (L2)M
5/5
5/5
5/5
5/5
5/5
5/5
1/5
1/5
1/5
5/5
5/5
5/5
5/5
5/5
4/5
4/5
3/5
5/5
5/5
3/3
5/5
5/5
0/1
p05 pass_route (L3)M
5/5
4/5
5/5
5/5
5/5
4/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
2/2
5/5
5/5
1/1
p06 calc (L3)H
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
4/5
1/5
5/5
5/5
2/5
1/2
5/5
1/5
0/1
p07 weighted_distance_sums (L4)H
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
3/5
5/5
5/5
5/5
0/0
4/5
4/5
0/1
p08 recur (L4)M
5/5
5/5
5/5
5/5
5/5
5/5
5/5
4/5
4/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
0/0
5/5
5/5
1/1
p09 k_machine_schedule (L5)H
3/5
5/5
5/5
5/5
5/5
4/5
5/5
2/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
0/0
5/5
5/5
0/1
p10 avoid_count (L5)H
5/5
5/5
5/5
5/5
5/5
4/5
5/5
5/5
4/5
5/5
5/5
5/5
5/5
5/5
5/5
4/5
5/5
5/5
5/5
0/0
5/5
5/5
1/1
p11 best_average (L6)H
5/5
5/5
5/5
5/5
5/5
5/5
2/5
4/5
2/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
5/5
0/0
5/5
5/5
0/1
p12 sheet (L6)H
4/5
5/5
5/5
5/5
3/5
3/5
0/5
0/5
0/5
5/5
5/5
5/5
5/5
5/5
3/5
1/5
5/5
5/5
1/5
0/0
3/5
1/5
0/1
L7 set
p13 xor_ring (L7)H
5/5
5/5
5/5
5/5
5/5
5/5
–
–
–
5/5
5/5
5/5
5/5
5/5
4/5
3/5
–
–
–
–
–
–
–
p14 bounce_board (L7)H
5/5
4/5
5/5
5/5
5/5
5/5
–
–
–
5/5
5/5
5/5
5/5
3/5
2/5
2/5
–
–
–
–
–
–
–
p15 paint_erase (L7)H
2/5
4/5
5/5
5/5
5/5
5/5
–
–
–
5/5
5/5
5/5
5/5
5/5
3/5
3/5
–
–
–
–
–
–
–

grok47-medium covers p01–p06 only, so its cells for the other problems are dashes. A dash means no attempt, not a failure.

Baseline input tokens per call

Trimming luna-low's Codex system prompt and tool features cuts mean input by 58%.

Mean input tokens per callhaiku-low4,498sonnet-medium3,719luna-low, Codex'snormal prompt14,688sol61-medium15,380astra-medium ⚡15,316sol61-high ⚡15,380Low contextluna-low, trimmedprompt6,144Solid = cached input. Faded = uncached input.
Mean input tokens per call
haiku-low4,498
sonnet-medium3,719
luna-low, Codex's normal prompt14,688
sol61-medium15,380
astra-medium ⚡15,316
sol61-high ⚡15,380
Low context
luna-low, trimmed prompt6,144

Solid = cached input. Faded = uncached input.

How to read this data
  • Baseline input tokens = text Codex's runner adds before the task. This includes the system prompt and tool descriptions.
  • Bars show mean input per call, including the task.
  • See Notation.

Pipelines: plan, check, fix

A pipeline chains steps. Usually a single model writes, then Haiku checks. The best, luna-high-bare →H all, passed 35/35. It costs $0.0035 per pass. haiku-medium alone also passed every try. That pipeline cost 1.8× as much.

Pass rate, $ per pass, median seconds

Bar length = passes out of 35. Text by each bar = passes · $ per pass · median seconds.

Retest set

HaikuSonnetCodexolder Codexpipeline⚡ fast mode

Single models

luna-low21/35 · $0.0013 · 9s
haiku-low32/35 · $0.0016 · 13s
haiku-medium35/35 · $0.0019 · 15s
haiku-high35/35 · $0.0035 · 17s
sonnet-medium35/35 · $0.015 · 11s
sol61-medium33/35 · $0.018 · 26s
sol61-high35/35 · $0.022 · 33s
sol61-high ⚡35/35 · $0.043 · 19s
astra-medium35/35 · $0.086 · 26s
astra-medium ⚡35/35 · $0.17 · 11s
sol56-high35/35 · $0.051 · 19s
luna56-high32/35 · $0.0036 · 14s
luna56-low29/35 · $0.0025 · 12s

Low context

luna-high-bare31/35 · $0.0010 · 13s

Build, then Haiku fixes it only if a sample test fails (→H fail)

sol61-high→H fail35/35 · $0.022 · 33s
sol61-high ⚡→H fail35/35 · $0.043 · 19s
astra-medium→H fail35/35 · $0.087 · 21s
astra-medium ⚡→H fail35/35 · $0.17 · 11s
luna-low→H fail34/35 · $0.0022 · 8s
luna-high-bare→H fail32/35 · $0.0014 · 11s

Haiku checks every answer (→H all)

luna-low→H all34/35 · $0.0039 · 23s
luna-high-bare→H all35/35 · $0.0035 · 26s

Plan first, then build (plan→)

plan→luna-low30/35 · $0.0034 · 22s
plan→luna-high-bare31/35 · $0.0036 · 27s

Retry once if a sample test fails (→retry)

luna-high-bare→retry32/35 · $0.0011 · 11s
How to read this data

Gates

  • →H fail: Haiku fixes an answer only if a sample test fails. →H all: Haiku checks every answer.
  • sol61-high and astra-medium never failed a sample test, so Haiku never ran.
  • luna-low failed sample tests more often: 13 repairs, so the gate helped it more.

Scope

  • Pipelines ran only on the retest set.
  • Fast-mode pipelines equal their builders because every example check passed. Haiku made 0 repairs.
  • ⚡ pipeline rows reuse cached ⚡ answers. Other pipeline rows are new calls.
  • Router: per main-ladder problem, the cheapest config that passed tries 1–3. Router evaluation tries: 4–5. The router passed 22/24. That cost ~40% of haiku-high's $ per pass.

See Notation.

Whose bench?

Does a Codex-built bench favour Codex models? Slightly: the gap moved 13 points. haiku-low still led on both, so no pick changes.

Same models, two benches: passes out of 6050%75%100%Claude's benchCodex's bench5760haiku-low (+3)3647luna-low (+11)
6 hard problems, 10 tries each. Scroll sideways on narrow screens.
modelbenchpassed (function tests)$ per passtime per pass (s)
luna-lowClaude's bench36/60~$0.001312.7
luna-lowCodex's bench (Codex CLI)47/60~$0.004034.8
haiku-lowClaude's bench57/60$0.002518.8
haiku-lowCodex's bench (Claude Code)60/60$0.002717.6
How to read this data

Our one-shot runner (Claude's bench): a single answer per try, tools off.

Codex CLI loop: runs code, retries (Codex's bench).

The benches

  • Claude designed and ran this bench; Codex built only its own harness.
  • Codex's bench: each model runs in its vendor's agent CLI, which runs code and retries.
  • luna-low ran in Codex CLI, haiku-low in Claude Code: each vendor's cheapest model.
  • sol61-high was skipped: every try already passed.

What changed

  • luna-low went 36→47. haiku-low went 57→60.
  • Running code cut luna-low's wrong outputs from 14 to 6. Crashes fell from 10 to 7.
  • luna-low cost 3.1× as much per pass. Time per pass was 2.7× as long. haiku-low cost 1.1× as much per pass. Time per pass was 0.9× as long. Overall, Codex's bench cost 1.6× as much per pass.
  • The gap moved 13 points, below our 15-point bias threshold. Confidence level: 95%. The range is 3 to 23 points.
  • Luna-low variants B1 and B2 are listed under Everything we tried. luna-low-noshell-B1 removes shell context and asks for edge cases first. luna-low-noshell-B2 also asks for a detailed reasoning summary. On the retest set, B1 passed 25/35. Plain luna-low passed 21; B2 passed 19.

Time per pass = summed call seconds divided by passes.

How Codex built its bench
  • gpt-6.1-sol high designed and wrote it.
  • Its dry runs missed two sandbox bugs. A live call found them; Codex fixed both.
  • A final "plan and reorient" nudge changed no code.
  • It first replayed 12 of our haiku-low and sol61-medium results. All passed on both.
  • We lifted its repeat cap, a two-line change, then ran 240 calls.
  • Repeat-cap change source: c6528128a7a66fdc0ecd4031a9228ce8b53f5a98 (bench/codex_harness.py).
  • It finished with 0 runner errors and no timeouts, in about 74 minutes.

CONCLUSION

Four configs passed every try in every set. They were haiku-high, sonnet-medium, sol61-high and astra-medium. Repo tasks counted as task complete: hidden and visible tests both pass. haiku-high is the cheapest, at $0.0028 per pass.
  1. With Codex quota left, send each task to sol61-high ⚡.
  2. Then run the sample tests. If one fails, haiku-low fixes it. Tested with plain sol61-high: 35/35 on the retest set, one run; sample tests are a weak gate. Haiku never ran.
  3. With Codex quota gone, use haiku-high. It is the cheapest config with no misses.

Limitations

A routing signal from a small, self-written set, not a general ranking. Read the intervals first.

What could mislead
  • Scope: 12 main problems, written for this bench.
  • Most have a LeetCode analogue, and LeetCode code is widely public.
  • The problems ship with this repo, so later models can read them.
  • The 95% range resamples whole problems, since tries on the same problem are related.
  • L7 has 3 problems. Perfect score: 15/15. That only shows a pass rate of at least 37%.
  • Repo tasks: luna-low: 7/12 complete (12/12 hidden) in the clean-home rerun and every other config completes every run. With 4 tasks × 3 repeats = 12 runs per config they cannot rule out skill differences.
  • Paired gaps of 3 points or less showed no separation; 18-point gaps did.
  • PLAN.md was committed before the main run; a same-day pilot came first.
  • 15 configs were added after seeing the main-run results (†). These include the haiku-high and sol61-high picks:
    • astra-medium
    • astra-medium ⚡
    • devin16slow-default
    • haiku-high
    • luna-high
    • luna-low-bare
    • luna56-high
    • luna56-low
    • sol56-high
    • sol61-high
    • sol61-high ⚡
    • terra56-high
    • terra56-low
    • terra61-high
    • terra61-low
  • A Codex call's estimated $ drops up to 5.8× when the prompt cache hits.
  • Latency is CLI wall clock.
  • We ran up to 4 calls at once on one host.
  • One run in time; hosted models change.
  • Codex needed our help to build its bench: see Whose bench?
Reproduce
  • Cite as: DispatchBench (2026), github.com/chimera-defi/dispatchbench.
  • Code, problems and raw results: dispatchbench on GitHub, MIT licence.
  • Numbers come from results/dataset.json, which is built from the results/*.jsonl run files.

More charts

luna-low and luna-medium break at L6. luna-low-bare breaks at L2; see the grid.

Repo tasks, task complete (hidden in brackets): luna-low 7/12 complete (12/12 hidden) in the clean-home rerun (11/12 complete (12/12 hidden) in the original run); every other config completed every run. Every task prompt told agents to add tests and that all tests must pass. All 6 failing tests in the 5 clean-home red runs are tests luna-low itself added, none a shipped test, and 0 runs edited the shipped tests. The audit reads 5 of the 6 red runs (clean-home and original) as wrong tests (the cache tests insert both entries at the same time, so both expire; the config tests expect behaviour the task does not ask for) and 1 as wrong code that the hidden suite missed (t1_discount accepts a boolean percentage; see the stricter-suite regrade below). The classification is still under audit until results/annotations.json carries the labels. Costs ranged from $0.0033 to $0.45 per run; per complete task luna-low costs $0.0056 against haiku-low's $0.0051.

Stricter hidden suite (t1_discount now rejects a boolean percentage): 16 stored t1 patches regraded with no model calls (12 in the table; the other 4 are in results/2026-10-28-t1-hidden-v2-regrade.jsonl and none flips); 1 run flips from hidden pass to fail: luna-low repeat 2 (clean-home rerun), which leaves luna-low at 11/12 hidden in the clean-home rerun. The 21 t1 runs of the 10-22 main run stored no patch and cannot be regraded. Headline counts stay on the suite each run was graded with. The task text says "pct: int", which does not say whether a boolean counts; the reference rejects it, so the gap was in our hidden suite.

configrun sett1 runs regradedhidden as gradedhidden under stricter suitetask complete under stricter suite
astra-mediumclean-home rerun33/33/33/3
luna-lowclean-home rerun33/32/32/3
sol61-highclean-home rerun33/33/33/3
sol61-mediumclean-home rerun33/33/33/3

Correction, 2026-10-28. A reader pointed out that "passed every hidden test" hid luna-low's visible-test misses. The headline is now task complete, with the hidden-suite count beside it.

Explorer and more charts

Explorer plots any pair of measures.

The interactive explorer is in Cost vs accuracy.

Pass rate by difficulty rung (main ladder p01-p12)Passes per rung. Tint = a miss; red = 40% or less, the breaking point. L7 excluded.L1p01 overlap_minutes (L1)p02 squash (L1)L2p03 ledger (L2)p04 taller_within (L2)L3p05 pass_route (L3)p06 calc (L3)L4p07 weighted_distance_sums (L4)p08 recur (L4)L5p09 k_machine_schedule (L5)p10 avoid_count (L5)L6p11 best_average (L6)p12 sheet (L6)haiku-lowhaiku-low on L1: 10 of 10 passed10/10haiku-low on L2: 10 of 10 passed10/10haiku-low on L3: 10 of 10 passed10/10haiku-low on L4: 10 of 10 passed10/10haiku-low on L5: 8 of 10 passed8/10haiku-low on L6: 9 of 10 passed9/10haiku-mediumhaiku-medium on L1: 10 of 10 passed10/10haiku-medium on L2: 10 of 10 passed10/10haiku-medium on L3: 9 of 10 passed9/10haiku-medium on L4: 10 of 10 passed10/10haiku-medium on L5: 10 of 10 passed10/10haiku-medium on L6: 10 of 10 passed10/10sonnet-mediumsonnet-medium on L1: 10 of 10 passed10/10sonnet-medium on L2: 10 of 10 passed10/10sonnet-medium on L3: 10 of 10 passed10/10sonnet-medium on L4: 10 of 10 passed10/10sonnet-medium on L5: 10 of 10 passed10/10sonnet-medium on L6: 10 of 10 passed10/10sol61-mediumsol61-medium on L1: 10 of 10 passed10/10sol61-medium on L2: 10 of 10 passed10/10sol61-medium on L3: 10 of 10 passed10/10sol61-medium on L4: 10 of 10 passed10/10sol61-medium on L5: 10 of 10 passed10/10sol61-medium on L6: 8 of 10 passed8/10luna-mediumluna-medium on L1: 10 of 10 passed10/10luna-medium on L2: 5 of 10 passed5/10luna-medium on L3: 10 of 10 passed10/10luna-medium on L4: 10 of 10 passed10/10luna-medium on L5: 10 of 10 passed10/10luna-medium on L6: 2 of 10 passed2/10luna-lowluna-low on L1: 10 of 10 passed10/10luna-low on L2: 6 of 10 passed6/10luna-low on L3: 10 of 10 passed10/10luna-low on L4: 9 of 10 passed9/10luna-low on L5: 7 of 10 passed7/10luna-low on L6: 4 of 10 passed4/10astra-mediumastra-medium on L1: 10 of 10 passed10/10astra-medium on L2: 10 of 10 passed10/10astra-medium on L3: 10 of 10 passed10/10astra-medium on L4: 10 of 10 passed10/10astra-medium on L5: 10 of 10 passed10/10astra-medium on L6: 10 of 10 passed10/10astra-medium ⚡astra-medium ⚡ on L1: 10 of 10 passed10/10astra-medium ⚡ on L2: 10 of 10 passed10/10astra-medium ⚡ on L3: 10 of 10 passed10/10astra-medium ⚡ on L4: 10 of 10 passed10/10astra-medium ⚡ on L5: 10 of 10 passed10/10astra-medium ⚡ on L6: 10 of 10 passed10/10sol61-highsol61-high on L1: 10 of 10 passed10/10sol61-high on L2: 10 of 10 passed10/10sol61-high on L3: 10 of 10 passed10/10sol61-high on L4: 10 of 10 passed10/10sol61-high on L5: 10 of 10 passed10/10sol61-high on L6: 10 of 10 passed10/10sol61-high ⚡sol61-high ⚡ on L1: 10 of 10 passed10/10sol61-high ⚡ on L2: 10 of 10 passed10/10sol61-high ⚡ on L3: 10 of 10 passed10/10sol61-high ⚡ on L4: 10 of 10 passed10/10sol61-high ⚡ on L5: 10 of 10 passed10/10sol61-high ⚡ on L6: 10 of 10 passed10/10devin16slow-defaultdevin16slow-default on L1: 2 of 2 passed2/2devin16slow-default on L2: 1 of 2 passed1/2devin16slow-default on L3: 1 of 2 passed1/2devin16slow-default on L4: 1 of 2 passed1/2devin16slow-default on L5: 1 of 2 passed1/2devin16slow-default on L6: 0 of 2 passed0/2Rung L1 is easiest.
Pass rate by difficulty rung. Scroll sideways on narrow screens.
Repo tasks (4 tasks x 3 runs, with tools): task complete vs $ per run0%25%50%75%100%$0.005$0.01$0.02$0.05$0.1$0.2$0.5$ per runshare of runs passingluna-low 7/12 complete (12/12 hidden) *haiku-low 12/12 complete (12/12 hidden)haiku-high 12/12 complete (12/12 hidden)sonnet-medium 12/12 complete (12/12 hidden)sol61-medium 12/12 complete (12/12 hidden) *sol61-high 12/12 complete (12/12 hidden) *astra-medium 12/12 complete (12/12 hidden) *Filled mark: task complete (hidden and the run's own visible suite both green). Ring: hidden suite only.Bars: 95% interval for task complete; a perfect score shows its lower bound. * Estimated from tokens.
Repo tasks: task complete vs $ per run (filled: task complete; ring: hidden suite only). No ⚡ repo-task data. Scroll sideways on narrow screens.

See Notation.

Notes: code quality, fast mode, appendix

Sonnet's code read worst in a blind review.

Code quality
configpassing solutionsmedian LOCmedian max complexitylint warnings per solutiontime vs refworse growthmem vs ref
haiku-low5738110.111.1331.00
haiku-medium5946100.151.1021.00
sonnet-medium6046140.251.0540.99
luna-low463790.131.1241.00
luna-medium4747140.091.1061.00
sol61-medium5838140.001.0801.00
astra-medium †6046160.000.7001.00
haiku-high †6043140.020.9531.00
luna-high †553990.001.1321.00
luna-low-bare †4437110.111.1361.00
luna56-high †5644140.000.8501.00
luna56-low †4838140.020.8011.00
sol56-high †6046140.030.8311.00
sol61-high †6051160.030.7201.00
  • sol61-high ⚡ and astra-medium ⚡: main-ladder solutions not scored.
  • sol61-high ⚡'s 35-attempt retest run is scored below; astra-medium ⚡ has no retest scores.
Codex fast mode and xhigh

On the retest set, fast mode kept every pass and was 37% faster. Median times: 18.9 s vs 30.1 s. Price: 2× list, not a measured bill. xhigh effort (above high): same passes, 1.5× the cost, slower, no better code.

configpassed (function tests)median smedian output tokens$ per pass (proxy)median LOCmedian max complexitylint per solutiontime vs ref
sol61-high, default tier (separate control run, repeats 6-10)35/3530.11,092$0.021263220.000.73
sol61-high ⚡35/3518.91,063$0.043562220.090.71
sol61-xhigh, default tier35/3544.31,662$0.032664230.000.72

The blind read covered 20 solutions. A code-only reviewer would refuse to merge 3, all sonnet-medium. It scored 4.0/10. Other configs scored 6.75–7.5 with none blocked. One reviewer and one solution per cell: a sign of bad code, not a ranking.

Reader: claude-fable-5-1, one blind pass, 2026-10-23. Method: One passing solution per config per problem, shuffled and labelled A–E (seed 7). Score: 1–10 readability and maintainability. 4 solutions per config. Would block = would not merge as is.

configsolutions readmean score (1 to 10)would block
astra-medium47.500
sol61-high47.250
haiku-medium47.000
sol61-xhigh46.750
sonnet-medium44.003
How to read this data

Code quality columns

  • Complexity = cyclomatic complexity (branch count) of the most complex function, via radon.
  • Lint = ruff style warnings per solution.
  • Worse growth = time-growth exponent more than 0.3 above the reference's.
  • Time vs ref = run time divided by the reference solution's.
  • Mem vs ref = memory divided by the reference solution's.
  • Below 1.00 is faster or leaner.

Code quality scope

  • Scored: main-ladder passing solutions, 770 rows.
  • All 1166 solutions are in results/solutions.
  • On p08 recur (L4), 11 solutions run slower than the reference. Slower means at least 10× longer. The smallest slowdown is 29×. They come from 7 configs. The worst is a sol56-high solution at 2453×.

Fast-mode control

The default-tier control is a separate 35-try run. Its 30.1 s differs from the Results row.

Appendix

Headline numbers: see How it was run.

Codex CLI in the main benchmark

  • Codex also answered through its own CLI in the main benchmark.
  • We ignored personal settings and disabled tools.
  • The luna-*-bare rows test how much Codex's system prompt and tool text matter.

Repo-task rows were rerun with a clean Codex home.

A clean rerun checked 995 other calls.

It passed 889 versus 890 originally, so those rows were kept.

Failures and later runs

haiku-low misses:

settriestoo slowcrasheswrong outputs
main ladder60210
L7 set15300

Too slow = exceeding the grader's time limit for that case.

  • L7: haiku-low has misses; sonnet-medium passed every try.
    • Each problem had 5 tries.
    • Problems:
      • p13 xor_ring (L7)
      • p14 bounce_board (L7)
      • p15 paint_erase (L7)
    • haiku-low passed 12/15. It cost $0.0023 per pass.
    • sonnet-medium passed 15/15. It cost $0.018 per pass.
  • Escalation: luna-high fixes most of luna-medium's misses.
    • We reran weak problems at higher effort.
    • Problems:
      • p04 taller_within (L2)
      • p11 best_average (L6)
      • p12 sheet (L6)
    • luna-high passed 13/15.
    • luna-medium had passed 3/15.
  • Retry vs Haiku: luna-high-bare retries matched Haiku fixes.
    • Haiku fixed failed sample tests; the pipeline passed 32/35.
    • It cost $0.0014 per pass.
    • Same-model retries passed 32/35.
    • They cost $0.0011 per pass.
    • These rows use the retest set, with 35 attempts each.
  • Sample tests miss some bad answers.
    • A fresh luna-high-bare run had 5 bad answers.
    • Checks caught 2. Haiku fixed both.
    • Checks missed 3.
    • The run without checks had 4 bad answers.
  • Planning: Haiku plans cost more than Haiku checks.
    • luna-low passed 21/35 without a plan.
    • It passed 30/35 with a Haiku plan.
    • luna-high-bare passed 31/35 either way.
    • Both Haiku-plan pipelines cost more than Haiku checking after.
  • Pilot: every config passed, so the pilot ranked nothing.
    • The pilot used 6 well-known LeetCode problems.
  • Fast-mode pilot: sol61-low got faster; luna-low did not.
    • The pilot used 3 problems across 3 rounds.
    • It used 2× list price.
    • sol61-low fell from 7.4 s to 5.2 s.
    • luna-low stayed at 4.5 s.
    • This pilot supplies the only fast-mode data at low effort.
  • Original repair run: we lost its prompt but reran committed code.
    • The original luna-low → Haiku-fixes-all run passed 35/35.
    • The rerun from committed code passed 34/35.
    • Both use the retest set, with 35 attempts per row.
Everything we tried
  • Every config with rows in results/, grouped by kind.
  • Each row pools all of a config's runs. Pass, $ and seconds can differ from Results.
  • Codex dollars are list-price estimates. Dash means the full cost is unavailable.
  • Hover over a name for its source file.
  • Pilot repo pipelines: dollars include builder and review; time is builder-only.
main ladder: 6 configs, ~$2.72 spent
namewhat it waspass$ per passmedian sspendwhere it appears
haiku-lowClaude Haiku, low effort, tools off79/85$0.001311.3$0.10charts and tables
haiku-mediumClaude Haiku, medium effort72/75$0.001814.7$0.13charts and tables
sonnet-mediumClaude Sonnet, medium effort85/85$0.01411.4$1.15charts and tables
luna-lowCodex gpt-6-luna, low effort, stock Codex harness46/60~$0.000907.2~$0.041charts and tables
luna-mediumCodex gpt-6-luna, medium effort47/60~$0.000898.2~$0.042charts and tables
sol61-mediumCodex gpt-6.1-sol, medium effort83/85~$0.01522.6~$1.26charts and tables

Grok: see the Grok section

exploratory: 12 configs, ~$13.51 spent
namewhat it waspass$ per passmedian sspendwhere it appears
haiku-highClaude Haiku, high effort (added after the main run)75/75$0.002917.1$0.22charts and tables
luna-highgpt-6-luna, high effort (added after the main run)70/75~$0.001213.3~$0.081charts and tables
luna56-lowgpt-5.6-luna, low effort56/75~$0.002510.1~$0.14charts and tables
luna56-highgpt-5.6-luna, high effort65/75~$0.003614.1~$0.24charts and tables
sol56-highgpt-5.6-sol, high effort73/75~$0.04718.6~$3.40charts and tables
sol61-highgpt-6.1-sol, high effort (default tier)110/110~$0.02030.5~$2.21charts and tables
astra-mediumgpt-6-astra, medium effort75/75~$0.07722.7~$5.76charts and tables
terra61-lowgpt-6.1-terra, low effort (added 2026-10-28, operator request; main ladder p01–p12, 5 repeats)60/60~$0.01010.3~$0.62charts and tables
terra61-highgpt-6.1-terra, high effort (added 2026-10-28, operator request; main ladder p01–p12, 5 repeats)58/60~$0.007911.9~$0.46charts and tables
terra56-lowgpt-5.6-terra, low effort. Extra data: one repeat on p01–p12 (the operator meant gpt-6.1-terra)9/12~$0.01814.1~$0.16charts and tables
terra56-highgpt-5.6-terra, high effort. Extra data: one repeat on p01–p12 (the operator meant gpt-6.1-terra)12/12~$0.01817.5~$0.22charts and tables
devin16slow-defaultDevin swe-1-6-slow (the only model the free tier allows), default effort; devin CLI, no token or cost data; exploratory, added 2026-10-28 at operator request; function track p01–p12, 1 repeat (PLAN.md deviation 24)6/12–10.5–charts and tables
fast mode and xhigh: 3 configs, ~$15.54 spent
namewhat it waspass$ per passmedian sspendwhere it appears
sol61-high ⚡sol61-high on Codex priority tier (fast mode). Same model and effort, about twice the price.75/75~$0.03718.2~$2.81charts and tables
astra-medium ⚡astra-medium on the Codex priority tier (fast mode)75/75~$0.1510.7~$11.59charts and tables
sol61-xhighgpt-6.1-sol at xhigh effort35/35~$0.03344.3~$1.14charts and tables
retest pipeline: 11 configs, ~$4.65 spent
namewhat it waspass$ per passmedian sspendwhere it appears
luna-low-selftestArm C: luna-low with shell on, told to test its code first29/35~$0.003621.9~$0.11only here
luna-low+haiku-low-repairArm E (original run, prompt not kept): luna-low answers, haiku-low reviews and repairs35/35~$0.003527.4~$0.12only here
plan→luna-lowArm F: haiku-low writes a plan, luna-low builds from it30/35~$0.003422.1~$0.10charts and tables
plan→luna-high-bareArm F: haiku-low plans, luna-high (stripped) builds31/35~$0.003627.4~$0.11charts and tables
luna-high-bare→H failArm G: luna-high builds; haiku-low repairs only if a sample test fails32/35~$0.001410.6~$0.043charts and tables
luna-high-bare→retryArm G: luna-high builds; luna-high retries only if a sample test fails32/35~$0.001110.6~$0.037charts and tables
luna-low→H failArm G: luna-low builds; haiku-low repairs only if a sample test fails34/35~$0.00227.9~$0.073charts and tables
astra-medium→H failArm G: astra-medium builds; haiku-low repairs only if a sample test fails35/35~$0.08721.4~$3.04charts and tables
sol61-high→H failArm G: sol61-high builds; haiku-low repairs only if a sample test fails35/35~$0.02232.7~$0.76charts and tables
luna-high-bare→H allArm G: luna-high builds; haiku-low reviews every answer35/35~$0.003526.1~$0.12charts and tables
luna-low→H allArm G: luna-low builds; haiku-low reviews every answer (arm E rerun from committed code)34/35~$0.003923.1~$0.13charts and tables
repo tasks: 7 configs, ~$8.36 spent
namewhat it wastask complete (hidden in brackets)$ per complete taskmedian sspendwhere it appears
haiku-lowRepo tasks with tools: Claude Haiku, low12/12 complete (12/12 hidden)$0.005128.3$0.061repo-task chart
haiku-highRepo tasks: Claude Haiku, high12/12 complete (12/12 hidden)$0.01258.4$0.14repo-task chart
sonnet-mediumRepo tasks: Claude Sonnet, medium12/12 complete (12/12 hidden)$0.05427.7$0.64repo-task chart
luna-lowRepo tasks: gpt-6-luna, low7/12 complete (12/12 hidden)~$0.005624.1~$0.039repo-task chart
sol61-mediumRepo tasks: gpt-6.1-sol, medium12/12 complete (12/12 hidden)~$0.07984.5~$0.95repo-task chart
sol61-highRepo tasks: gpt-6.1-sol, high12/12 complete (12/12 hidden)~$0.097117.9~$1.17repo-task chart
astra-mediumRepo tasks: gpt-6-astra, medium12/12 complete (12/12 hidden)~$0.4565.6~$5.35repo-task chart
trim: 3 configs, ~$0.098 spent
namewhat it waspass$ per passmedian sspendwhere it appears
luna/baseCodex harness floor probe: luna, stock harness9/9~$0.000474.2~$0.0042only here
terra/baseterra, stock harness9/9~$0.0105.6~$0.091only here
haikuhaiku-low through the same probe, tools off (reference)9/9$0.000285.0$0.0025only here
pilot: 19 configs, ~$5.88 spent
namewhat it waspass$ per passmedian sspendwhere it appears
haiku-lowPilot (well-known problems): Claude Haiku, low19/19$0.000374.9$0.0070only here
haiku-mediumPilot: Claude Haiku, medium19/19$0.000415.3$0.0078only here
sonnet-lowPilot: Claude Sonnet, low10/10$0.00865.7$0.086only here
sonnet-mediumPilot: Claude Sonnet, medium19/19$0.00605.8$0.11only here
haiku-low-agentPilot: Haiku low with tools on10/10$0.00207.0$0.020only here
sonnet-medium-agentPilot: Sonnet medium with tools on9/9$0.0378.6$0.33only here
sol61-low-prio (pilot first run)Pilot: gpt-6.1-sol, low, priority tier10/10~$0.0684.7~$0.68only here
sol61-medium-prioPilot: gpt-6.1-sol, medium, priority tier10/10~$0.0535.4~$0.53only here
astra-lowPilot: gpt-6-astra, low9/9~$0.245.6~$2.14only here
luna-lowPilot: gpt-6-luna, low, priority tier18/18~$0.00214.4~$0.038only here
luna-low-defaPilot: gpt-6-luna low, default tier9/9~$0.000894.5~$0.0080only here
luna-high-prioPilot: gpt-6-luna high, priority tier9/9~$0.00244.8~$0.022only here
terra56-low-prioPilot: gpt-5.6-terra low, priority tier9/9~$0.0494.8~$0.44only here
sol6-low-prioPilot: gpt-6-sol low, priority tier9/9~$0.0254.8~$0.22only here
sol61-low-prioPilot: gpt-6.1-sol low, priority tier9/9~$0.0695.2~$0.62only here
sol61-low-defaPilot: gpt-6.1-sol low, default tier (the fast-mode control)9/9~$0.0357.4~$0.31only here
pipeline APilot repo task: gpt-6.1-sol builds, a reviewer checks2/2~$0.05161.5~$0.10only here
pipeline BPilot repo task: gpt-6-luna builds, a reviewer checks2/2~$0.005420.3~$0.011only here
pipeline CPilot repo task: Claude Sonnet builds, no review2/2$0.09223.1$0.18only here
harness-bias: 5 configs, ~$1.29 spent
namewhat it waspass$ per passmedian sspendwhere it appears
haiku-low / Claude's benchHarness-bias check: haiku-low on hard problems on Claude's one-shot bench57/60$0.002513.6$0.14only here
haiku-low / Codex's bench (Claude Code)Harness-bias check: haiku-low in Claude Code (Codex's bench)126/126$0.002713.6$0.33only here
luna-low / Claude's benchHarness-bias check: luna-low on Claude's one-shot bench36/60~$0.00137.5~$0.047only here
luna-low / Codex's bench (Codex CLI)Harness-bias check: luna-low in Codex CLI (Codex's bench)99/126~$0.004021.1~$0.40only here
sol61-medium / Codex's bench (Codex CLI)Harness-bias check: sol61-medium in Codex CLI (Codex's bench)6/6~$0.06257.9~$0.37only here
Low context (prompt or tool text trimmed): 17 configs, ~$0.96 spent
namewhat it waspass$ per passmedian sspendwhere it appears
sol61-low-prio-leanPilot: gpt-6.1-sol low with --ignore-user-config only9/9~$0.0277.0~$0.24only here
sol61-low-prio-barePilot: gpt-6.1-sol low, stripped harness, priority tier9/9~$0.0315.4~$0.28only here
luna-low-noshell-B1Arm B1: luna-low without shell, nudged to list edge cases and trace the sample tests first25/35~$0.000978.6~$0.024only here
luna-low-noshell-B2Arm B2: B1 plus a detailed reasoning summary19/35~$0.00128.9~$0.022only here
luna-medium-bareArm D: luna-medium, stripped harness21/35~$0.00128.4~$0.025only here
luna-high-bareArm D: luna-high, stripped harness31/35~$0.001013.2~$0.033charts and tables
luna/nofeatluna, tool features stripped9/9~$0.000984.4~$0.0089only here
luna/noshellluna, features, shell and base instructions stripped9/9~$0.000303.8~$0.0027only here
luna/mininstluna, minimal instructions (one call)1/1~$0.000336.5~$0.00033only here
luna/noctxluna, no project context (one call)1/1~$0.000437.0~$0.00043only here
luna/nodocluna, no docs (one call)1/1~$0.000455.9~$0.00045only here
terra/nofeatterra, tool features stripped9/9~$0.0215.2~$0.18only here
terra/noshellterra, features and shell stripped9/9~$0.00806.8~$0.072only here
terra/mininstterra, minimal instructions (one call)1/1~$0.0134.8~$0.013only here
terra/noctxterra, no project context (one call)1/1~$0.00925.1~$0.0092only here
terra/nodocterra, no docs (one call)1/1~$0.00964.9~$0.0096only here
luna-low-bareluna-low with the Codex system prompt and tool features stripped (trim level noshell)44/60~$0.000806.8~$0.035charts and tables

Category totals cover the rows listed here.

Interesting findings

Codex vs Claude

All 4 Claude configs have Codex matches. 3 of 4 cost more at list price; terra61-low costs less than sonnet-medium. 2 of 4 also run slower. terra61-low runs faster than haiku-medium and haiku-high. All 14 Codex configs have Claude matches. Claude is cheaper for 10. Only luna undercuts its Claude match, with more misses.

Config → cheapest matchpassed (function tests)$ per passmedian s
luna-low-bare → haiku-low73% → 95%~$0.00080 → $0.00117 → 10
luna-low → haiku-low77% → 95%~$0.00090 → $0.00117 → 10
luna-medium → haiku-low78% → 95%~$0.00089 → $0.00118 → 10
luna56-low → haiku-low80% → 95%~$0.0022 → $0.00119 → 10
luna-high → haiku-low92% → 95%~$0.0010 → $0.001112 → 10
luna56-high → haiku-low93% → 95%~$0.0030 → $0.001111 → 10
terra61-high → haiku-medium97% → 98%~$0.0079 → $0.001512 → 13
sol61-medium → haiku-medium97% → 98%~$0.015 → $0.001523 → 13
terra61-low → haiku-high100% → 100%~$0.010 → $0.002810 → 15
sol61-high → haiku-high100% → 100%~$0.019 → $0.002827 → 15
sol61-high ⚡ → haiku-high100% → 100%~$0.036 → $0.002817 → 15
sol56-high → haiku-high100% → 100%~$0.042 → $0.002814 → 15
astra-medium → haiku-high100% → 100%~$0.075 → $0.002821 → 15
astra-medium ⚡ → haiku-high100% → 100%~$0.15 → $0.002810 → 15
haiku-low → terra61-high95% → 97%$0.0011 → ~$0.007910 → 12
haiku-medium → terra61-low98% → 100%$0.0015 → ~$0.01013 → 10
haiku-high → terra61-low100% → 100%$0.0028 → ~$0.01015 → 10
sonnet-medium → terra61-low100% → 100%$0.012 → ~$0.01010 → 10
How to read this data: matches
  • Match = the cheapest other-vendor config passing at least as often.
  • Fastest Codex at 100%: astra-medium ⚡, 10 s. It costs $0.15 per pass.
  • At haiku-low's price, the best Codex is luna-high: 92% to 95%.
  • All rows use the main ladder.