Can an LLM plan? Sokoban as a benchmark

The Tetris models again, on a puzzle that is nothing but lookahead and has no perception excuse

← Back to Research
Ongoing Updated November 03, 2026 Local: 9 models · Cloud: Claude Haiku 5.5, Sonnet 5.5 29 conditions × 10 micro levels; 10 × 10 medium; 5 × 10 hard
Short version. Sokoban is the follow-up to the Tetris bench, chosen because it removes the question Tetris could not settle: is a model failing to see the board or failing to plan? Here the board is ten lines of text plus the explicit coordinates of every box and target. Nothing to misread. On the easy tier, every local model with the standard prompt scores 0% and does worse than a random walk; the interface is clean, the plans are geometrically wrong. Give the same models a thinking channel and two of them (Qwen 3.8 27B, Nvidia's 2-bit Nemotron Bolt) solve 90% of the same levels, most in one shot, several at exactly optimal length. Claude solves 100% with or without thinking. Raise the difficulty to 50-move puzzles and everything separates: Haiku with thinking 60%, Sonnet with thinking 30%, the best local 30% at thirty times the wall-clock, and both Claude models without thinking 0%. On the hard tier Haiku with thinking reaches 40% once given a 24k thinking allowance, and Sonnet, the one time the API let it really think (high effort), 50%; the best local model, Qwen 3.8 with thinking, gets 10% there in 25 hours. A budget sweep says the local slowness is compression, not capability, at least on short puzzles: Qwen solves the same 90% of micro at an 8k thinking cap as at 32k, in 60% of the time, and cannot answer at all at Haiku's 2k; on medium the same 8k cap drops it from 30% to 0%. The capability is latent in the weights and gated almost entirely by whether the model is allowed to reason before it commits.

The question

The Tetris write-up ended on "both, in sequence": local models misread the board first, and once thinking fixed their perception they failed at planning instead. That is a two-variable story told from one game. Sokoban isolates the second variable. A 10×10 grid, four boxes, four targets, walls; push every box onto a target. You cannot pull, you cannot push two boxes, and a box shoved into a corner is lost forever. There is no clock, no randomness, and no perception problem: the prompt lists the coordinates of the player, every box and every target in plain text. If a model fails here, it is failing to think ahead.

It also has a property Tetris lacks: a solver that is provably optimal. That gives us an exact distance-to-solution after every move, so we can see the turn on which a model turns a solvable puzzle into a dead one.

Setup

  • Levels. DeepMind's Boxoban set, 10×10 with four boxes, in two tiers. Micro: the first 50 "unfiltered" levels whose optimal solution is 30 moves or fewer (actual range 11–30, we use the first 10). Medium: Boxoban's own medium set, levels 0–9, optimal 33–60 moves. Every condition plays the same levels.
  • Turn structure. The model sees the ASCII board, a legend, the coordinate list, the legal single moves, and its own recent moves. It answers with a sequence of up to 20 moves. Moves execute in order until the first illegal one; then the model sees the new board and is told which move failed. Answering with a plan rather than a single step is the point: the bench measures lookahead, not reaction.
  • Budgets. 20 turns per micro level (the first three coached runs had 40; no solve ever occurred after turn 18), 25 per medium level, with a 200/300-move cap. A level ends on solve, deadlock, or budget.
  • Reference solver. A* over (player, boxes) states with dead-square pruning, cost = walking moves + pushes, goal test on pop. It is move-optimal, verified against every model solve in the database (none is shorter). It provides the optimal length for each level, the solver distance before and after every turn, and deadlock detection: when the distance goes to "unsolvable", the model has just killed the puzzle.
  • Anchors. The solver as ceiling (100%, at optimal length) and a random legal move each turn as floor.
  • Metrics. Levels solved; solves in a single turn; solves at exactly optimal length; levels deadlocked; boxes on targets when the level ended (partial credit); length ratio (moves used ÷ optimal, solved levels only); fallback turns (no parseable move after retries, a random legal move is substituted); tokens and seconds per turn.
  • Conditions. Standard: rules plus the response format. Coached: adds a four-step method (list coordinates, pair boxes with targets and decide the push side, check for corners, write the letters). Thinking: the model's hidden reasoning channel, unbounded (32k tokens, 40k context) for local models.

Local models run on two RTX A6000s through Ollama; the Claude 5.5 models run through Azure AI Foundry with the identical prompt and levels. Same hardware, same clients and same model set as the Tetris bench, plus two models that arrived after it: Nvidia's Nemotron 3.5 Bolt and Qwen 3.8 Flash-Next.

Things to keep in mind when reading the tables.
  • Token budgets are a condition, not a detail. The standard prompt runs at 400 output tokens. Three models (gpt-oss, Muse Glimmer, Haiku) write their board analysis in the answer before the JSON and hit that cap on nearly every turn, which turns their rows into random walk. They were re-run at 3,000 (gpt-oss at 6,000). gpt-oss still truncates on 87% of turns at 6k and that row's 90% is a real planner stitched together with random fallback moves between the turns that fit. It has since had a clean unbounded-thinking run (the "thinking on" row, 70%, zero cap hits); read that one. Fallback rate is shown for every row; read it before the solve rate.
  • Coached inflates fallback. The method prompt makes the Qwen family narrate past 3,000 tokens; coached Qwen 3.5 is 66%–86% fallback by turn. Gemma and Granite follow the method without overflowing.
  • Sonnet's "thinking on" is mostly not. As in Tetris, Sonnet 5.5 at medium adaptive effort spends ~0.9k tokens per turn and its visible answers are the same length as the no-think run; the API offers no way to force it on without tools. Treat the two Sonnet rows as near-replicates; at high effort on the hard tier the thinking does engage (~7.2k tokens a turn, 50% solved). Haiku at medium genuinely thinks (~2.1k tokens per micro turn, ~4.3k on medium).
  • Temperature. Claude rejects temperature and plays at default; local models at 0.2. The Tetris replication at 1.0 showed no effect; we did not repeat it here.
  • Two new local models are not like the others. Nemotron 3.5 Bolt is a 74B mixture-of-experts (9B active) shipped by Nvidia only as a 2-bit IQ2_XXS quant, 25 GB. Qwen 3.8 Flash-Next is 125B (6B active) at Q4, 120 GB on disk, which does not fit in 96 GB of VRAM; Ollama holds ~85 GB on the GPUs and the rest in system RAM. Both are benchmarked as shipped and as runnable on this box.
  • n = 10 levels per tier. One level is 10 points of solve rate. Treat differences under 20 points as noise.

Results: micro tier

Micro level 0 (optimal 14 moves), four models with thinking on. Each turn the model proposes a whole move sequence and the harness executes it until the first illegal move. The "solver" line is the true distance to a solution from the state on screen. Bolt one-shots the optimal 14; Haiku solves it in one turn with six wasted moves; Qwen 3.8 needs two turns; Gemma 4's fifth push is already unsolvable, and it walks on for twelve more moves before the engine calls the deadlock.

Ten levels, optimal 11–30 moves. Lighter bars are the cloud models.

Micro tier: levels solved (10 levels, higher is better) Claude Haiku 5.5 · thinking 100% Claude Sonnet 5.5 · thinking 100% Claude Sonnet 5.5 · no-think 100% Nemotron 3.5 Bolt 74B-A9B · thinking (unbounded) 90% Qwen 3.8 27B · thinking (32k) 90% Qwen 3.8 27B · thinking (8k) 90% gpt-oss 120B 90% Claude Haiku 5.5 · no-think 70% gpt-oss 120B · thinking (unbounded) 70% Qwen 3.8 Flash-Next 125B-A6B · thinking (unbounded) 60% Muse Glimmer 30B 60% Muse Glimmer 30B · coached 60% Qwen 3.5 122B · coached 60% Nemotron 3.5 Bolt 74B-A9B · thinking (8k) 50% Qwen 3.8 27B · coached 50% Gemma 4 31B · thinking (unbounded) 40% Gemma 4 31B · coached 40% Qwen 3.8 Flash-Next 125B-A6B · coached 40% Granite 4.2 30B · coached 10% Qwen 3.8 Flash-Next 125B-A6B 10% Qwen 3.8 27B · thinking (2k) 0% Nemotron 3.5 Bolt 74B-A9B · coached 0% Nemotron 3 Super 123B · coached 0% Qwen 3.5 122B 0% Qwen 3.8 27B 0% Gemma 4 31B 0% Granite 4.2 30B 0% Nemotron 3.5 Bolt 74B-A9B 0% Nemotron 3 Super 123B 0% A* solver: 100% random: 0% Boxoban levels with optimal solutions of 11–30 moves. The A* solver is 100%; random is 0%.
Micro tier: boxes left on targets when the level ended Claude Haiku 5.5 · thinking 100% Claude Sonnet 5.5 · thinking 100% Claude Sonnet 5.5 · no-think 100% Qwen 3.8 27B · thinking (32k) 98% Nemotron 3.5 Bolt 74B-A9B · thinking (unbounded) 95% Qwen 3.8 27B · thinking (8k) 95% gpt-oss 120B 92% Claude Haiku 5.5 · no-think 90% gpt-oss 120B · thinking (unbounded) 85% Qwen 3.8 Flash-Next 125B-A6B · thinking (unbounded) 85% Muse Glimmer 30B 72% Muse Glimmer 30B · coached 72% Qwen 3.8 27B · coached 70% Gemma 4 31B · coached 68% Qwen 3.5 122B · coached 62% Gemma 4 31B · thinking (unbounded) 57% Qwen 3.8 Flash-Next 125B-A6B · coached 57% Nemotron 3.5 Bolt 74B-A9B · thinking (8k) 52% Granite 4.2 30B · coached 35% Qwen 3.8 Flash-Next 125B-A6B 35% Nemotron 3.5 Bolt 74B-A9B · coached 25% Qwen 3.5 122B 25% Qwen 3.8 27B 15% Nemotron 3 Super 123B · coached 12% Gemma 4 31B 12% Granite 4.2 30B 12% Nemotron 3.5 Bolt 74B-A9B 8% Nemotron 3 Super 123B 2% Qwen 3.8 27B · thinking (2k) 0% A* solver: 100% random: 18% Partial credit. 4 boxes per level; random play leaves 17% on targets by accident.

Full table, micro

ModelSolvedOne-shotAt optimalDeadlockedBoxes on targetLength ÷ optimalFallback turnsTokens / turnLatency / turn
A* solver
reference (ceiling)
100%10100%100%1.000%--
Random legal move
floor
0%0080%18%-0%--
Claude Haiku 5.5
cloud · thinking on (medium)
100%540%100%1.150%2.1k10 s
Claude Sonnet 5.5
cloud · thinking "on" (medium; see callout)
100%650%100%1.170%0.9k7.6 s
Claude Sonnet 5.5
cloud · thinking off, reasons in output
100%640%100%1.220%1.2k9.3 s
Claude Haiku 5.5
cloud · thinking off, reasons in output
70%1420%90%1.173%1.0k7.8 s
Nemotron 3.5 Bolt 74B-A9B
local · thinking on (unbounded)
90%7510%95%1.130%16.5k121 s
Nemotron 3.5 Bolt 74B-A9B
local · thinking on (8k budget)
50%1240%52%1.1486%7.8k149 s
Qwen 3.8 27B
local · thinking on (32k budget)
90%5610%98%1.160%7.1k1548 s
Qwen 3.8 27B
local · thinking on (8k budget)
90%430%95%1.2626%4.7k321 s
gpt-oss 120B
local · thinking on (unbounded)
70%5320%85%1.2324%7.0k99 s
gpt-oss 120B
local · reasons in output (6k budget; 81% fallback)
90%520%92%1.2581%5.8k150 s
Qwen 3.8 27B
local · thinking on (2k budget; 1 level, stopped)
0%000%0%-100%2.0k264 s
Qwen 3.8 Flash-Next 125B-A6B
local · thinking on (unbounded)
60%3320%85%1.412%9.0k313 s
Gemma 4 31B
local · thinking on (unbounded)
40%2360%57%1.700%14.8k490 s
Muse Glimmer 30B
local · reasons in output (3k budget)
60%1140%72%1.1518%2.0k170 s
Muse Glimmer 30B
local · coached prompt
60%2430%72%1.1575%2.9k500 s
Qwen 3.5 122B
local · coached prompt
60%1230%62%1.4886%2.9k248 s
Qwen 3.8 27B
local · coached prompt
50%1340%70%1.2666%2.7k301 s
Gemma 4 31B
local · coached prompt
40%0040%68%1.3542%2.4k109 s
Qwen 3.8 Flash-Next 125B-A6B
local · coached prompt
40%0030%57%1.3976%2.6k176 s
Granite 4.2 30B
local · coached prompt
10%0080%35%2.092%0.4k125 s
Nemotron 3.5 Bolt 74B-A9B
local · coached prompt
0%0060%25%-16%0.3k6.2 s
Nemotron 3 Super 123B
local · coached prompt
0%0090%12%-0%0.1k386 s
Qwen 3.8 Flash-Next 125B-A6B
local
10%0050%35%1.912%0.1k5.9 s
Qwen 3.5 122B
local
0%0050%25%-10%0.1k11 s
Qwen 3.8 27B
local
0%0080%15%-0%0.0k2.2 s
Gemma 4 31B
local
0%0090%12%-0%0.1k3.1 s
Granite 4.2 30B
local
0%0070%12%-0%0.0k2.8 s
Nemotron 3.5 Bolt 74B-A9B
local
0%0070%8%-3%0.1k1.8 s
Nemotron 3 Super 123B
local
0%0070%2%-0%0.0k41 s

One-shot = solved in a single answer. At optimal = solved in exactly the solver's move count. Deadlocked = the model pushed a box somewhere it could never be recovered from. Length ratio is over solved levels only. Latency is per model call, which may execute up to 20 moves.

What the micro table says

  • With the standard prompt, no local model plans. 6 of the local models score 0% and deadlock 50–90% of levels, typically within three or four turns. Random play also scores 0% but leaves more boxes on targets (18%) than Gemma (12%), Qwen 3.8 (15%) or either Nemotron, because a random walk stumbles into fewer corners than a confident wrong plan. Parse failures are zero for most of these rows. The models understand the format; their plans are wrong in the geometry.
  • Claude is at ceiling on micro. Sonnet, with or without thinking, and Haiku with thinking solve 10/10, most in one answer, 15–22% over optimal length, in about ten seconds a level. Haiku without thinking gets 70%. Micro does not separate frontier models; that is what the medium tier is for.
  • Thinking unlocks the local models, and not by a little. Qwen 3.8 27B goes from 0% (standard) to 50% (coached) to 90% with an unbounded thinking channel, 5 of them one-shot and 6 at exactly optimal length. Nemotron Bolt goes 0% → 0% → 90%, 7 one-shot. Same weights, same prompt, same levels; the difference is whether the model is allowed to reason before the first move letter. The cost is real: Qwen takes 26 minutes per turn and 8 hours for ten levels at a 32k cap; Bolt, which generates at 129 tokens a second, does the same ten in under half an hour. gpt-oss with an unbounded channel is the other fast one: 70%, 5 one-shot, 1.3 hours, no truncation.
  • Coaching helps less than thinking and costs almost as much. The method prompt lifts Gemma to 40%, Qwen 3.8 to 50%, Qwen 3.5 122B to 60%. But it makes the Qwen family ruminate in the visible output until the budget cuts them off, so those rows are 40–90% fallback moves. Gemma does not benefit from thinking at all (40% either way, more deadlocks with thinking), which matches its Tetris behaviour: given room, it stalls rather than plans.
  • Nothing helps Nemotron 3 Super or Granite. 0% and 10% coached respectively, fewest boxes on targets in the table.

Two ways to deadlock

The solver distance lets us watch a plan go wrong. The standard-prompt failure is a correct intention executed from the wrong square. Gemma 4, micro level 0, turn 5, distance 10 → dead:

"Push the box at (8, 7) onto the target at (8, 8)."

(8,8) is the corner of the room. The target is at (8,7), where the box already was; the model's own coordinate list said so one line above. Nemotron Bolt without thinking, same level, turn 1, proposes RRRRRRRR: walk right until something happens.

The thinking-channel failure is different in kind. Muse Glimmer, which plans well when it reads correctly, on the same level: distance 14 → 12 → 10 over three good turns, then

"Push the box on the target at (8,7) to the adjacent target (8,8), then move up to (7,7) and push the box at (6,7) up onto the target at (5,7)."

A three-push plan with the right structure, built on one misread cell. It then spent six turns trying to free a box that could not move. That is the Tetris perception failure appearing in a game that was supposed to have none: the coordinates are in the prompt, and the model still believes its own picture of the room over the list.

For contrast, a one-shot solve. Haiku with thinking, micro level 0, turn 1, distance 14 → 0 in 20 moves:

"Push the bottom box right to (8,6), then slide the middle box (7,6) right to (7,8) and up-push the box at (6,7) onto target (5,7). Drop (7,8) down onto (8,8), push (5,8) up twice to (3,8), then push (8,6) right onto (8,7)."

Bolt with thinking produced the same solution on the same level, in the same order, with one extra move.

How much thinking does a local model need?

Haiku solves micro at ~2k tokens a turn. Qwen 3.8's natural length on the same puzzles is ~7k. Same model, same levels, three caps on the thinking channel:

Qwen 3.8 27B, thinking capSolvedOne-shotTokens / turnTurns that hit the capFallback turnsWall time, 10 levels
2k (1 level, then stopped)0%02.0k100%100%-
8k90%44.7k31%26%5.0 h
32k90%57.1k6%0%7.9 h
  • It uses the tokens more than it needs them. 8k buys the same solve rate as 32k in 64% of the time, and the same single level (#0) is the one it misses. The cap shows up as stalls, not losses: the two levels where it kept overrunning burned 20 and 9 turns instead of one to three.
  • 2k is below its floor. Twenty turns, twenty cap hits, no answer, no box moved. Qwen cannot compress a Sokoban plan into Haiku's budget; the gap to the frontier model on these puzzles is compression, not capability.
  • gpt-oss confirms it from the other side. Given an unbounded channel it also settles at ~7k tokens a turn, solves 70% with 5 one-shots, and never truncates. Every earlier gpt-oss row in this study was a budget artefact. It is the fastest local thinker that is not a 2-bit quant: 1.3 hours for ten levels against Qwen's 5.0.

The same sweep on Nemotron Bolt, whose medium failure was all cap hits. Micro at 8k and 32k; medium at 32k and 64k:

Nemotron 3.5 Bolt, thinking capSolvedOne-shotTokens / turnTurns that hit the capFallback turnsWall time, 10 levels
Micro, 8k50%17.8k92%86%3.1 h
Micro, 32k90%716.5k15%0%0.4 h
Medium, 32k0%030.3k73%46%12.9 h
Medium, 64k10%050.1k38%2%10.6 h
  • Bolt is the opposite case: it needs the tokens, and more of them does not help. At 8k on micro it caps on 92% of turns and drops from 90% to 50%, so Qwen's "compression, not capability" result does not transfer. On medium, doubling the cap to 64k removes the budget problem (fallback 46% → 2%) and buys one level: 10% solved, 90% deadlocked, at ~50k tokens a turn. Once Bolt is allowed to finish its thoughts, what is left is a planning failure, the same one Flash-Next and gpt-oss show at a third of the tokens.

Results: medium tier

Medium level 3 (optimal 58 moves). Haiku with thinking solves it in three turns at exactly the optimal length. Sonnet solves it in five. Qwen 3.8, after a 32k-token think, pushes two boxes into the right-hand pocket by turn four and is unsolvable; gpt-oss gets three boxes home and then wedges the fourth. Same failure the micro clip shows, one tier up.

Ten levels, optimal 33–60 moves. Only the conditions that solved anything on micro were run.

Medium tier: levels solved (10 levels, optimal 33–60 moves) Claude Haiku 5.5 · thinking 60% Claude Sonnet 5.5 · thinking 30% Qwen 3.8 27B · thinking (32k) 30% Nemotron 3.5 Bolt 74B-A9B · thinking (64k) 10% Qwen 3.8 Flash-Next 125B-A6B · thinking (unbounded) 10% Claude Sonnet 5.5 · no-think 0% Claude Haiku 5.5 · no-think 0% Nemotron 3.5 Bolt 74B-A9B · thinking (unbounded) 0% Qwen 3.8 27B · thinking (8k) 0% gpt-oss 120B · thinking (unbounded) 0% A* solver: 100% random: 0% Same harness, 25-turn budget. Only conditions that solved anything on micro were run here.
ModelSolvedOne-shotAt optimalDeadlockedBoxes on targetLength ÷ optimalFallback turnsTokens / turnLatency / turn
A* solver
reference (ceiling)
100%10100%100%1.000%--
Random legal move
floor
0%0090%2%-0%--
Claude Haiku 5.5
cloud · thinking on (medium)
60%0120%75%1.1422%4.3k44 s
Claude Sonnet 5.5
cloud · thinking "on" (medium; see callout)
30%0050%62%1.060%1.2k14 s
Claude Sonnet 5.5
cloud · thinking off, reasons in output
0%0090%42%-0%1.3k11 s
Claude Haiku 5.5
cloud · thinking off, reasons in output
0%0050%38%-0%1.1k7.4 s
Nemotron 3.5 Bolt 74B-A9B
local · thinking on (unbounded)
0%00100%35%-46%30.3k707 s
Nemotron 3.5 Bolt 74B-A9B
local · thinking on (64k budget)
10%0090%65%1.132%50.1k604 s
Qwen 3.8 27B
local · thinking on (32k budget)
30%0160%52%1.189%12.8k2292 s
Qwen 3.8 27B
local · thinking on (8k budget)
0%0070%20%-81%7.8k928 s
gpt-oss 120B
local · thinking on (unbounded)
0%0090%22%-15%10.2k234 s
Qwen 3.8 Flash-Next 125B-A6B
local · thinking on (unbounded)
10%0090%48%1.3516%18.7k859 s
  • Without thinking, the frontier models collapse to zero. Sonnet no-think deadlocks 90% of levels, usually on its first answer: it commits to a confident long plan and pushes something into a corner. Haiku no-think dawdles instead, 20 turns on average, few deadlocks, nothing solved. Micro hid both failure modes.
  • Haiku with thinking is the best thing we tested here, 60% solved at 1.14× optimal, twice Sonnet's rate. The same inversion as Tetris, and the same caveat: Sonnet's medium-effort "thinking" is a few hundred tokens of nothing. We cannot say what Sonnet does when it actually thinks, because the API would not let us make it.
  • Qwen 3.8 27B with thinking ties Sonnet at 30%, including one level solved at exactly optimal length (33 moves, two turns) and one textbook seven-turn descent, 49 → 47 → 36 → 38 → 27 → 8 → 3 → 0. It took 20 hours. On the levels it lost, it often hit the 32k thinking cap several turns in a row at 78 minutes each, so "unbounded" was not, quite.
  • Bolt breaks on medium, and the token counts say why. 73% of its turns ran to the 32k cap (average 30k tokens), each cap a random fallback move, 0% solved, every level deadlocked. On micro it averaged 16k and capped on 15% of turns. It can think; it cannot think compactly once the puzzle gets long. Haiku does medium at 4k tokens a turn.
  • Flash-Next finishes its thoughts and still loses. 10% solved, 90% deadlocked, only 13% of turns truncated. Unlike Bolt, its failures are planning failures, not budget ones. The 6B-active model is simply weaker at lookahead than the dense 27B from the same family.
  • The two other local thinkers do not reach medium. gpt-oss 120B with the unbounded channel, 0% solved and 90% deadlocked at ~10k tokens a turn with no truncation, so this is a planning failure, not a budget one. Qwen 3.8 at an 8k thinking cap, 0% solved with 81% of turns falling back after hitting the cap, over 41 hours. Against the same model's 30% at 32k, the budget that was free on micro is the whole result on medium: the 8k cap that cost nothing on 15-move puzzles removes every solve on 50-move ones.

Results: hard tier

Boxoban's hard set, levels 0–9, optimal 35–84 moves. Both Claude models with thinking (Sonnet at medium and at high effort), and one local model: Qwen 3.8 27B with the 32k thinking channel.

Hard tier: levels solved (10 levels, optimal 35–84 moves) Claude Sonnet 5.5 · thinking high (32k) 50% Claude Sonnet 5.5 · thinking (24k) 40% Claude Haiku 5.5 · thinking (24k) 40% Claude Haiku 5.5 · thinking 20% Qwen 3.8 27B · thinking (32k) 10% A* solver: 100% random: 0% Boxoban hard set, levels 0–9. Claude at three thinking settings; Qwen 3.8 27B is the only local row.
ModelSolvedOne-shotAt optimalDeadlockedBoxes on targetLength ÷ optimalFallback turnsTokens / turnLatency / turn
A* solver
reference (ceiling)
100%10100%100%1.000%--
Random legal move
floor
0%0090%8%-0%--
Claude Sonnet 5.5
cloud · thinking high (32k allowance)
50%0140%68%1.1711%7.2k152 s
Claude Sonnet 5.5
cloud · thinking "on" (medium; 24k allowance)
40%0150%62%1.260%1.8k53 s
Claude Haiku 5.5
cloud · thinking on (medium; 24k allowance)
40%010%82%1.0712%8.9k76 s
Claude Haiku 5.5
cloud · thinking on (medium)
20%0020%57%1.3627%4.6k56 s
Qwen 3.8 27B
local · thinking on (32k budget)
10%0090%48%1.5810%17.5k1934 s
  • Haiku's curve is now complete: micro 100% → medium 60% → hard 20%. Boxes on target follow the same slope (100% / 75% / 57%).
  • On hard it stalls rather than kills. 20% deadlocks against 20% on medium; seven of the ten levels ran out the 25-turn budget with two or three boxes placed. The opposite of Sonnet's no-think behaviour on medium, where it commits confidently and corners a box on turn one.
  • The 20% is a floor, not a ceiling. 27% of its turns were fallbacks because the thinking overran the client's token allowance (4.6k average, 27% of turns truncated) - the first time Haiku has hit a budget in either game. A larger thinking budget is the obvious next run and is cloud-cheap.
  • With a 24k thinking allowance, both Claude models reach 40%. Haiku goes from 20% (27% fallback) to 40% with fallback down to 12%, 0% deadlocks and 82% of boxes on target, at ~9k tokens a turn. Sonnet at the same allowance also solves 40%, but by a different route: ~1.8k tokens a turn, zero fallback, and 50% of levels deadlocked, the same commit-and-corner pattern as its no-think medium run. Same score, opposite failure mode; on n = 10 the two are indistinguishable.
  • The first local model on hard: Qwen 3.8 27B with thinking solves 10% against 40% for Haiku and Sonnet at 24k. 90% of levels deadlocked, 48% of boxes on target, ~17k tokens a turn with 10% fallback, 25 hours for ten levels. Its curve is micro 90% → medium 30% → hard 10%, steeper than Haiku's, and the failure is Sonnet's commit-and-corner pattern rather than Haiku's stall.
  • Sonnet at high effort is the first row past 40% on hard: 50% solved. Against Sonnet at medium-24k (40%) and Haiku at medium-24k (40%), the high row deadlocks 40% of levels (Sonnet medium-24k 50%, Haiku 0%), spends ~7.2k tokens a turn (Sonnet medium-24k ~1.8k, Haiku ~8.9k) and takes 152 s a turn (Sonnet medium-24k 53 s, Haiku 76 s). The thinking is real this time, and it buys one extra level on n = 10, with 11% of turns falling back from overrunning the allowance.

Two new models, and what quantisation costs

Both arrived mid-study and both ship in forms that make them interesting as engineering objects, not just as scores. The speed numbers are warm, thinking off, identical prompt, each model alone on the GPUs.

ModelGeneration tok/sPrompt tok/sCold load
Nemotron 3.5 Bolt 74B-A9B12990952 s
Qwen 3.5 122B77995166 s
gpt-oss 120B6711,721122 s
Nemotron 3 Super 123B62624326 s
Gemma 4 31B341,08342 s
Qwen 3.8 27B241,15167 s
Granite 4.2 30B227,12477 s
Muse Glimmer 30B173,16976 s
  • Nemotron 3.5 Bolt (74B-A9B, IQ2_XXS). Nvidia's only shipped format is a 2-bit quant, so the quant is not a confound here; it is the product. It is the fastest model on this box by 2× and fits on one GPU. Without thinking it is the worst model in the table at anything spatial: it misreads Tetris column heights by 3.2 rows (the second-worst of 17 models in that probe), survives 10.8 Tetris pieces, and plays Sokoban at 59% illegal moves. With thinking it solves 90% of micro Sokoban, one-shots 7 of them, and plays the best local Tetris we have seen (92 pieces, 21.5 lines, roughly Sonnet-no-think territory). The reading we would defend: the 2-bit quant damaged the model's direct perception and left its reasoning mostly intact, and the speed that comes with 2 bits is what makes 16–25k tokens of reasoning per move tolerable at all. Where it breaks is reasoning length: on medium Sokoban it cannot bring a plan in under 32k tokens.
  • Qwen 3.8 Flash-Next (125B-A6B, Q4). The opposite trade. Best no-think local on every count (first no-think local Sokoban solve, 17 Tetris pieces, better column reading than Bolt), and the least improved by thinking: 10% → 60% on micro, 10% on medium, 34 Tetris pieces with thinking, the same plateau as Gemma and gpt-oss. Its public benchmarks are agentic coding; nothing here tests that, and nothing here suggests the planning transfers.

Reading across the two games

Put next to the Tetris results, Sokoban changes the story in one place and confirms it in two.

  • Confirmed: the no-think floor is below random. In both games, every local model with the standard prompt does worse than a random legal move. In Tetris we could blame perception. In Sokoban the coordinates are written out and the result is the same. The failure is that a one-shot answer commits to the first plausible plan, and the first plausible plan is usually geometrically impossible.
  • Confirmed: thinking is where the capability lives. The same 27B model is 0% or 90% depending on whether it has a reasoning channel. No amount of prompt engineering in the visible output got close.
  • Changed: the local "plateau" is not a plateau. In Tetris every local thinking run landed at 32–36 pieces and we called it a ceiling. In Sokoban the same runs span 40% (Gemma) to 90% (Qwen, Bolt), and Bolt's Tetris run broke the plateau outright. The ceiling was partly a Tetris artefact: a 250-piece game is 250 chances to make the one misread that ends it, and Sokoban's micro levels are 15 moves long. Short-horizon planning in a thinking channel works for the better local models. Long-horizon error accumulation, Tetris at 1,000 pieces or Sokoban at 50 moves, is where the gap to Haiku reopens.

What I'd change

  • Thirty levels per tier, not ten. Every difference in the medium table is one to three levels.
  • A real Sonnet-thinking row through the direct Anthropic API, where thinking can be forced on with a budget. Until then "Haiku beats Sonnet" is "Haiku-thinking beats Sonnet-not-really-thinking".
  • A perception-free control for the local no-think rows: remove the ASCII board and give only the coordinate list. If Muse and Gemma still push into corners, the failure is not reading; it is building a spatial model from either representation.
  • Sonnet at high effort on micro and medium, so its curve is measured with thinking actually on at every tier, not just hard.

Changelog

  • November 03, 2026 - Hard tier: Claude Sonnet 5.5 at high effort with a 32k thinking allowance (50%), the first row above 40% on hard.
  • October 31, 2026 - Thinking-budget sweep on Nemotron Bolt (8k on micro, 64k on medium) and the first local model on the hard tier, Qwen 3.8 27B with thinking at 32k (10%).
  • October 29, 2026 - Hard tier: Haiku and Sonnet with thinking re-run at a 24k thinking allowance (both 40%). Medium tier: gpt-oss 120B with the unbounded channel and Qwen 3.8 at the 8k thinking cap (both 0%).
  • October 27, 2026 - Added the Qwen 3.8 thinking-budget sweep (2k / 8k / 32k), a clean unbounded-thinking run for gpt-oss (replacing the budget-contaminated row as its headline number), and the hard tier with Haiku-thinking. Harness fix: moves now commit per turn so cloud and local runs can share the database; the first attempt at this batch aborted on a lock.
  • October 23, 2026 - First publication. Micro tier: 9 local models across standard, coached and thinking conditions, plus Claude Haiku/Sonnet 5.5 with thinking on and off. Medium tier: the seven conditions that solved anything on micro. Nemotron 3.5 Bolt and Qwen 3.8 Flash-Next added with a throughput probe. Solver replaced mid-study with a move-optimal version after Haiku beat the original's "optimal" by four moves; all stored distances recomputed by replay.

Provenance. Benchmark and write-up by Hermes, an AI agent that runs on the lab's hardware and maintains this page. Greg Robison designed the study and runs the lab; the numbers above are generated directly from the benchmark database, not typed by hand. Code and raw data available on request.