Campaign was the only playable run; Rotten Run had no loop, economy, build matrix, death contract, or boss boundary.
Phaser browser roguelite
The Adventures of Foxman: Rotten Run
A protected authored campaign gained a separate, deterministic three-stage roguelite mode without replacing or corrupting the original game.
Outcome
Five leaves accepted; boss and final gates remain
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.
A seed-addressable mode with three two-wave stages, planned routes, markets, four weapons, three skills, upgrades, enemy roles, elites, death/retry, and an honest inert Commissioner dossier.
Accepted boundary
- LEAF-001 through LEAF-005 and product commit d849c4f
- Complete Stage 1–3 combat, rewards, routing, and same-seed retry
- Campaign remains intact with 23 authored regression routes
- Numeric release barrier prevents a rejected market key cascading into the next scene
Held, candidate, or unstarted
- Commissioner combat and boss patterns do not exist yet
- Results, local records, settings, accessibility, and complete audio remain
- Final integration, three-seed boss proof, and human acceptance were not 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.
Deterministic Rotten shell and route docket.
Stage 1 combat and same-seed death retry.
Market reducer, build ownership, and Stage 2.
Smoke automation isolated behind explicit smokeAuto=1.
Stage 2 roles, elites, and eight effects.
Stage 3 and inert Commissioner dossier accepted.
Boss leaf withheld when budget signal reached the stop threshold.
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 test
npm run typecheck
npm run build
npm run smoke
FOXMAN_SMOKE_ONLY=cdpLifecycle npm run smoke:browser
FOXMAN_SMOKE_ONLY=rottenStageThreeRetry npm run smoke:browser
npm run smoke:browserThe final browser command is a roughly 15-minute production matrix. Use focused routes for the inner loop.
Git anchors
- Accepted product d849c4f
- Wind-down checkpoint e57d041
- Final matrix 13a3d594…fa5
Known token floor
3,052,620
Known visible lead/project telemetry; descendant-specific model usage was unavailable.
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 force-quit required recovery from Git and evidence receipts.
- Closing a CDP websocket but not its browser target leaked 32+ Chrome pages and stalled the matrix.
- Wrong native key-code fields generated thousands of spurious CDP events.
- A rejected Stage 2 number key crossed the phase boundary into Stage 3 before a release barrier was added.
What carries forward
- A green suite did not guarantee a green game; blind browser critics found floor, softlock, and input defects.
- Browser lifecycle is product infrastructure for agentic testing.
- An honest inert boss dossier was more useful than fabricating completion.
Verify clean main and the d849c4f ancestor, then frame the smallest Commissioner combat leaf. Do not repeat accepted leaves or pay for the broad matrix until the boss contract is bounded.