# 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: 10. **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. 11. **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 `downdraftOfTotal` 0.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. 12. **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: 1. **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. 2. **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). 3. **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). 4. **Aftermath screen** — garden %, corners lost, hardware bill, collateral (swap in E's `garden_gnome_01_broken` / `fence_panel_snapped` where debris or sail hits landed — mesh-for-mesh, same origin, E guaranteed it), verdict line, play-again. 5. Retitle the page (still says M0). Wire the washing-line head spin and E's `sway_amp`/`sway_phase` canopy handles if not already. ## Lane B — water & the last measurement 1. **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. 2. **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. 3. **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 1. 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. 2. 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). A `rain` intensity pass over storm_03 too. 3. Support A on the HUD wiring (rainShadowOver helper, telegraph feed). 4. 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) 1. 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). 2. `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. 3. `fence_panel_snapped_v1.glb` if not already shipped (aftermath screen). 4. 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.