HardYards/web/world/js/tests
m3ultra 391722970a Rule the pyrrhic win: WIN = hp >= 50, corners priced not gated (SPRINT9 dec 1)
The garden is the client's. The sail is yours. Saving the bed with a rig that
tore itself apart is the job done expensively — not a failure. DESIGN.md doesn't
call a cascade a loss, it calls it "a firework you paid for", and *paid for* is
the point: the aftermath already bills the broken hardware, the collateral, and a
week's fee you didn't earn cleanly. Gating the win on corners bills you twice for
one night and then lies about it — the same species as the verdict that used to
tell a 4/4 hold they'd skimped.

B and D arrived here independently with the numbers, and B checked what it does
NOT break: cheap rigs still lose (4x carabiner -> hp 38), rigs that miss the bed
still lose (hp 36), $80 still cannot buy immunity. C's exhaustive sweep found the
only winnable $80 line on the wild night lands exactly here — hp 52, 1 lost.

The pyrrhic ending gets its own verdict, and it had to be checked FIRST: `lost >= 2`
was unconditionally a cascade-and-a-loss, and under the new rule it can be the
best night the game has. Two asserts pin both halves — garden saved + sail
destroyed is a win that still names the weakest link; the same wreck WITHOUT the
garden is still a plain cascade, because the garden is the whole job.

Selftest 276 pass / 0 fail (Lane A 32 -> 34).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 14:19:29 +10:00
..
a.test.js Rule the pyrrhic win: WIN = hp >= 50, corners priced not gated (SPRINT9 dec 1) 2026-07-17 14:19:29 +10:00
b.test.js Align sail lane to contracts.js; free blown corners so they flog 2026-07-16 21:55:37 +10:00
balance.test.js Merge Sprint 8; the week is live; balance harness stabilized 2026-07-17 14:02:53 +10:00
c.test.js Ship forecast uncertainty to the card (carried twice — now visible) 2026-07-17 13:10:53 +10:00
d.test.js Lane D: calibrate the douse to B's real ponds; fix the sagging-belly refusal 2026-07-17 09:23:17 +10:00
e.test.js Sweep and taper the tree limbs; pin the anchors that ride them 2026-07-17 11:25:03 +10:00
run-node.mjs Add wind field, storm timelines and weather selftest 2026-07-16 21:38:12 +10:00
weather.selftest.js Land hailBlockFor(size, porosity) — the honest fabric-hail rule for B 2026-07-17 11:30:37 +10:00