From 0dba2d889114f94eecf3613057729be1dc6f1da2 Mon Sep 17 00:00:00 2001 From: m3ultra Date: Thu, 16 Jul 2026 23:19:53 +1000 Subject: [PATCH] Add Sprint 2 lane prompts Co-Authored-By: Claude Fable 5 --- LANE_PROMPTS.md | 81 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/LANE_PROMPTS.md b/LANE_PROMPTS.md index 76ac847..bef1a2a 100644 --- a/LANE_PROMPTS.md +++ b/LANE_PROMPTS.md @@ -77,3 +77,84 @@ Lane A starts first; B/C/D/E can start immediately after in parallel > models/debris/. Verify every export by rendering a contact sheet against the > 1.7 m ref capsule (the 3D=models/_thumbnails pattern). Commit script AND > GLBs. Log in THREADS.md. + +--- +--- + +# SPRINT 2 prompts (assembly — fire A/B/C/E together, D at gate 1) + +Same rules: own clone (`~/Documents/shades-lane` on m3ultra), branch `lane/`, +rebase onto latest main FIRST (it moved: all lanes merged + importmap + path +fixes + M3 clip pack). Read THREADS.md from the [I] integrator entries down, +then SPRINT2.md in full — the six decisions at the top are final, stop +re-deciding them. + +## Lane A — Sprint 2 + +> You are Lane A on SHADES 3D, Sprint 2. Rebase onto main, read THREADS.md's +> [I] entries and SPRINT2.md §Lane A. Your sprint IS the assembly: in main.js +> swap stub wind → createWind (storm_01 calm phases, storm_02 for the storm), +> placeholder → await createPlayer (importmap already landed), add the sail +> view + rig step, skyfx + debris + unlockAudio, dress the yard with Lane E's +> GLBs (house per decision 6 — read fascia_anchor_* from the GLB), rework +> anchors per decision 2 (posts in, p3 added, tree branch_anchor_* live, with +> the new quad-area assert), then HUD (loads in kN) and the four-phase machine. +> Post "gate 1" in THREADS.md the moment weather+player+sail are live in the +> yard so Lane D starts. Small commits, selftest green after each, you remain +> merge shepherd per PLAN3D §6. + +## Lane B — Sprint 2 + +> You are Lane B on SHADES 3D, Sprint 2. Rebase onto main, read THREADS.md [I] +> entries and SPRINT2.md §Lane B + decisions 3/4/5. Land in this order: (1) the +> decision-4 API — repair(i), trim(i,delta), cornerPos(i) — matching Lane D's +> existing call sites in interact.js, with contract entries + asserts; (2) +> decision 5 — consume debris.pieces in sail.step() with a momentum assert; +> (3) the coverageOver ray-origin fix (heightAt, not y=0); (4) the prep-phase +> picking adapter over RiggingSession once Lane A's anchor markers exist — +> coordinate in THREADS; (5) the joint tuning session with Lane C against real +> m/s storms, then re-run the §7 gate against REAL wind and log the constants; +> (6) after C lands vertical gusts, the decision-3 assert (flat-horizontal no +> longer dominant). + +## Lane C — Sprint 2 + +> You are Lane C on SHADES 3D, Sprint 2. Rebase onto main, read THREADS.md [I] +> entries and SPRINT2.md §Lane C + decision 3. Land: (1) vertical gust +> component in storm JSON (downdraft fraction, ~0.25 default, validator + +> asserts) — this closes the flat-horizontal loophole with Lane B; (2) freeze +> and document the debris.pieces shape in contracts.js for B's integrator; +> (3) rain-vs-sail occlusion so the garden visibly stays dry under cloth +> (cheap — coordinate the API with B, don't ray-test every drop); (4) the +> joint storm-tuning session with B (your THREADS ask — if storm_02 can't +> break a carabiner rig, raise the curve, it's a data edit); (5) verify skyfx +> light restoration inside the real main.js phase transitions once Lane A +> wires it. + +## Lane D — Sprint 2 (start at gate 1) + +> You are Lane D on SHADES 3D, Sprint 2. Rebase onto main FIRST — the M3 clip +> pack landed: player_anims.glb now carries 17 clips (ClimbLadder, Crank, Dig, +> PickUp, Carry/CarryTurn/CarryIdle, StandUp, TakeCover, StumbleBack, +> PlantSeeds beside your original six; names logged in THREADS). Also note the +> integrator fixed /world/ → ./ relative paths in player.js and dev_player.html. +> Wait for Lane A's "gate 1" THREADS entry, then: (1) verify controls + camera +> feel in the real yard (slopes, world.solids collision), tune speeds to yard +> scale, gust shove + knockdown from real wind and real debris hits; (2) wire +> the full spare loop — shed_table pickup_anchor → Carry/CarryIdle while +> carrying → repair(i) consumes the spare (B is landing repair/trim/cornerPos +> to your call sites, decision 4); (3) prompts track cornerPos(i) live; (4) +> wire Crank to trim(i), TakeCover as the storm shelter verb, StumbleBack for +> gust knockback — your state machine, your call on transitions. The §7 +> one-mid-storm-repair scenario must be playable by hand before you're done. + +## Lane E — Sprint 2 (small) + +> You are Lane E on SHADES 3D, Sprint 2. Rebase onto main, read SPRINT2.md +> §Lane E. Small sprint: (1) canopy sway handles — verify your canopy_* nodes +> sway cleanly when Lane A drives them, add sway_hint props if per-tree tuning +> is needed; (2) a 512² sail cloth weave atlas + tear decal strip so the +> membrane reads as fabric; (3) storm dressing set: wheelie bin (mass_hint), +> washing line, garden gnome — same one-script determinism + contact-sheet +> acceptance; (4) when Lane A's yard is dressed, render a contact sheet of the +> assembled yard from the game camera for DESIGN.md.