HardYards/web/world/js
m3ultra c3967d98e8 Verdicts read the actual failure mode (SPRINT6 gate 1)
The aftermath was lying. Any run under 50 hp read "the rain found what you
skimped on" — including Lane B's twisted quad that holds 4/4 corners and skimps
on nothing. The verdict is the game's entire feedback channel: DESIGN.md wants
every disaster to replay as "…the shackle, I knew about the shackle", and
blaming the wrong thing teaches the opposite of the lesson the storm just spent
90 seconds giving.

The garden now keeps its damage split by cause, because the caller was pre-summing
hail and rain into one number and that sum is exactly the information the verdict
needs and can never recover afterwards. A garden that only knows it went 100 → 39
cannot tell a player whether their hardware let go or their perfectly-held sail
simply wasn't over the bed — opposite mistakes, opposite fixes.

verdictFor() is pure and lifted to module scope so it can be asserted directly.
It picks from modes the run can PROVE: cascade (naming the weakest link as going
first, not whichever was listed first), single corner, uncovered, rain, broomed,
ponded, clean. The integrator's exact case now reads "THE GARDEN IS GONE — and
every corner held. The hail fell where your sail wasn't."

Aftermath also gains decision 13's headline: "51 HP to hail, 13 to rain".

Verified live on the reported scenario, not just in asserts. Selftest 244/0/0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 09:15:02 +10:00
..
tests Verdicts read the actual failure mode (SPRINT6 gate 1) 2026-07-17 09:15:02 +10:00
broom.js Lane D: the broom, greyed prompts, and the label pass 2026-07-17 03:03:02 +10:00
camera.js Add graybox yard, third-person camera and game shell 2026-07-16 21:33:42 +10:00
contracts.js Land ponding v1: rainwater pools on flat sails and kills them 2026-07-17 03:25:46 +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 broom, greyed prompts, and the label pass 2026-07-17 03:03:02 +10:00
ladder.js Lane D: the broom, greyed prompts, and the label pass 2026-07-17 03:03:02 +10:00
main.js Verdicts read the actual failure mode (SPRINT6 gate 1) 2026-07-17 09:15:02 +10:00
player.js Lane D: the broom, greyed prompts, and the label pass 2026-07-17 03:03:02 +10:00
player.sim.js Lane D: the ladder sub-system (decision 12) 2026-07-17 02:34:49 +10:00
rigging.js Land ponding v1: rainwater pools on flat sails and kills them 2026-07-17 03:25:46 +10:00
rigging.selftest.js Land ponding v1: rainwater pools on flat sails and kills them 2026-07-17 03:25:46 +10:00
sail.js Guard pond accessors before attach; caught driving the live game 2026-07-17 03:32:02 +10:00
sail.selftest.js Guard pond accessors before attach; caught driving the live game 2026-07-17 03:32:02 +10:00
skyfx.js Hail — the system that makes the garden score respond to the rig (decision 13) 2026-07-17 03:14:27 +10:00
testkit.js Add selftest harness with one suite per lane 2026-07-16 21:33:42 +10:00
weather.core.js Hail — the system that makes the garden score respond to the rig (decision 13) 2026-07-17 03:14:27 +10:00
weather.js Hail — the system that makes the garden score respond to the rig (decision 13) 2026-07-17 03:14:27 +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