# 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_INSTRUCTIONS.md` (highest N not marked SUPERSEDED) → your own `docs/LANES/LANE__NOTES.md` and any "→ Lane " 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 ` 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/` (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__NOTES.md` (what landed, measured results, contract offers, open questions) and append a dated entry to `docs/progress/-progress.md`. 6. `bash tools/qa.sh` — leave it green. 7. Commit **only your exact paths** (`git add ` — never `git add .` / `-a`), message `[lane X] `, and **push**. ## Rounds - F writes `ROUND_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.