# Opus control — FROGGAI + MAZERUNNER (gold-standard baseline)

The local B70 models (30–35B) built teamwork games that **pass the validator but break their core**
(see `CROSS_MODEL_LIVE_B70.md`). To anchor the scale, **Claude Opus 4.8** built the same two games from the
**identical canonical prompts** — one agent per game, single-shot, max capability. These are the control:
what a frontier model produces on the same task, scored on the same /50 rubric.

- `games/opus_froggai.html` — **FROGGAI** (Frogger), 25,729 bytes
- `games/opus_mazerunner.html` — **MAZERUNNER** (Robot-Filled Maze Shooter), 29,264 bytes

Both single self-contained HTML files (vanilla JS + Canvas, code-drawn sprites, Web Audio SFX, no
external libs/assets/network). Both validate clean in jsdom and were driven headlessly through their full
win/round loop by the building agent before finalizing.

## Code-quality eval (same Claude Opus 4.8 /50 rubric)

| game | chars | **/50** | Comp | Corr | Struct | Robust | Polish |
|---|---:|---:|:--:|:--:|:--:|:--:|:--:|
| **FROGGAI** | 25,729 | **47** | 10 | 9 | 10 | 9 | 9 |
| **MAZERUNNER** | 29,264 | **47** | 10 | 9 | 10 | 9 | 9 |

### vs the local field
| | Opus ctrl | AgentWorld | SIQ | NEX2 | Ornith | Quest |
|---|:--:|:--:|:--:|:--:|:--:|:--:|
| Frogger | **47** | 42 | 42 | 37 | 33 | FAIL |
| Maze | **47** | 41 | 30 | 31 | 34 | 29 |

The control is **+5 over the best local frogger** and **+6 over the best local maze** — and, crucially,
**neither control game has a core-loop bug.** The gap isn't polish (several local games were polished); it's
**correctness of the core mechanic**, exactly where the local models failed.

### FROGGAI — 47/50
Authentic Frogger: **five lily-pad homes** you must all fill, **two levels** (45% faster, tighter gaps,
shorter timer), per-level countdown, road of cars/trucks + river of logs/turtles. The win path is fully
wired and reachable — `onLand → resolveGoal → reachHome → (filledCount≥5) levelComplete → level<2 ?
levelclear→setupLevel : victory` — and was verified by playing through both levels to the Victory screen.
Real collision (vehicles kill, open water drowns, logs/turtles carry, edge-of-screen death), invuln frames,
correct draw order (board→sprites→particles→HUD→overlay), hop squash/arc juice, 7 Web Audio SFX,
code-drawn sprites. No undefined vars, no unit mismatch, no dead win-path — the things every local frogger
got wrong.

### MAZERUNNER — 47/50
Top-down shooter with a **connectivity-checked maze generator** (re-rolls until the exit is provably
reachable; empty-room fallback), pixel-consistent coordinates (documented in-code), **real radii on every
instance** so bullet↔robot and robot↔player collisions are exact (`dist² < (r₁+r₂)²`, never `NaN`),
axis-separated wall-sliding, enemy ranged fire, i-frames, wave progression through the doorway, screen
shake/particles, 8 Web Audio SFX, a **canvas-drawn dismissable** start screen, and **visible neon walls**.
The agent caught and fixed an empty-grid load crash before finalizing. It avoids all four local-maze failure
modes (radius-undefined, tile/pixel units, un-hidden overlay, black-on-black walls) by construction.

## Takeaway
A frontier model clears the same prompt at **47/50 with zero core-loop bugs**, while the local 30–35B models
land 29–42 and **every one of them shipped at least one game with a validator-invisible core bug**. The
control makes the campaign's thesis concrete: on tightly-coupled, semantically-loaded artifacts like these
games, **model strength shows up as core-loop *correctness*, not surface polish** — and a static gate can't
tell the difference.
