Earlier model leaderboard
This page preserves the earlier capacity-400 evaluation. The current stochastic benchmark uses a different evaluation protocol and reference; its scores are not directly comparable with the archived board below.
On the current 16 held-out stochastic seeds, Qwen3.5-4B scores 11.78 untrained and 38.42 with the GRPO + LoRA adapter (3.3×), while mean cost falls from 4,742.3 to 1,453.6. The existing adapter was evaluated without retraining on the stochastic environment. View current results.
The earlier standard suite of SupplyChainBench: one wholesaler seat on a Y-shaped chain, 36 decision weeks, 16 held-out seeds, factory capacity 400. The interesting result is not the ranking at the top. It is the distance between every model on this page and a classical base-stock heuristic that none of them comes close to.
- 1 51.28
Claude Opus 5 15/16 clean
- 2 43.61
GPT-5.6 Sol
- 3 42.09
Grok 4.6
- 4 29.78
Grok 4.5
- 5 20.64
Qwen3.5-4B + LoRA (GRPO) trained here
- 6 14.80
GPT-5.6 Luna
- 7 7.13
DeepSeek V4 Flash
- 8 6.74
Qwen3.5-4B, untrained untrained base
What the benchmark asks
SupplyChainBench asks three things of an agent, and keeps their scores apart so unlike tests are never averaged together. Control: can it hold inventory and backlog cost down on the frozen 16-seed standard suite, which is the board above. Adaptation: five further suites change the demand law, the delivery times or the supply ceiling mid-run to see whether the agent notices and recovers. Learning: separate runs compare starting fresh each episode, carrying short notes between episodes, and updating weights across them.
Only the standard suite is ranked here. The others are reported in the repository against their own references, because a policy that looks strong under a fixed demand law is not thereby strong when the law moves.
How the score reads
Every policy is scored against a hindsight-perfect wholesaler on the same seed: the best feasible open-loop order sequence, computed after the fact with the demand already known. That reference costs 287.22 on average and is defined as 100. A score of 25 means the policy spent four times what perfect foresight would have.
Two reference points sit between the models and that ceiling. An adaptive base-stock heuristic — classical inventory control, no learning, no language — reaches 73.9. And a blind constant order of 18 units every week, which never reads the observation at all, reaches 19.82. Anything below that second line is losing to a policy with no inputs.
The gap
GPT-5.6 Sol and Grok 4.6 lead the fully clean API runs at 43.613 and 42.091 — roughly two-fifths of hindsight-perfect and still well short of the base-stock heuristic's 73.9. Claude Opus 5 scores higher at 51.282 on 15 of 16 seeds, but that bar is diagnostic: one protocol failure rebases the perfect reference and keeps it off the canonical rank. The trained adapter in this repository — a rank-16 LoRA on a 4B base model — reaches 20.636, clearing the blind constant-order baseline of 19.82 but sitting well below the latest frontier models.
Runs with any protocol failure stay in the full table rather than being dropped. Laguna finished 7 of 16 episodes, Nemotron 2 of 16, the DeepSeek V4 Flash 0731 rerun 11 of 16, and Muse Spark 1.2 completed none — each scored against a perfect reference re-based onto the seeds it actually finished, so those rows are small-sample or diagnostic. They are left visible because a benchmark that quietly removes the runs that broke is not a benchmark.
What training moved in the earlier evaluation
The adapter was trained with critic-free group-relative policy optimization on the earlier environment: roll the seat out several times per seed under common random numbers, grade each weekly decision by a six-week windowed return, normalize against its groupmates at the same timestep, and reweight only the tokens that carry the order digits. The 4B base weights stay frozen; the LoRA is the only thing the optimizer touches.
On the earlier 16 held-out seeds that takes the same base model from 6.73 to 20.64 — a 3.1× improvement — with mean local cost falling from 4264.7 to 1391.8 and 16/16 episodes protocol-clean before and after. What changed is the over-ordering habit that dominates cost in this game: mean weekly order in the rollouts fell from about 22.9 to about 17.5, against a real obligation near 16 units a week.
Two caveats belong next to that number. It clears the blind constant-order baseline by 0.82 points, which is not a comfortable margin. And both training runs used the same seed (20260808), so run-to-run variance is unmeasured.
Full table
| # | Policy | Score | Mean cost | Per-seed ± SE | Clean |
|---|---|---|---|---|---|
| 1 | Hindsight-perfect feasible open-loop upper bound on each seed | 100.000 | 287.2 | — | — |
| 2 | Adaptive base-stock classical heuristic, not optimal | 73.900 | 388.8 | — | — |
| 3 | Claude Opus 5 anthropic/claude-opus-5 Finished 15 of 16 episodes. Scored against a re-based perfect reference of 296.60 on those seeds — diagnostic, shown on the chart but not ranked as fully clean. | 51.282 | 578.4 | 47.73 ± 3.71 | 15/16 |
| 4 | GPT-5.6 Sol openai/gpt-5.6-sol | 43.613 | 658.6 | 40.23 ± 3.56 | 16/16 |
| 5 | Grok 4.6 x-ai/grok-4.6 | 42.091 | 682.4 | 40.03 ± 3.27 | 16/16 |
| 6 | Grok 4.5 x-ai/grok-4.5 | 29.777 | 964.6 | 31.80 ± 2.94 | 16/16 |
| 7 | Qwen3.5-4B + LoRA (GRPO) trained_qwen_grpo_v3_capacity_400 | 20.636 | 1391.8 | 19.86 ± 3.21 | 16/16 |
| 8 | Blind constant order orders 18 every week, never reads the observation | 19.820 | — | — | — |
| 9 | GPT-5.6 Luna openai/gpt-5.6-luna | 14.796 | 1941.2 | 17.48 ± 2.08 | 16/16 |
| 10 | Laguna S 2.1 (free) poolside/laguna-s-2.1:free Finished 7 of 16 episodes. Scored against a re-based perfect reference of 362.36 on those seeds — read it as small-sample. | 14.021 | 2584.4 | 14.71 ± 1.47 | 7/16 |
| 11 | DeepSeek V4 Flash 0731 (rerun) deepseek/deepseek-v4-flash-0731 Finished 11 of 16 episodes. Scored against a re-based perfect reference of 336.82 on those seeds — diagnostic. | 7.283 | 4624.5 | 9.88 ± 2.54 | 11/16 |
| 12 | DeepSeek V4 Flash deepseek/deepseek-v4-flash-0731 | 7.125 | 4031.3 | 9.45 ± 1.29 | 16/16 |
| 13 | Qwen3.5-4B, untrained Qwen/Qwen3.5-4B | 6.735 | 4264.7 | 7.56 ± 1.14 | 16/16 |
| 14 | Nemotron 3 Ultra (free) nvidia/nemotron-3-ultra-550b-a55b:free Finished 2 of 16 episodes. Scored against a re-based perfect reference of 352.75 on those seeds — read it as small-sample. | 6.558 | 5379.0 | 10.00 ± 4.34 | 2/16 |
| 15 | Muse Spark 1.2 meta/muse-spark-1.2 Finished 0 of 16 episodes — no score. | — | — | — | 0/16 |
Human baseline
This page is missing a line it should have. The browser build logs anonymous sessions so that human play can be scored on the same seeds as the models, and 23 sessions have been recorded, but 0 of them reached week 36. Every logged session was abandoned after the first order, which leaves no final cost to take a median over.
Rather than substitute an estimate, the line is left off the chart until the log contains finished episodes. The plumbing is in place; the data is not.
Protocol
- Controlled role Wholesaler; the two retailers, distributor and factory run fixed policies
- Topology Y — one wholesaler, two competing retailers
- Horizon 36 decision weeks, 3 settlement weeks, plus a terminal inventory-position charge
- Capacity Factory capacity 400; the prompt withholds both the capacity and the demand law
- Seeds 16, common random numbers, held out from training
- Score score = 100 × mean(perfect cost) / mean(policy cost), over protocol-clean episodes
- Cost $0.50 per unit held, $1.00 per unit backlogged, charged weekly
- Frontier models Run through OpenRouter at versioned API ids
A separate board exists and is deliberately not mixed with this one: the published Verifiers Hub package keeps factory capacity 22 for historical leaderboard parity, while the research board and public browser build run at capacity 400.
The archived board figures are transcribed from artifacts/live_y_capacity_400/evaluations/ in the
project repository, where the same board is regenerated from the evaluation JSON so the published
chart cannot drift from the runs. Nothing here is recomputed in the browser.