A game promise, benchmark matrix, and orchestration shell with no accepted playable loop.
Three.js turn-based tactics
Carpet Front
A repository skeleton became a deterministic, three-mission tactics slice played by molded-plastic soldiers across a room-scale battlefield.
Outcome
Four leaves accepted; fifth held at REVISE
This report separates accepted product truth from preserved candidate work. A missing critic or device proof is treated as an open gate, not a semantic technicality.
Three authored missions, deterministic preview/commit combat, campaign unlocks, scoring, persistence, original presentation, audio, accessibility, and renderer telemetry.
Accepted boundary
- CF-L001 deterministic playable spine and corrected production serving
- CF-L002 four-class teaching mission with exact trace hashes
- CF-L003 production identity, accessibility, telemetry, and nested-route safety
- CF-L004 three-mission campaign, persistence, results, cold boot, and audio lifecycle
Held, candidate, or unstarted
- CF-L005 review, settings, recovery, and focus candidate returned REVISE
- Four full-matrix failures were traced to a stale cadence oracle, not waived
- CF-L006 completion audit was intentionally never opened
Gate history
Decision timeline
The useful unit is not the turn. It is the gate: a bounded claim, its evidence, and the verdict that controlled promotion.
Baseline and six-leaf plan frozen.
CF-L001 accepted after production-artifact identity repair.
CF-L002 accepted after reduced-motion, favicon, and crash recovery work.
CF-L003 accepted after nested-route repair.
CF-L004 accepted after cold-shell and audio lifecycle loops.
CF-L005 re-critic found renderer failure UI bleeding through the title.
Budget wind-down preserved the candidate without promotion.
Existing evidence
Frames from the run.
No images were generated for this report. These are existing repository artifacts with shortened SHA-256 anchors. Candidate frames remain visibly labeled.



Testable now
Reproduce the current truth.
Commands are repository-root commands from the project's canonical debrief. They are shown for technical review, not as a public playable deployment claim.
npm ci
npm run typecheck
npm run lint
npm run test:unit
npm run build
npm run test:routes
npm run test:e2e -- --workers=1 --retries=0These commands exercise the accepted CF-L004 baseline. The preserved CF-L005 branch is not the release baseline.
Git anchors
- Accepted product c68a529
- Wind-down checkpoint fdffaf5
- Candidate branch b4a9b80
Known token floor
6,290,180
Known manager subtotal only. Builder and critic descendant usage was not exposed, so this is a floor rather than total consumption.
Candid postmortem
Failures that changed the run.
The point of the case study is not that agents wrote code. It is that the system found reasons not to trust its own first answer.
Loops, stalls, and defects
- A Vite development artifact initially masqueraded as a production build.
- Nested asset routes returned successful HTML fallbacks until MIME and byte checks caught them.
- A stale audio cadence oracle penalized correct source cleanup.
- Visual criticism caught failure UI that behavioral focus tests could not see.
What carries forward
- HTTP 200 is not proof of artifact integrity.
- Accessibility has behavioral and perceptual layers; both need evidence.
- A truthful paused checkpoint is better than weakening a test to claim completion.
Resume only CF-L005: repair the cadence oracle, refresh the stale evidence identity, rerun the unchanged matrix at both viewports, and obtain one fresh critic PASS before promotion.