# GUTS — Round 1 lane instructions (from Fable, integrator) Date: 2026-07-16 · Repo state: F's round-0 scaffold is committed on `main` — docs complete (README/PROCESS/GDD/TECH/ART_BIBLE/PIPELINE + charters), shell boots the **stub world** (straight pulsing tube, flat shading) with a fly camera, `tools/qa.sh` GREEN. Everything below builds against that scaffold. Read PROCESS.md §A-lane-session before starting. ## Integrator decisions (settled — don't relitigate in-round) 1. **Movement is the flow-locked hybrid** (GDD). **Look is synthetic scanner** (ART_BIBLE). Wireframe-only and full-flesh-realism are both rejected. 2. **The world contract in TECH.md is v1.** Round 1 is its shakedown: A implements it, B consumes it (via stub first). Friction → NOTES immediately; F freezes it at round end. 3. **Level schema v0 in TECH.md is C's to ratify** — C may amend it this round (it's young), but must update the stub's sample level + notify A/B via NOTES in the same session. 4. **No mesh generation this round** (D). Textures + audio proof first; hero meshes need C's boss specs and concept sign-off (round 2). Exception: sf3d drafts to *test* the concept loop are fine (free, seconds). 5. **Vertical slice target = level 2 (esophagus)**, not level 1: the tube is the core tech risk and the esophagus is the purest tube. Mouth/arena tutorial comes after the spine works. Round 2 goal: fly the esophagus with 2 enemy types, HUD live, textured walls. 6. Dev port **8140**; evidence law and exact-path git staging are in force everywhere. ## Lane A — the canal, v0 Build `js/world/` per your charter, priority order: 1. Spline + parallel-transport frames + arclength LUT from level JSON (consume `js/levels/L2_esophagus.json`; the stub's inline level shows the shape). Seeded, and `world.hash()` + selfcheck wired for qa. 2. Chunked tube geometry with (s,θ) UVs, streaming window, dispose-clean (cite renderer.info deltas in NOTES). 3. Wall ShaderMaterial: biome tint + fresnel rim + fog (flat-tint fallback path — D's textures may land mid-round; integrate via `assets.get` if present). 4. Peristalsis vertex displacement + `world.flowPulse(s,t)` JS mirror. 5. `?fly=1` noclip camera. Screenshot set: esophagus straights, curves, a wave crest. Stretch: stomach arena icosphere v0. Don't touch: player, HUD, levels' content values. ## Lane B — flight + first blood, on the stub Work entirely against `?stub=1` (contract-identical); swap to A's world late in the round if it's landed, but **don't block on A**. 1. `createPlayer`: tube-mode controller (s,x,y), mouse+WASD+gamepad, banking chase cam, boost + i-frames, wall-graze damage + shove. Feel numbers documented in NOTES. 2. Weapons: lysozyme cannon (pooled, instanced, heat) + hit tests vs sphere targets. 3. Enemy framework + 3 archetypes (floater/seeker/turret) as emissive primitives, spawned from `level:event` (the stub level includes sample spawns; C's L2 JSON is your real feed). 4. Damage/coat model + all bus emissions per TECH §Bus (E builds against these — emit faithfully even with no listener). Evidence: capture or screenshot sequence + DBG numbers. Arena-mode controller = round 2. ## Lane C — GDD ownership + the data spine 1. Ratify/amend level schema v0 (TECH.md) — you own it from now; sync stub sample + NOTES. 2. `js/levels/index.js` registry + headless selfcheck (qa.sh already calls `node js/levels/index.js --selfcheck` — make it real). 3. **`L2_esophagus.json` complete** (the vertical-slice level): segments, flow, encounter curve with B's three archetypes, reflux-surge finale as a `hazard` event, checkpoints, par time. Fly it on the stub; pacing notes in NOTES. 4. Draft `L1_mouth.json` + `L3_stomach.json` skeletons (biomes/lengths/arenas only). 5. **Boss specs** (Pyloric Guardian, Tapeworm, Blockage) as one-pagers in your NOTES — phases/telegraphs/windows — so A can shape lairs and D can concept in round 2. ## Lane D — pipeline online + first texture pack + audio proof On the m3ultra box (clone the repo there; PIPELINE.md has the verified operator map): 1. Port PROCITY's script shapes: `gen_textures.py` (--dry-run/--local/--harvest), `derive_maps.py`, `build_manifest.py`, `validate_manifest.py`. 2. **First pack:** esophagus ×2, stomach ×2, small-intestine ×2 walls (grayscale, tiling, ART_BIBLE prompts) + 1 wet-tissue matcap → normals → WebP → manifest. Contact sheet + in-engine stub screenshots to `docs/shots/laneD/`. 3. `js/core/assets.js` per the manifest contract (null-on-miss, `?localassets=0`). 4. **Audio proof (small):** port `gen_audio.py` shape; synthesize 1 esophagus bed (loop- clean) + 4 sfx (pellet, hit-squelch, boost, pickup). Spectrogram evidence. Full pack = round 2. ## Lane E — instrument panel v0 1. HUD overlay (DOM/canvas): coat/hull bars, heat, speed/flow, score — bus-driven only, against B's emissions (they land this round; stub-emit fake events for dev via a `?fakebus=1` helper you own). 2. **Gut-map v1**: draw the alimentary silhouette once (SVG path), show it as progress bar with player blip. This is the game's signature UI — spend the taste budget here. 3. Title screen (over the stub drift) + pause + respect `?shots=1`/`?mute=1`. 4. `js/audio/engine.js`: bed crossfade + sfx pool + autoplay unlock + **procedural fallback beeps** (D's pack may land mid-round; handle both paths). Screenshots of every state to `docs/shots/laneE/`. ## Lane F (Fable) — done in round 0, then on-call Scaffold committed. During the round: answer contract questions in NOTES daily-ish; end of round: boot matrix, verify evidence, freeze world contract, write ROUND2. ## Round-2 preview (so you can aim): textured esophagus slice playable start-to-finish — A's world + B's flight/enemies + C's L2 + D's pack + E's HUD, integrated by F, tagged v0.2.