HardYards/web/world/js
m3ultra 5d1d0895f2 Lane D: retune stumble/shove against the REAL storm_02, pin to storm JSON
The pre-merge thresholds were tuned against a mock that injected +18 gusts. In
the actual storm_02, gusts-over-baseline peak at 12.1 m/s — so stumbleGust:17
was above every gust in the game and StumbleBack was unreachable dead code, and
shoveGustMin:8 (a low bar in the prototype's 12-38 units) had become a high bar
in ours and threw away most of the shove.

Retuned against the real storm profile (12 gust events, peaks 12.1..6.1, 4
knockdowns, maxExposure 1.55): stumbleGust 17→9, shoveGustMin 8→4. A wild night
now reads shoved (26s of 90) → stumbling (4) → floored (2); a calm day stays 0/0.

d.test.js now loads the real storm JSON via weather.loadStorm and asserts every
threshold is REACHABLE and correctly ordered — the guard the first tuning lacked.
This matters because decision 8 (B+C) reweights the downdraft this sprint, which
is exactly the kind of change that silently killed StumbleBack the first time.
Also pinned the emergent 'unbrace into a gust → stumble' behaviour.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 01:25:17 +10:00
..
tests Lane D: retune stumble/shove against the REAL storm_02, pin to storm JSON 2026-07-17 01:25:17 +10:00
camera.js Add graybox yard, third-person camera and game shell 2026-07-16 21:33:42 +10:00
contracts.js Merge remote-tracking branch 'origin/lane/b' 2026-07-17 01:01:48 +10:00
debris.js Fix debris ground friction, cloud seam and yard coords 2026-07-16 21:50:41 +10:00
interact.js Lane D: solids collision, the M3 verbs, shelter and stumble 2026-07-17 00:08:46 +10:00
main.js Place the shed and spare table; expose world.shedTable (unblocks Lane D) 2026-07-17 01:20:35 +10:00
player.js Lane D: solids collision, the M3 verbs, shelter and stumble 2026-07-17 00:08:46 +10:00
player.sim.js Lane D: retune stumble/shove against the REAL storm_02, pin to storm JSON 2026-07-17 01:25:17 +10:00
rigging.js Add prep-phase picking UI over RiggingSession (unblocks A step 8) 2026-07-17 00:14:34 +10:00
rigging.selftest.js Align sail lane to contracts.js; free blown corners so they flog 2026-07-16 21:55:37 +10:00
sail.js Re-run the §7 gate against real storm wind; stop allocating per face 2026-07-17 00:25:25 +10:00
sail.selftest.js Merge Sprint 2 lanes; wire debris into sail step; settle downdraft dispute as documented skip 2026-07-17 01:09:51 +10:00
skyfx.js Rain stops at the cloth (SPRINT2 Lane C.3) 2026-07-17 00:10:29 +10:00
testkit.js Add selftest harness with one suite per lane 2026-07-16 21:33:42 +10:00
weather.core.js Add vertical gusts, freeze debris.pieces, fix fog restore 2026-07-16 23:58:31 +10:00
weather.js Add debris, skyfx and the Lane C bench; align to landed contracts 2026-07-16 21:38:21 +10:00
world.js Place the shed and spare table; expose world.shedTable (unblocks Lane D) 2026-07-17 01:20:35 +10:00