HardYards/web/world/js
m3ultra eb6986d1a0 Tripwire the wind router; take Lane C's gardenExposure helper
The router is a hand-maintained delegation list and it has already cost us once:
when Lane C added rainMmPerHour/rainDepthMm, it didn't forward them, and nothing
went red — every suite holds a real wind, only the GAME holds the router. Lane B's
ponding would have passed every assert it had and done nothing in the yard; the
integrator caught it by hand at merge.

The class matters more than the instance. Sprint 5's headline system is Lane C's
hailAt(), and decision 13 hangs the whole garden score off it — the same silent
swallow would make rigging look irrelevant to the garden all over again, which is
the exact thing the sprint exists to fix. The assert diffs the router against a
real wind and names what's missing. Verified it fires rather than just passing:
rebuilt Sprint 4's pre-fix router and it reports exactly rainMmPerHour,
rainDepthMm.

Garden drain now goes through sky.gardenExposure() — same arithmetic, but it's
Lane C's term to own, and decision 13 extends precisely this shape, so hail lands
as one added term rather than a rewrite. Numbers unmoved: good rig 53%.

Also re-measured Sprint 4's headline finding against a TRUE control (fresh boot,
nothing ever rigged, shadow over bed 0.000) because my original control left the
previous round's sail in the shadow grid: no-sail is 48.5% vs a good rig's 53%.
The finding stands, and decision 13's premise with it.

Selftest 209/0/0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 02:55:32 +10:00
..
tests Tripwire the wind router; take Lane C's gardenExposure helper 2026-07-17 02:55:32 +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
hud.js Give the game a face: HUD, mouse prep, forecast and aftermath (gate 1) 2026-07-17 02:32:02 +10:00
interact.js Lane D: the ladder sub-system (decision 12) 2026-07-17 02:34:49 +10:00
ladder.js Lane D: the ladder sub-system (decision 12) 2026-07-17 02:34:49 +10:00
main.js Tripwire the wind router; take Lane C's gardenExposure helper 2026-07-17 02:55:32 +10:00
player.js Lane D: the ladder sub-system (decision 12) 2026-07-17 02:34:49 +10:00
player.sim.js Lane D: the ladder sub-system (decision 12) 2026-07-17 02:34:49 +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 Add sail UVs and Lane E's weave texture 2026-07-17 01:29:22 +10:00
sail.selftest.js Decision 11: the 60% bar passes. I was wrong; bump the storm to 0.45 2026-07-17 02:21:27 +10:00
skyfx.js Rain gets physical units for ponding; night pass on wildnight 2026-07-17 02:28:09 +10:00
testkit.js Add selftest harness with one suite per lane 2026-07-16 21:33:42 +10:00
weather.core.js Rain gets physical units for ponding; night pass on wildnight 2026-07-17 02:28:09 +10:00
weather.js Rain gets physical units for ponding; night pass on wildnight 2026-07-17 02:28:09 +10:00
world.js Give the game a face: HUD, mouse prep, forecast and aftermath (gate 1) 2026-07-17 02:32:02 +10:00