6.9 KiB
SPRINT 4 — FACE & WATER (instructions for Opus 4.8 lanes)
Sprint 3 verdict: gate 3 is met — Lane D closed the §7 loop by hand, on record, with a natural break and a mid-storm repair, and the decision-2 yard makes rig size a real choice (small quads ride at hundreds of newtons; full coverage costs a >45 m² risk, and there's an assert keeping it that way). What the game still doesn't have is a FACE: no HUD, no mouse-driven prep, no forecast or aftermath screens — D rigged via the console. And the anti-flat-sail question now has a ruled path: one re-measurement, then either the downdraft bump or ponding carries it. Sprint 4 gives the game its face and its water.
Read THREADS.md from the last [I] entry — it contains the dispute ruling and decision 10. New decisions:
- Ponding is green-lit, with the time-compression fiat made: game rain accumulates at ~40× real time. The 90 s storm is a night of story (the southerly change "around the hour mark" says so already); a storm therefore delivers a night's water. Lane B owns cloth-side water mass, Lane C owns rain intensity data. B's own numbers: 5 cm on a flat 25 m² sail = 3.1 kN/ corner, and a hypar can't pool — it cannot pincer §7.
- The 60% bar gets ONE re-measurement on real anchors, then we commit.
B re-points §7 to an 18–45 m² quad from the dressed yard, sweeps at ≤0.45
fraction-of-total. Pass → bump storm_02
downdraftOfTotal0.12→0.45, both physics gates close. Fail on real anchors → the bar retires (B's recommendation stands), C's landed values stay, ponding is the anti-flat mechanism. Either outcome is a win; no third sprint on this. - Ladder is Lane D's Sprint 4 sub-system (their deferral was right, and A's fascia anchors — rating_hint 0.35, collateral "gutter" — now exist to give it a reason: fascia repairs happen at height).
Lane A — the face (critical path, carried from Sprint 3)
Everything else this sprint is worthless to a stranger until this lands:
- hud.js — replace the dev overlay: per-corner load bars in kN vs rating
(world-anchored sprites), wind meter + gust telegraph banner, garden HP bar
wired to decision 7 (
skyfx.rainShadowOver, drain ∝ rainAt × (1−shadow) — C offered a combined helper, take it), plant damage-state swaps (plants_full/tattered/dead), phase banner, carried-item chip. - Prep with the mouse — wire B's picking adapter: click anchor markers, click corner to cycle hardware, tension dial, spare purchase, budget $80. Take B's preview-rig offer for live force arrows (DESIGN.md's teaching tool).
- Forecast card — storm summary before you commit: peak wind, gust character, change time, rain. storm_01/02/03 now exist; let the player pick (that's the difficulty select, free).
- Aftermath screen — garden %, corners lost, hardware bill, collateral
(swap in E's
garden_gnome_01_broken/fence_panel_snappedwhere debris or sail hits landed — mesh-for-mesh, same origin, E guaranteed it), verdict line, play-again. - Retitle the page (still says M0). Wire the washing-line head spin and E's
sway_amp/sway_phasecanopy handles if not already.
Lane B — water & the last measurement
- Decision 11 first (an afternoon): re-point §7's twisted rig to a real 18–45 m² quad (A's a.test names the pickable ones), re-run all three legs + the 8-heading 60% sweep at 0.45 and 0.40 ON REAL ANCHORS, post numbers in THREADS, then either bump the storm value or retire the bar. Done forever.
- Ponding v1 (decision 10, you prototyped it): rainAt × 40× accumulation
× per-node flatness → water mass on nodes → weight in step();
pondMass()for the HUD; dump when a corner blows or tension change tips the belly (the dump splash is Lane C's rain system's problem only if they volunteer). Asserts: hypar accumulates ~nothing; flat horizontal rig FAILS storm_02 by ponding alone; pond mass conserves until dumped. - Stability cliff (D's finding): evaluate a per-face force clamp so tn 1.04 degrades instead of exploding 1.2→10 kN in one step. If the clamp changes §7 numbers, say so in THREADS before landing it.
Lane C — rain data & support
- Decision 11 partner: match whatever storm value B's measurement lands on; update validators/comments; your held-value comment in storm_02 gets resolved one way or the other. Delete it with satisfaction.
- Ponding support: make sure
rainAt(t)curves in the three storms tell the ponding story B needs (storm_02's rain should be able to kill a flat rig; storm_01's shouldn't). Arainintensity pass over storm_03 too. - Support A on the HUD wiring (rainShadowOver helper, telegraph feed).
- Night pass (small, optional): storm_02 is "wildnight" — darken it properly, lightning flash on the biggest gusts. The forecast card sells it.
Lane D — the ladder sub-system (decision 12)
Your deferral note was the spec; build it: carry-ladder as a second carry type (hands-full rules interact with the spare — choose, don't stack), placement with a valid-surface test + snap to fascia anchors, code-driven climb height with ClimbLadder playing on top (your knockdown precedent), dismount at the top into a work stance where hold-E fascia repairs work. Then a fascia-corner repair works end to end at height, in wind that's trying to shove you off. Selftest: state-machine legs + a scripted climb-repair-descend run. If A's prep UI lands early, playtest the full loop with mouse+ladder and log feel notes — you're the only lane that plays the game like a player.
Lane E — water & wreckage juice (small)
- Pond visual: a shader-friendly water disc/decal B can scale per pond mass (with the same ride-the-nodes rule as tears — you wrote the recipe).
broom_01.glb(the poke-the-pond tool — DESIGN.md's funniest mechanic arrives next sprint; the prop should be waiting). Reuse Crank/Dig for the poke anim, no new Mixamo needed.fence_panel_snapped_v1.glbif not already shipped (aftermath screen).- Refresh the assembled-yard contact sheet — the yard finally looks like the game; DESIGN.md deserves the new picture.
Gates
gate 1: A-1+A-2 → the game is playable with eyes and mouse, no console
gate 2: decision 11 measurement posted → downdraft question CLOSED forever
gate 3: ponding kills a flat rig in storm_02 (assert + by hand);
full loop playable: forecast pick → mouse prep → storm (repair at
height if fascia) → aftermath with wreckage → play again
Definition of done = gate 3. After this sprint the systems conversation is over and the content one starts: more storms, more sites, the landscaper campaign (DESIGN.md has been waiting).
For John
- Nothing blocks on you. When gate 1 lands, play a round and write three sentences in THREADS about what felt wrong — that note will steer Sprint 5 better than any assert.