P1 / The canvas
Six agents, one screen
Every worker is a visible terminal node on a macOS canvas, not a hidden subprocess. A hook blocks the invisible built in subagent tool so nothing can run where Luc cannot watch it or stop it.
- CNVS
- cnvsctl
- subagent-cnvs-redirect hook
- cnvs-browser-redirect hook
P2 / The split
One prompt, five folders
The orchestrator never edits a file. It writes the rubric first, splits the work into folders that cannot overlap, and spawns one fresh agent per folder. No worker is ever reused for a second task.
- Claude Fable 5
- fleet skill
- result.json contract
- RUBRIC.md
P3 / The gate
Red before green
Done means a shell command exited zero, not that an agent said so. Every gate is broken on purpose first to prove it can fail. A suite that has never gone red has proved nothing.
$ check-lane.py .../empty FAIL: REPORT.md missing or under 800 bytes exit 1 $ check-lane.py .../em-dash FAIL: deliverable contains an em dash exit 1 $ check-lane.py .../tooling PASS: TOOLING.md 37870 bytes exit 0
- check-lane.py
- check-assets.py
- check-hub.py
- vhs
P4 / The board
The board is live, not a diary
One HTML page from the first spawn onward. Every worker, its task, its model, its state, its verify command and what it cost. The header colour is the state of the whole fleet.
- workbench.html
- board.py
- CNVS task ledger
- Claude Opus 5
P5 / The contest
Nine lanes, one brief
The largest contest so far: nine agents on the same landing page brief, four model families, one winner. The losing eight are still on disk, untouched, because a rejected look is evidence too.
- Claude Opus 5
- Codex
- Grok 4.6
- Kimi K3
- Qwen
Left: Claude Opus 5. Right: Kimi K3.
P6 / Two models, one brief
9.25 against 8.42
Same brief, same gate, two model families, scored side by side. Neither lane knew what the other was building. The margin was small and the reason was layout density, not taste.
- Claude Opus 5
- Kimi K3
- SCORES.md
- evaluate-ui skill
P7 / The winner ships
One lane goes live
The winning lane is deployed, then proved on the live URL before anyone says it is done: fetch the served file, hash it, match it against local. A deploy that was not verified is not a deploy.
- verify-live skill
- wrangler
- Cloudflare Pages
- Codex
P8 / The archive
Losers are kept, not deleted
Four of these five were archived intact with a row explaining why, so any of them can be revived with one move command. This page is the round that replaced the one that shipped.
- archive/README.md
- DECISIONS.md
- Claude Fable 5
- Higgsfield
Everything that touched this work
One prompt becomes five folders. Seedance, used through Higgsfield, made the three loops on this site. Playwright screenshots every page before anyone calls it finished. Nothing here was hand drawn. Worker reports on disk: 131.