guts/docs/PROCESS.md
jing 34f84ab162 [lane F] Round 0 scaffold: docs, contracts, lane charters, bootable stub world
GDD v1 (flow-locked hybrid movement, 5 biomes + secret, boss roster),
TECH contracts (world API, level schema v0, bus events, manifest law),
ART_BIBLE (synthetic scanner look), PIPELINE (MODELBEAST-first, fal gated),
PROCESS (PROCITY lane/round law), charters A-F + ROUND1 instructions.
Seed code: shell + boot + core (rng/bus/flags) + stub world (peristalsis
shader tube, 1 draw / 102k tris, contract-complete) + qa.sh (GREEN).
Verified in-browser; evidence docs/shots/laneF/round0_stub_tube.png.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 01:28:35 +10:00

57 lines
3.6 KiB
Markdown

# PROCESS — lanes, rounds, and how not to step on each other
This repo is built by parallel Claude sessions ("lanes"), each with a fixed territory,
coordinated in numbered rounds by an integrator (Fable, = Lane F). The workflow is inherited
from PROCITY, where it shipped a whole town in 12 rounds — follow it exactly.
## The cast
| lane | territory | charter |
|---|---|---|
| **A — World** | canal geometry, biome shaders, arenas | [LANE_A_WORLD.md](LANES/LANE_A_WORLD.md) |
| **B — Flight & Combat** | controls, collision response, weapons, enemies | [LANE_B_FLIGHT.md](LANES/LANE_B_FLIGHT.md) |
| **C — Levels & Encounters** | level data, encounter design, bosses, pacing | [LANE_C_LEVELS.md](LANES/LANE_C_LEVELS.md) |
| **D — Assets** | FLUX textures, GLB meshes, audio pack, manifest | [LANE_D_ASSETS.md](LANES/LANE_D_ASSETS.md) |
| **E — UI/HUD/Audio-engine** | HUD, menus, gut-map, WebAudio engine | [LANE_E_UIHUD.md](LANES/LANE_E_UIHUD.md) |
| **F — Integration** (Fable) | shell (`index.html`, `boot.js`), core/, contracts, QA, round instructions | [LANE_F_INTEGRATION.md](LANES/LANE_F_INTEGRATION.md) |
## A lane session, step by step
1. Read, in order: `README.md``docs/TECH.md` → your lane charter → the **current**
`docs/LANES/ROUND<N>_INSTRUCTIONS.md` (highest N not marked SUPERSEDED) → your own
`docs/LANES/LANE_<X>_NOTES.md` and any "→ Lane <X>" sections in the other lanes' NOTES.
2. `git pull` first. Check `git status`; if another lane's uncommitted work is present, touch
nothing of theirs.
3. Do the round's work **inside your territory only** (ownership map in TECH.md §Ownership).
If you need a change in someone else's file, write the request in your NOTES under a
`### → Lane <X>` heading (include exact code if you can — see PROCITY LANE_B_NOTES for the
house style: offer the wiring, let the owner paste it).
4. Evidence: screenshots into `docs/shots/lane<x>/` (use `?shots=1` for clean frames). For
audio: spectrogram sheet + numeric loop-seam check. Numbers you claim (draw calls, fps,
gen-times) must be **measured**, and say how you measured them.
5. Update `docs/LANES/LANE_<X>_NOTES.md` (what landed, measured results, contract offers,
open questions) and append a dated entry to `docs/progress/<x>-progress.md`.
6. `bash tools/qa.sh` — leave it green.
7. Commit **only your exact paths** (`git add <file> <file>` — never `git add .` / `-a`),
message `[lane X] <what>`, and **push**.
## Rounds
- F writes `ROUND<N>_INSTRUCTIONS.md` after reviewing all lanes' NOTES + progress + shots.
Old round files get a `⚠ SUPERSEDED` banner — never action a superseded round.
- Rounds are sized so a lane session finishes comfortably in one context window. If you're
running long: land what's solid, document the rest as "next round" in NOTES, push.
- Blocked on another lane? Build against the **stub** (`?stub=1`, `js/stub/world_stub.js`)
or the contract in TECH.md; never idle-wait, never implement the other lane's side.
- Integrator decisions in round instructions are **settled** — don't relitigate in-lane;
argue in NOTES for next round if you must.
## Git specifics
- Remote: `ssh://git@100.71.119.27:222/monster/guts.git`, single branch `main`.
- Lanes may share one working tree (PROCITY style) or run from separate clones — either way
the exact-path staging rule and pull-before-work rule are what keep it safe.
- Generated artifacts that are re-derivable (raw gen output, staging GLBs, WAV scratch) are
git-ignored; shipped assets (`web/assets/**` webp/ogg/m4a/glb) are committed. See
`.gitignore` + PIPELINE.md §Artifacts.