HardYards/SPRINT4.md
m3ultra 5d8264f13f Add Sprint 4 plan and lane prompts: face and water
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-17 02:03:47 +10:00

6.9 KiB
Raw Permalink Blame History

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:

  1. 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.
  2. The 60% bar gets ONE re-measurement on real anchors, then we commit. B re-points §7 to an 1845 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.
  3. 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 × (1shadow) — 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 1845 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.