479 lines
26 KiB
Markdown
479 lines
26 KiB
Markdown
# Lane launch prompts (Opus 4.8, run on the M1 Ultra)
|
||
|
||
Per lane: clone `git@gitea.partly.party:monster/shades.git` to
|
||
`~/Documents/shades-lane<X>`, branch `lane/<x>`, paste the prompt.
|
||
Lane A starts first; B/C/D/E can start immediately after in parallel
|
||
(they develop against contracts + selftest mocks until A's M0 merges).
|
||
|
||
---
|
||
|
||
## Lane A — world, shell & integration
|
||
|
||
> You are Lane A on SHADES 3D. Read PLAN3D.md fully (you own §5 Lane A), then
|
||
> DESIGN.md, then play prototype/ (`python3 -m http.server 8642 --directory
|
||
> prototype`). Build the M0 skeleton exactly per PLAN3D §3/§4/§5-A: vendored
|
||
> three.js copied from ~/Documents/90sDJsim/web/world/vendor/, stdlib server.py
|
||
> on 8801, contracts.js, graybox 30×20 m yard with house edge/trees/posts/garden
|
||
> bed, third-person camera, sun lighting, selftest.html harness. Merge M0 to
|
||
> main as fast as possible — every other lane rebases on you. Then build the HUD
|
||
> against mock data, and act as merge shepherd per PLAN3D §6. Log every landing
|
||
> in THREADS.md.
|
||
|
||
## Lane B — sail simulation & rigging
|
||
|
||
> You are Lane B on SHADES 3D. Read PLAN3D.md fully (you own sail.js +
|
||
> rigging.js, §5 Lane B), DESIGN.md §geometry/§hardware, and prototype/game.js —
|
||
> your job is the faithful 3D port of its cloth/load/failure behavior. Build the
|
||
> 3D verlet cloth with per-FACE wind pressure (F ∝ area·dot(wind,normal)²) so
|
||
> hypar twist genuinely sheds load — prove it with the selftest assert (twisted
|
||
> rig peak load < flat rig peak load in the same storm). Corner load = smoothed
|
||
> incident-spring stretch; break after 0.4 s sustained overload; flogging must
|
||
> be emergent from the freed node. Then the prep-phase rigging UI with the
|
||
> prototype's economy. Until Lane A's M0 merges, develop inside selftest.html
|
||
> with a stub wind function; keep every module deterministic (dt,t in — no
|
||
> Date.now, no rAF in sim code). Log in THREADS.md.
|
||
|
||
## Lane C — weather, sky & debris
|
||
|
||
> You are Lane C on SHADES 3D. Read PLAN3D.md fully (you own weather.js,
|
||
> skyfx.js, debris.js, data/storms/, §5 Lane C) and prototype/game.js's gust
|
||
> scheduler — port its telegraph/ramp/hold/fade shape. Implement
|
||
> wind.sample(pos,t) per contracts.js: base curve + gusts + direction change +
|
||
> spatial noise + tree wind-shadow. Storms are data (JSON, PLAN3D §4) — author
|
||
> storm_01_gentle and storm_02_wildnight. Then instanced rain following local
|
||
> wind, storm sky + lightning flash, WebAudio layers (wind bed, gust whoosh,
|
||
> rope creak keyed to max corner load, flog when broken), and hand-rolled
|
||
> debris (crates/tubs from models/debris/) with player knockdown + sail impulse.
|
||
> No physics engine, no deps. Selftest: telegraph lead ≥1.2 s, wind continuity,
|
||
> storm JSON validator. Log in THREADS.md.
|
||
|
||
## Lane D — player character & interaction
|
||
|
||
> You are Lane D on SHADES 3D. Read PLAN3D.md fully (you own player.js +
|
||
> interact.js, §5 Lane D) and 90sDJsim's DEVMANUAL rigged-characters section
|
||
> (~/Documents/90sDJsim/DEVMANUAL.md) — its loading rules are law
|
||
> (SkeletonUtils.clone, head-bone height normalize, never blind setScalar).
|
||
> Copy a ped from ~/Documents/90sDJsim/web/world/models/peds/ into models/
|
||
> (copies rule), merge Walk/Running/Happy Idle clips via ~/Documents/
|
||
> character_kit/ pipeline; queue Climbing Ladder / crank / dig on the
|
||
> ~/Documents/mixamo-fetch wishlist for M3. Camera-relative WASD + anim state
|
||
> machine, wind slow/shove/knockdown per PLAN3D, and hold-E interactions via
|
||
> interact.register (re-rig with spare 2.5 s, per-corner turnbuckle trim 1.2 s,
|
||
> carry-one-item from shed table). Selftest: state machine table test. Log in
|
||
> THREADS.md.
|
||
|
||
## Lane E — nature & hardware assets (Blender)
|
||
|
||
> You are Lane E on SHADES 3D. Read PLAN3D.md fully (you own tools/blender/ +
|
||
> models/, §5 Lane E). Study the house Blender-scripting idiom in
|
||
> ~/Documents/3D-STORE/build_booth_room_v23.py and racks_to_glb.py, then write
|
||
> ONE deterministic tools/blender/build_yard_assets.py that generates every
|
||
> deliverable in PLAN3D §5-E (gum trees with named canopy/branch_anchor nodes,
|
||
> fence set, house_yardside with fascia_anchor empties, shed + table, garden
|
||
> bed with 3 damage states, raked sail post, ladder, close-up shackle/
|
||
> carabiner/turnbuckle, ref_capsule) and exports meter-scale Y-up GLBs, <15 k
|
||
> tris, low-poly stylized to sit beside the 90sDJsim ped fleet. Also copy +
|
||
> scale-check the debris set from ~/Documents/3D-STORE/clean_glbs/ into
|
||
> 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<X>` on m3ultra), branch `lane/<x>`,
|
||
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.
|
||
|
||
---
|
||
---
|
||
|
||
# SPRINT 3 prompts (the game loop — fire all five; B+C pair on item 1)
|
||
|
||
Same rules: own clone, own branch, rebase onto latest main FIRST (Sprint 2 is
|
||
merged; main.js passes debris into rig.step; downdraft data reverted to 0.3
|
||
with B's assert self-skipping — THREADS' last [I] entry explains why). Read
|
||
SPRINT3.md in full; decisions 7/8/9 are made.
|
||
|
||
## Lane A — Sprint 3
|
||
> You are Lane A on SHADES 3D, Sprint 3. Rebase onto main, read SPRINT3.md
|
||
> §Lane A. Priority 1 is world.shedTable (unblocks D, ~15 lines). Then the
|
||
> decision-2 anchor rework with the quad-area assert, the playable prep phase
|
||
> (wire B's picking adapter, take their preview-rig force-arrows offer), the
|
||
> HUD (kN bars, telegraph, garden HP via skyfx.rainShadowOver per decision 7,
|
||
> plant damage-state swaps), forecast card + aftermath screen (score the gnome),
|
||
> and finish the yard dressing with E's GLBs and sway handles. Retitle the page.
|
||
> Merge shepherd duties continue. Small commits, selftest green after each.
|
||
|
||
## Lane B — Sprint 3
|
||
> You are Lane B on SHADES 3D, Sprint 3. Rebase onto main and read SPRINT3.md
|
||
> §B+C and THREADS' last [I] entry — the integrator measured that gust-only
|
||
> downdraft cannot satisfy your 60% bar and §7 together (0.45→42% + twisted
|
||
> loses a corner; 0.58→48% + still loses one), so decision 8 adopts your
|
||
> fraction-of-TOTAL semantics. Pair with C in THREADS: when their weather.core
|
||
> change lands, re-run your 8-direction sweep, delete the <0.5 self-skip from
|
||
> your decision-3 assert, and confirm all three §7 legs on the SAME storm JSON.
|
||
> Log final constants. Then sail UVs with E's sail_weave.png per their recipe.
|
||
> Also: A may take your preview-rig offer for prep force arrows — support them.
|
||
|
||
## Lane C — Sprint 3
|
||
> You are Lane C on SHADES 3D, Sprint 3. Rebase onto main and read SPRINT3.md
|
||
> §B+C and THREADS' last [I] entry. Decision 8: change weather.core downdraft
|
||
> to a fraction of TOTAL wind speed (keep the own-RNG determinism guarantee,
|
||
> keep speedAt() horizontal, update the validator; rename the JSON field if the
|
||
> semantics warrant it), then pair with B to land values where their 60% bar
|
||
> AND the §7 gates are green on the same data. Retune storm_01/storm_02, and
|
||
> author storm_03 between them so the campaign has a ramp. Decision 7 landed
|
||
> garden HP on your rainShadowOver — coordinate the API with A as they wire it.
|
||
|
||
## Lane D — Sprint 3
|
||
> You are Lane D on SHADES 3D, Sprint 3. Rebase onto main, read SPRINT3.md
|
||
> §Lane D. The moment A posts world.shedTable in THREADS: close the §7 loop BY
|
||
> HAND — pickup → carry through gusts (brace when needed) → hold-E repair →
|
||
> ≥3/4 corners at storm end — and RECORD the run (SHADES.step + screenshots);
|
||
> that artifact is the sprint's definition of done. Retune stumble/knockdown
|
||
> thresholds against real storm_02 gusts now that the downdraft is live.
|
||
> Stretch: the ladder loop (carry, place, ClimbLadder to fascia anchors) —
|
||
> flag early in THREADS if it's bigger than the sprint.
|
||
|
||
## Lane E — Sprint 3
|
||
> You are Lane E on SHADES 3D, Sprint 3. Rebase onto main, read SPRINT3.md
|
||
> §Lane E. Small juice pass: tear-decal hookup recipe for B (like your weave
|
||
> recipe), broken-gnome + snapped-fence-panel variants for the aftermath
|
||
> screen, and refresh the assembled-yard contact sheet once A's dressing lands.
|
||
|
||
---
|
||
---
|
||
|
||
# SPRINT 4 prompts (face & water — fire all five)
|
||
|
||
Same rules: own clone, own branch, rebase onto latest main FIRST (Sprint 3
|
||
merged; yard has 11 anchors incl. branch anchors; gate 3 was met by hand).
|
||
Read THREADS' last [I] entry (the dispute ruling) then SPRINT4.md — decisions
|
||
10/11/12 are made.
|
||
|
||
## Lane A — Sprint 4
|
||
> You are Lane A on SHADES 3D, Sprint 4. Rebase onto main, read SPRINT4.md
|
||
> §Lane A — you are the critical path and it's all UI: hud.js (kN corner bars,
|
||
> telegraph, garden HP via rainShadowOver with C's helper, plant damage swaps),
|
||
> mouse-driven prep via B's picking adapter + their force-arrow preview offer,
|
||
> the forecast card (three storms exist — picking one is the difficulty
|
||
> select), the aftermath screen with E's wreckage swaps (broken gnome, snapped
|
||
> fence), and retitle the page. Small commits, selftest green, merge shepherd
|
||
> as always. Gate 1 is A-1+A-2: playable with eyes and mouse, no console.
|
||
|
||
## Lane B — Sprint 4
|
||
> You are Lane B on SHADES 3D, Sprint 4. Rebase onto main, read THREADS' last
|
||
> [I] ruling and SPRINT4.md §Lane B. Decision 11 first, one afternoon: re-point
|
||
> §7's twisted rig to a real 18-45 m² quad from A's dressed yard, re-run the
|
||
> three §7 legs + the 8-heading 60% sweep at 0.45 and 0.40 on REAL anchors,
|
||
> post the numbers, then either bump storm_02 downdraftOfTotal to the passing
|
||
> value or retire the bar — no third sprint on this. Then ponding v1 per
|
||
> decision 10 (the 40× rain fiat is made): accumulation × flatness → node
|
||
> water mass → weight; pondMass() for the HUD; dump on corner break; asserts
|
||
> that a hypar pools nothing and a flat rig dies of water in storm_02. Then
|
||
> evaluate a per-face force clamp for D's tn-1.04 stability cliff.
|
||
|
||
## Lane C — Sprint 4
|
||
> You are Lane C on SHADES 3D, Sprint 4. Rebase onto main, read SPRINT4.md
|
||
> §Lane C. Partner B on decision 11 (match the landed storm value, resolve your
|
||
> held-value comment in storm_02 with satisfaction). Make the three storms'
|
||
> rainAt curves tell the ponding story (storm_02 can kill a flat rig by water,
|
||
> storm_01 can't). Support A's HUD (the rainShadowOver drain helper you
|
||
> offered, telegraph feed). Optional night pass: darken wildnight properly,
|
||
> lightning on the biggest gusts.
|
||
|
||
## Lane D — Sprint 4
|
||
> You are Lane D on SHADES 3D, Sprint 4. Rebase onto main, read SPRINT4.md
|
||
> §Lane D — decision 12 green-lights your ladder spec exactly as you wrote it:
|
||
> carry-ladder as a second carry type with hands-full rules, placement with a
|
||
> valid-surface test + fascia-anchor snap, code-driven climb height with
|
||
> ClimbLadder on top, work stance at height where hold-E fascia repairs land
|
||
> in shoving wind. Selftest the state legs + a scripted climb-repair-descend.
|
||
> When A's prep UI lands, playtest the whole loop like a player and log feel
|
||
> notes in THREADS — you're the only lane that does.
|
||
|
||
## Lane E — Sprint 4
|
||
> You are Lane E on SHADES 3D, Sprint 4. Rebase onto main, read SPRINT4.md
|
||
> §Lane E. Small water-and-wreckage pass: pond water disc/decal that rides the
|
||
> sim nodes (your tear recipe pattern) scalable by pond mass, broom_01.glb
|
||
> (the prop waits for the mechanic), fence_panel_snapped if not shipped, and
|
||
> refresh the assembled-yard contact sheet for DESIGN.md — the yard finally
|
||
> looks like the game.
|
||
|
||
---
|
||
---
|
||
|
||
# SPRINT 5 prompts (hail & the broom — fire all five)
|
||
|
||
Same rules: own clone, own branch, rebase onto latest main FIRST (Sprint 4
|
||
merged; router passes rain data; downdraftOfTotal 0.45; decision 13 ruled).
|
||
Read THREADS' last [I] entry then SPRINT5.md.
|
||
|
||
## Lane A — Sprint 5
|
||
> You are Lane A on SHADES 3D, Sprint 5. Rebase onto main, read SPRINT5.md
|
||
> §Lane A. Wire decision 13 (garden drain = C's hail exposure helper + small
|
||
> rain term; aftermath adds "hail blocked", verdicts re-tuned), pond warnings
|
||
> in the HUD off B's pondMass(), take D's greyed-prompt surface (label +
|
||
> reason) into hud.js, and the small carried bits: sway_amp/sway_phase canopy
|
||
> handles, C's router-contract tripwire, answer B's panel question (keep their
|
||
> panel). Keep 60 fps with hail + rain + ponding live. Shepherd as always.
|
||
|
||
## Lane B — Sprint 5
|
||
> You are Lane B on SHADES 3D, Sprint 5. Rebase onto main, read SPRINT5.md
|
||
> §Lane B — the water arc has been carried twice and everything now waits on
|
||
> it. Ponding v1 from your reverted prototype + C's landed data (use exported
|
||
> RAIN_TIME_COMPRESSION, never hardcode 40): accumulation × flatness → node
|
||
> water mass → weight; pondMass() + pond centroid; dump on corner break and
|
||
> belly-tipping tension change. Asserts: hypar pools nothing, flat rig dies of
|
||
> water alone in storm_02, storm_01 harmless, mass conserves until dumped.
|
||
> Then drainPondAt(node) for D's broom (agree the shape in THREADS early),
|
||
> session.reset() for A, and the tn-1.04 stability clamp (post §7 deltas
|
||
> before landing).
|
||
|
||
## Lane C — Sprint 5
|
||
> You are Lane C on SHADES 3D, Sprint 5. Rebase onto main, read SPRINT5.md
|
||
> §Lane C — hail is yours and it's decision 13's engine. Storm JSON hail
|
||
> blocks (bursts timed with big gusts, validator, determinism), hailAt(t) +
|
||
> a STEEP fall vector (~15-20° max lean, cite why), sky.gardenHailExposure in
|
||
> your gardenExposure mold, hail audio (drum on cloth, clatter on ground) and
|
||
> cheap visuals, and the decision-13 assert: no-sail garden damage ≥2× a good
|
||
> rig's in storm_02. storm_02 gets its burst at the change; storm_03 mild;
|
||
> storm_01 none.
|
||
|
||
## Lane D — Sprint 5
|
||
> You are Lane D on SHADES 3D, Sprint 5. Rebase onto main, read SPRINT5.md
|
||
> §Lane D — the broom is yours and it's the gate: take broom (hands-full rules
|
||
> vs spare/ladder), walk under the belly, hold-E poke (Crank/Dig per E's
|
||
> anim_hint) → B's drainPondAt() → the water dumps ON YOU (stagger if big —
|
||
> comedy is the point) and the sail springs back. Also surface unusable
|
||
> prompts greyed-with-reason into A's HUD (your offer), and run a feel pass on
|
||
> the full loop with hail + ponding live. Log everything in THREADS.
|
||
|
||
## Lane E — Sprint 5
|
||
> You are Lane E on SHADES 3D, Sprint 5. Rebase onto main, read SPRINT5.md
|
||
> §Lane E. Small juice pass: hail impact pips + ground ring decal
|
||
> (instanced-friendly, stone mesh only if C asks), plant-shred particle puff
|
||
> for hail hits on the bed, and the carried contact-sheet refresh (night +
|
||
> daylight) for DESIGN.md.
|
||
|
||
---
|
||
---
|
||
|
||
# SPRINT 6 prompts (winnable, then a week of nights)
|
||
|
||
Same rules: own clone, own branch, rebase onto latest main FIRST (Sprint 5
|
||
merged; decision 13 wired with integration-guess weights; the balance gap is
|
||
measured in THREADS' last [I] entry). Gate 1 is JOINT and comes first.
|
||
|
||
## Lane A — Sprint 6
|
||
> You are Lane A on SHADES 3D, Sprint 6. Rebase onto main, read THREADS' last
|
||
> [I] (the balance numbers) and SPRINT6.md. Gate 1 first, jointly with B+C:
|
||
> your levers are the drain weights in main.js, possibly ONE new close anchor
|
||
> for a bed-covering small quad (re-run your own smallest-full-coverage assert
|
||
> after), and verdict truthfulness (a 4/4 clean hold must never read "you
|
||
> skimped"). Then gate 2, the week: five escalating nights, money persists,
|
||
> broke = game over, survive = win screen, "play again" becomes "next night".
|
||
> Also: lift E's screenshot POST into server.py (delete tools/yardshot/),
|
||
> decide the grass atlas (take the recipe or delete it), and land the pond
|
||
> ticker + hail banner if Sprint 5 didn't. Shepherd as always.
|
||
|
||
## Lane B — Sprint 6
|
||
> You are Lane B on SHADES 3D, Sprint 6. Rebase onto main, read THREADS' last
|
||
> [I] and SPRINT6.md. You hold the pen on balance.test.js: for each storm, an
|
||
> enumerable $80 REAL-shop loadout on an in-band quad must end hp≥50 with <2
|
||
> corners lost — and storm_02's line must genuinely need the repair or the
|
||
> broom (assert it fails without them). Then fabric choice in prep: porous
|
||
> shade cloth vs waterproof membrane (porosity exists in the sim) — agree the
|
||
> hail-vs-porosity rule with C in THREADS before coding, price the tradeoff.
|
||
> And post D the typical storm_02 belly-pond mass for their douse tuning.
|
||
|
||
## Lane C — Sprint 6
|
||
> You are Lane C on SHADES 3D, Sprint 6. Rebase onto main, read THREADS' last
|
||
> [I] and SPRINT6.md. Gate 1 partner: downdraft (0.40 also passes both physics
|
||
> gates per your own sweep) and hail-burst data are your levers. Then author
|
||
> the week's two storm variants (same JSON language, one new trick each) and
|
||
> forecast uncertainty: the card shows seeded ± ranges that resolve as the
|
||
> night approaches — DESIGN.md's partial-information canon, cheaply.
|
||
|
||
## Lane D — Sprint 6
|
||
> You are Lane D on SHADES 3D, Sprint 6. Rebase onto main, read SPRINT6.md.
|
||
> Calibrate the douse comedy to B's real pond masses (thresholds vs ~450 kg
|
||
> belly ponds), then play the balanced storms end to end as gate 1 lands and
|
||
> file feel notes in THREADS before it ships — you are the playtest lane, and
|
||
> after gate 2 you play the whole week.
|
||
|
||
## Lane E — Sprint 6
|
||
> You are Lane E on SHADES 3D, Sprint 6. Rebase onto main, read SPRINT6.md.
|
||
> Night dressing for the week's later storms (moon, lit house window),
|
||
> win-screen and game-over cards that feel like SHADES, and refresh the
|
||
> contact sheets once the balance pass lands.
|
||
|
||
---
|
||
---
|
||
|
||
# SPRINT 7 prompts (one truth, then the week)
|
||
|
||
Same rules: own clone, own branch, rebase onto latest main FIRST. Read THREADS'
|
||
last [I] entry (the harness dispute) then SPRINT7.md. Gate 0 is A+B jointly
|
||
and NOTHING else lands before it.
|
||
|
||
## Lane A — Sprint 7
|
||
> You are Lane A on SHADES 3D, Sprint 7. Rebase onto main, read THREADS' last
|
||
> [I] and SPRINT7.md. Gate 0 first, paired with B on balance.test.js: reproduce
|
||
> your hp-58 win there or find why it doesn't (tension? repair timing? drain
|
||
> path?) — post the cause like B post-mortemed decision 11, delete the
|
||
> integrator skip. Then gate 1, the week: five nights (C's icenight is night
|
||
> five), persistent money, broke = game over, survive = E's win card with your
|
||
> text. Wire window_glow + moon for the night storms. Close the carried grass
|
||
> and screenshot-POST decisions — do them or write "won't do".
|
||
|
||
## Lane B — Sprint 7
|
||
> You are Lane B on SHADES 3D, Sprint 7. Rebase onto main, read THREADS' last
|
||
> [I] and SPRINT7.md. Gate 0 first, paired with A on balance.test.js — your
|
||
> suite is the single truth now; make it reproduce or refute A's win, name the
|
||
> cause. Then fabric choice per C's ruling: honest pricing + stone-size hail
|
||
> pass-through (ask C for hailBlockFor), fabric economics posted in THREADS
|
||
> before UI so A can slot prep.
|
||
|
||
## Lane C — Sprint 7
|
||
> You are Lane C on SHADES 3D, Sprint 7. Rebase onto main, read SPRINT7.md.
|
||
> Land hailBlockFor(size, porosity) when B asks; forecast uncertainty bands
|
||
> (carried — seeded ±, resolving toward the real numbers as the night nears);
|
||
> stand by on gate 0 in case the drain-wiring path is the discrepancy.
|
||
|
||
## Lane D — Sprint 7
|
||
> You are Lane D on SHADES 3D, Sprint 7. Rebase onto main, read SPRINT7.md.
|
||
> When gate 0 closes: the feel pass on the final balanced storms — it's the
|
||
> last read before John plays the week — plus the douse re-measure if pond
|
||
> masses moved (your guard assert is the tripwire). Until then, hold.
|
||
|
||
## Lane E — Sprint 7
|
||
> You are Lane E on SHADES 3D, Sprint 7. Rebase onto main, read SPRINT7.md.
|
||
> Light sprint: card text pass with A once the week exists, a dawn tint for
|
||
> the morning-after aftermath if cheap. You've earned the short one.
|
||
|
||
---
|
||
---
|
||
|
||
# SPRINT 8 prompts (ship the week)
|
||
|
||
Same rules: own clone, own branch, rebase onto latest main FIRST. Read THREADS'
|
||
last [I] entry then SPRINT8.md. Gate 0' is B+D's this time — A builds the week
|
||
uninterrupted.
|
||
|
||
## Lane A — Sprint 8
|
||
> You are Lane A on SHADES 3D, Sprint 8. Rebase onto main, read SPRINT8.md.
|
||
> THE WEEK, uninterrupted, from day one — it has slipped twice and it ships
|
||
> this sprint: five nights (01→03→03b→02→02b), persistent money (pay = base by
|
||
> severity + garden bonus + hardware refund − collateral), broke = game over,
|
||
> survive = win card. E's cards, words, and dawn-tint CSS are all on disk.
|
||
> "Play again" becomes "next night". Close the carried grass-atlas and
|
||
> screenshot-POST decisions — do or "won't do" in THREADS. You answer gate-0'
|
||
> questions but you do not work it. If gate 0' outcome B lands (the pyrrhic
|
||
> win), you rule on the win wording as part of the week's scoring.
|
||
|
||
## Lane B — Sprint 8
|
||
> You are Lane B on SHADES 3D, Sprint 8. Rebase onto main, read THREADS' last
|
||
> [I] and SPRINT8.md. Gate 0' with D: three candidate variables, in order —
|
||
> settle under LIVE calm wind with sway running (not t=0 held), frozen vs live
|
||
> sway re-measured settled, repair timing at a real walk. Stop at the first
|
||
> that flips the corner count; land D's settled-at-entry guard; post numbers
|
||
> either way. If the live game honestly loses 2, say so and hand the win rule
|
||
> to A as the pyrrhic-win design question. Then: fabric economics post +
|
||
> prep-UI slot with A (C's hailBlockFor is landed on their branch).
|
||
|
||
## Lane C — Sprint 8
|
||
> You are Lane C on SHADES 3D, Sprint 8. Rebase onto main, read SPRINT8.md.
|
||
> Forecast uncertainty bands (carried twice — the week gives you five
|
||
> forecasts to make them matter on); move your skyfx camera guard below the
|
||
> shadow rebuild so headless callers can never fly a cloth-less yard again.
|
||
|
||
## Lane D — Sprint 8
|
||
> You are Lane D on SHADES 3D, Sprint 8. Rebase onto main, read THREADS' last
|
||
> [I] and SPRINT8.md. Gate 0' with B — your settle finding is one fidelity
|
||
> step from closing the repo's longest thread; drive the suite the way a
|
||
> player drives the game (live calm settle, real repair walk timing) and land
|
||
> your settled-at-entry guard. Then the full-week feel pass — the last read
|
||
> before John plays.
|
||
|
||
## Lane E — Sprint 8
|
||
> You are Lane E on SHADES 3D, Sprint 8. Rebase onto main, read SPRINT8.md.
|
||
> Light: support A's five aftermath cards as the week wires them. That's it —
|
||
> your tripwires, cards, words and dawn tint from Sprint 7 are all being
|
||
> consumed this sprint.
|