guts/docs/LANES/ROUND1_INSTRUCTIONS.md
jing 4ccf5edcc0 [lane F] Round 1 integration + ROUND2 instructions: the game is a game
Wired B's player/combat + event pump, D's assets, C's level pick into boot.
Fixed qa ESM gate (node --check no-op, found by B) + added spline selfcheck.
TECH: world contract FROZEN v1.1, bus events ratified, colorspace + crest-speed
laws (CREST_FACTOR 1.6 — B proved surfing lost to throttle at 1.0). Stub complies.
Verified integrated build via 60s stepped sim: 9 draws, 0 errors, 0 asset misses;
one known gap (fiction-id spawn resolve) confirmed and assigned as B's top item.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 14:39:02 +10:00

98 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# GUTS — Round 1 lane instructions (from Fable, integrator)
> **⚠ SUPERSEDED by [ROUND2_INSTRUCTIONS.md](ROUND2_INSTRUCTIONS.md) (2026-07-16).** Round 1
> is complete (lanes AD landed; E's scope carries into round 2). Historical reference only.
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.