Workbenches is an open standard. Read why
Progressive Oct 23, 2026 Revision 3 3 arms · 3 stages · one run per arm per stage

Jetski Racer: who can keep building?

One jet ski game built in three stages by GPT 6.1 Sol, Opus 5.5, and Opus 5.5 with the threejs-game Workbench. Each stage picks up the code the last one left behind.

Stages

Add AI racers that follow the course and push back on contact. Each arm picks up its own game from Update #1.

The games

Recordings loop. Play opens the real build in a new tab.
GPT 6.1 Sol Vanilla

Agent said "Added three AI rivals that follow the course, take both ramps, and recover after missed gates. - Momentum-based collisions push you and other racers. - Live ..." Gate: passed.

Works 1/1 Per working game $0.99
Opus 5.5 Vanilla

Agent said "I've added five AI jet skis that race you over 3 laps, bump with real push physics, and show up in a live race position display and a finish screen. It still..." Gate: passed.

Works 1/1 Per working game $6.44
threejs-gameWorkbench pompeii/threejs-game on Opus 5.5
Our pick

Agent said "You now race five AI jet skis (KAI, MARA, RIO, JUNO, SKYE) over three laps. They follow the course, take the ramps and push you and each other around. The HU..." Gate: passed.

Works 1/1 Per working game $6.21
Our take

All three arms did impressive things in their own right. GPT 6.1 Sol was the biggest surprise for its cost and speed. Its game has a distinctive look, and its UI and HUD are clean, with a very cool aesthetic. Vanilla Opus 5.5, as expected, did a great job overall.

But at every stage, from Base through the first update and definitely the final one, the threejs-game Workbench produced the better game. That is the point of a Workbench: a better outcome. I think the gap would only grow if this game kept evolving.

Even the vanilla models did great work. But this is what a Workbench is for. It is tuned for the task at hand, so for about the same price as vanilla Opus you get a higher quality result. Play them yourself and be the judge.

Our pick: threejs-game (pompeii/threejs-game on Opus 5.5) · editorial judgment

Our picks

Editorial judgment, after playing every build
  • Overall gameplay
    Workbench threejs-game pompeii/threejs-game on Opus 5.5

    The most fun to race, and it pulled further ahead once the AI racers arrived.

  • Water physics
    Workbench threejs-game pompeii/threejs-game on Opus 5.5

    The choppiest water and the biggest air at every stage.

  • HUD and UI
    GPT 6.1 Sol Vanilla

    The cleanest interface of the three, with a real design point of view.

  • Fastest to a playable game
    Opus 5.5 Vanilla

    A working game in 15 minutes, and the fastest over all three stages.

  • Most surprising
    GPT 6.1 Sol Vanilla

    A complete, tested three-stage game for $3.73, about a quarter of what the others spent.

Highlights

The final games, after every stage
FactGPT 6.1 Sol VanillaOpus 5.5 Vanillathreejs-game pompeii/threejs-game on Opus 5.5
LanguageJavaScriptJavaScriptTypeScript
App codeexcludes tests and config1,947 lines, 9 files3,842 lines, 16 files4,686 lines, 21 files
Largest fileone long file is harder to change623 lines (world.js)868 lines (main.js)871 lines (Game.ts)
Tests it wrote1,341 lines: 40 unit, 6 browserNone625 lines: scripted browser playtest
Shipped sizeJavaScript and CSS, gzipped149 KB174 KB169 KB
The race3 rivals, 2 laps, 8 gates5 rivals, 3 laps, 22 gates5 rivals, 3 laps, 8 gates
Total cost, all stages$3.73$12.97$14.64
Total time, all stages99 min95 min140 min

Side by side

One run per arm
MetricGPT 6.1 SolVanillaOpus 5.5Vanillathreejs-gamepompeii/threejs-game on Opus 5.5
Outcome
Workspassed the gate1/11/11/1
Said done, was broken0/10/10/1
Our pick··Yes
Economics
Cost per working gameincludes failed attempts$0.99$6.44$6.21
Total costone run$0.99$6.44$6.21
Wall time34m 34s56m 16s76m 21s
Running total
Cost so farBase through Update #2$3.73$12.97$14.64
Wall time so far98m 58s94m 46s139m 39s
Effort
Tokens in / out2.8M / 22k16.7M / 65k15.6M / 61k
Turns111
Tool calls115112103
Code
App code addedthis stage only; excludes tests, config, and lockfiles280 lines, 4 files1,154 lines, 9 files1,080 lines, 7 files
Most added to one fileone long file is harder to change112 lines411 lines564 lines
Test code addedwritten by the agent372 lines0 lines168 lines
Setup
Modelopenai/gpt-6.1-solanthropic/claude-opus-5-5anthropic/claude-opus-5-5
Workbenchwb-benchmarks/vanilla-gpt-6-1-sol 0.1.1wb-benchmarks/vanilla-opus-5-5 0.1.1pompeii/threejs-game 0.3.2

Works means it builds to a static site, loads in a headless browser with WebGL, draws a real scene, and survives 60 seconds of mashed controls without crashing or freezing. Cost is model spend only and includes failed attempts. Our pick is our call, not a score.

Pinned setup

Everything needed to rerun it
# Update #2 prompt, identical for every arm
Add AI jet skis that race me around the track. They should follow the course, take the jumps, and bump into me and each other with real push physics. Show my race position and a finish screen. It still needs to build to a static site I can upload. Nobody will be around to answer questions while you work, so don't wait for input: make the best call yourself and keep going.
GPT 6.1 Sol Vanilla starts at
pompeii-labs/workbenchmarks-fixtures@9922fc6
Opus 5.5 Vanilla starts at
pompeii-labs/workbenchmarks-fixtures@c982863
Opus 5.5 + pompeii/threejs-game starts at
pompeii-labs/workbenchmarks-fixtures@a3c0f75
Gate
Builds a static site, Loads in a headless browser with WebGL and no errors, Draws a real scene, not a blank or flat canvas, Survives a 60 second playtest
Attempts
1 per arm, no retries, no cherry-picks
Runs
3 scored
Generated
2026-10-23

Revisions

  1. Oct 23, 2026Revision 1. Base: 3 arms, 1 run each. 3 runs lost to an infrastructure outage were rerun and are not scored.
  2. Oct 23, 2026Revision 2. Update #1: race track added. Same prompt for every arm, no fix lists. 1 run each, no infrastructure losses.
  3. Oct 23, 2026Revision 3. Update #2: AI racers added. Same prompt for every arm, no fix lists. 1 run each; a local network drop interrupted grading, and the finished runs were picked up again, not rerun.

More benchmarks