3d-browser-game ยท diff
git:20260906.8f54cb6 to git:20260909.2d8bf92
8 added, 11 removed. Audit A to A.
---
name: 3d-browser-game
description: Build a 3D Three.js browser game through research, playable core gates, Blender production, and evidence-bound acceptance.
disable-model-invocation: true
---
Require: one `brief`, a git-backed `workspace`, and explicit
amendments. The brief and amendments are product authority.
Open one frame and retain its returned frame identity:
tickets.py frame-open <run> --goal-file <program-goal> --workflow 3d-browser-game
Use the frame journal as the handoff ledger. At each wave, copy its typed
`artifact:` or `findings:` entry without summarizing.
**Research and design.** Open the `discovery` helper under the frame. It audits
promises, runs independent research lanes, records capability gaps and
user-only questions verbatim, and freezes the core concept, controls, state
model, traceability, rubric, capture matrix, and performance plan before code.
tickets.py frame-open <run> --goal-file <discovery-goal> --parent <frame> --workflow discovery
tickets.py frame-close <run> <discovery-frame> --done <discovery-check>
**Core implementation.** Open `playable-increment` with the frozen design.
Its I0, I1, and I2 candidates use Three.js primitives or functional
placeholders, ordinary input, readable feedback, and scoped QA/play evidence;
each carries its fixed revision before the next increment.
tickets.py frame-open <run> --goal-file <increment-goal> --parent <frame> --workflow playable-increment
tickets.py frame-close <run> <increment-frame> --done <increment-check>
Open `gameplay-gate` over the fixed I2 revision. It separates QA, adaptive
- play, and maker-independent judgment. A blocked verdict hands its complete
- `findings:` line to one bounded repair `do`, repeats affected QA and play,
- then re-judges; two repair/re-judge rounds bound the local batch. A still
- blocked batch opens one automatic successor with its complaint ledger and
- fixed criteria. `fix` opens the next repair, `redesign` returns to discovery
- with a new concept revision and named invalidations, and `unverified` opens
- missing-evidence acquisition or a capable execution context. Every route
- records findings, evidence, expected improvement, and resume state.
+ play, and maker-independent judgment. This independent core stage
+ uses review-delivery with its selected rounds. Exhaustion returns the best
+ identity, complaint ledger and unresolved evidence; a repair or missing
+ capability never silently opens another review owner. Explicit redesign is
+ new work with named invalidations, not an automatic review reset.
- tickets.py frame-open <run> --goal-file <core-gate-goal> --parent <frame> --workflow gameplay-gate
+ tickets.py frame-open <run> --goal-file <core-gate-goal> --parent <frame> --workflow gameplay-gate --review-new-work "independent core acceptance"
tickets.py frame-close <run> <core-gate-frame> --done <core-gate-check>
**Production and final acceptance.** Only an accepted core identity freezes
mechanics, collision, camera, controls, and timing. Generate and inspect
concept art, then open `blender-asset` jobs for source, render, export,
manifest, GLB, and runtime evidence. Gameplay-changing art invalidates the
affected core verdict. Integrate assets and open `final-acceptance` for play,
captures, performance cells, and independent judgment. Repair cycles preserve
complaint IDs, causes, contrary evidence, and resume state.
- tickets.py frame-open <run> --goal-file <asset-goal> --parent <frame> --workflow blender-asset
+ tickets.py frame-open <run> --goal-file <asset-goal> --parent <frame> --workflow blender-asset --review-new-work "independent asset batch acceptance"
tickets.py frame-close <run> <asset-frame> --done <asset-check>
- tickets.py frame-open <run> --goal-file <final-goal> --parent <frame> --workflow final-acceptance
+ tickets.py frame-open <run> --goal-file <final-goal> --parent <frame> --workflow final-acceptance --review-new-work "independent final acceptance"
tickets.py frame-close <run> <final-frame> --done <final-check>
Close from outside every child only after all children return:
tickets.py frame-close <run> <frame> --done <outside-probe>
Never invent a promise, settle a user-only question silently, fabricate play
or performance, let art bypass core acceptance, relax a score floor, erase a
complaint, mix package revisions, or claim `gaps: []` without observed gate
and outside-probe evidence.
Return: `tickets.py frame-close <run> <frame> --done <outside-probe>`, carrying
the accepted `artifact: git:<full-commit-id>`, evidence-index and gate
identities, outside-probe reading, or the best fixed revision and exact resume
state with every unresolved gap declared.