HardYards/web/world
m3ultra 0d05cb1936 Land hailBlockFor(size, porosity) — the honest fabric-hail rule for B
B asked for the hail ruling before coding fabric choice; this is it as code.
The physics: porosity is about AIR (blows through → less wind load) and WATER
(drains → no ponding), NOT ice. A knitted shade cloth's gaps are ~1-3 mm; a
damaging hailstone is 6-45 mm, so it can't pass a mesh an order of magnitude
finer than itself — porous and membrane block the big stones identically. The
ONE true difference is the finest pea hail, which IS small enough to rattle
through an open weave. So: membrane stops everything; porous stops everything
except the smallest stones.

Verified across the storm sizes: shade cloth (0.3) fully blocks the wild-night
1.3/1.4 stones and leaks 26% of storm_03's 0.7 pea hail; an open 0.5 weave
leaks 90% of pea hail but still catches the big ice. That makes the fabric
choice cost you exactly on the mild-hail nights and stay honest on the ice
nights — a real tradeoff without a physics lie.

The assert also proves the integration end to end so nobody wires it blind: a
membrane-covered bed takes ~0 hail on storm_03, a porous-covered one takes 0.62
— the choice is genuinely non-trivial. Formula for whoever wires the garden
drain: coveredHail = hailShadowOver(bed) * hailBlockFor(hailSize, sail.porosity).

Pure helper (no THREE), exported through weather.js alongside stormStats/
forecastFor; NOT on the wind contract, so no router change. Selftest 263/0/0.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-17 11:30:37 +10:00
..
data/storms Soften Ice Night: 2.8x storm_02's hail was a wall, not a night 2026-07-17 09:29:17 +10:00
js Land hailBlockFor(size, porosity) — the honest fabric-hail rule for B 2026-07-17 11:30:37 +10:00
models Add night dressing and end cards; fix the hide_render bug 2026-07-17 09:28:26 +10:00
vendor Vendor three.js r175, add stdlib dev server and launch config 2026-07-16 21:33:42 +10:00
dev_player.html Merge all lanes; add importmap; fix /world/ absolute paths 2026-07-16 22:23:20 +10:00
dev_rigging.html Add prep-phase picking UI over RiggingSession (unblocks A step 8) 2026-07-17 00:14:34 +10:00
index.html Give the game a face: HUD, mouse prep, forecast and aftermath (gate 1) 2026-07-17 02:32:02 +10:00
selftest.html Add balance.test.js — SPRINT6 gate 1. It is RED, and that is the point 2026-07-17 09:25:53 +10:00