HardYards/web/world/js
m3ultra 9d6db356d7 sail: break diverged corners on the production path; enforce pond cap post-flow
A NaN corner load compares false to every rating, so a diverged corner
held forever while NaN spread node-to-node — watchDivergence only ever
guarded the tests. Non-finite load now breaks the corner instantly with
reason:'divergence', load zeroed for the HUD.

The pond per-node cap only ran on the rain-add: once rain stopped,
consolidation could stack a basin node past POND_MAX_KG_M2 unbounded.
Clamp moved post-flow, every step. Also fixes the dumpPond assert that
compared dumped to itself through a helper that returned its argument.

All three mutation-checked red before landing green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 19:03:36 +10:00
..
tests Merge remote-tracking branch 'origin/lane/b' 2026-07-18 16:47:17 +10:00
broom.js Lane D: calibrate the douse to B's real ponds; fix the sagging-belly refusal 2026-07-17 09:23:17 +10:00
camera.js Sprint 13 gate 2.5: two camera fixes — spawn framing, aftermath cloth-swallow 2026-07-18 01:18:29 +10:00
contracts.js Palette audit + two temptation props: honest extras, in the factory 2026-07-18 16:01:27 +10:00
debris.js Lane C S13 gate 2.3 + D's sliver: ambient leaves from 30 km/h; hail pool hides at zero 2026-07-18 11:51:26 +10:00
editor_score.js Lane B S14: collateral exposure on the card + the night-5 invoice line (pool item) 2026-07-18 16:29:41 +10:00
editor.js Sprint 14 gate 1 close: round-trip pinned, pool items landed, free-carport fixed 2026-07-18 16:14:34 +10:00
editor.wind.js Gate 2.3: pin editor wind == game wind exact, and fix the stale-wind seam 2026-07-18 16:27:03 +10:00
garden.js Sprint 13: garden model exported as garden.js (B's gate-1.2 blocker) + applyMute(sky,on) as a value 2026-07-18 12:44:37 +10:00
hud.js Lane B S14: collateral exposure on the card + the night-5 invoice line (pool item) 2026-07-18 16:29:41 +10:00
interact.js Lane D: calibrate the douse to B's real ponds; fix the sagging-belly refusal 2026-07-17 09:23:17 +10:00
ladder.js Lane D: ladder survives a mid-carry knockdown, and the prompt names the right bracket 2026-07-18 01:00:01 +10:00
main.js Sprint 14 gate 1 close: round-trip pinned, pool items landed, free-carport fixed 2026-07-18 16:14:34 +10:00
player.js Lane D: the player leans into the wind (gate 2.4 — as a root pose, not a clip) 2026-07-18 01:33:47 +10:00
player.sim.js Lane D: the player leans into the wind (gate 2.4 — as a root pose, not a clip) 2026-07-18 01:33:47 +10:00
rigging.js Lane B S13: consumable spares — close D's free-infinite-spares hole (count half) 2026-07-18 01:09:51 +10:00
rigging.selftest.js Lane B S13: consumable spares — close D's free-infinite-spares hole (count half) 2026-07-18 01:09:51 +10:00
sail.js sail: break diverged corners on the production path; enforce pond cap post-flow 2026-07-18 19:03:36 +10:00
sail.selftest.js sail: break diverged corners on the production path; enforce pond cap post-flow 2026-07-18 19:03:36 +10:00
skyfx.js Lane C S13 gate 2.3 + D's sliver: ambient leaves from 30 km/h; hail pool hides at zero 2026-07-18 11:51:26 +10:00
testkit.js Gate 0: name the harness dispute's cause; make skips real (testkit) 2026-07-17 10:21:01 +10:00
weather.core.js Add validateSiteWind — the site JSON's wind block fails loud (SPRINT10) 2026-07-17 15:30:00 +10:00
weather.js Lane C S13 correction: the bench flew site_02 funnel-OFF and tree-FROZEN; wild-night headline dies 2026-07-18 13:08:21 +10:00
week.js Lane B S14: collateral exposure on the card + the night-5 invoice line (pool item) 2026-07-18 16:29:41 +10:00
world.js Sprint 14 gate 1 close: round-trip pinned, pool items landed, free-carport fixed 2026-07-18 16:14:34 +10:00