Random legal moves
Uniformly samples only from actions that change the current board.
Built-in advantage: It can never choose an illegal or no-op direction, so it measures a valid-executor floor rather than intelligence.
Development pilot · 3 paired seeds · no tools
Can a 30–50M specialist compress game intelligence from a frontier general LLM? Every frame below is a prerecorded model decision—not an animation of algorithmic play.
Failed benchmark artifact—retained. The expected intelligence advantage did not reproduce: Sonnet matched random legal play, while the Opus cohort remained incomplete.
Gate 0 · before training
If a pinned frontier model cannot outperform random legal moves, we stop and choose a different game. No 30–50M specialist is trained merely to beat a broken ruler.
Sonnet: 0.995× random over four complete games. Opus: 1.058× over three complete games—below the 1.10× bar—then one provider disconnect. No 30-seed run; no specialist training.
Recorded output
Paired development slice
| Policy | Role | Mean score | Mean max tile | Moves | Invalid | Median decision |
|---|---|---|---|---|---|---|
| Qwen3 0.6B0.6B | small base | 7 | 3 | 4.0 | 3 | 113 ms |
| Qwen3 4B Instruct4B | general LLM | 845 | 85 | 100.7 | 0 | 227 ms |
| Qwen3.5 9B9B class | general LLM | 271 | 27 | 54.3 | 2 | 403 ms |
| Our 2048 specialist30–50M (≤50M) | specialist | Not trained — benchmark rejected at Gate 0 | ||||
Decision: do not train on this benchmark. Sonnet matched random legal play; Opus showed only a small, incomplete advantage below the admission threshold. Keep this artifact as a documented failure, then require the next candidate to demonstrate a robust frontier-versus-random capability gradient.
Engine sanity checks
Uniformly samples only from actions that change the current board.
Built-in advantage: It can never choose an illegal or no-op direction, so it measures a valid-executor floor rather than intelligence.
Simulates every legal move once and scores merge gain, empty cells, monotonicity, and corner position.
Built-in advantage: It receives the exact transition function; it is an engine sanity check, not an LLM competitor or teacher.
Reproduce locally
Same character observation, greedy decoding, two output tokens maximum, no tools/search/code/rollouts.
python3.12 scripts/game_2048_mlx_pilot.py --model <MODEL_REF> --policy-id <ID> --track strict --seed 2048000000 --seed 2048000001 --seed 2048000002 --max-moves 128 --output runs/game-2048/model-pilot/<ID>.jsonB=<16 chars>;S=…;M=…;L=UDLR