From 1f728e4a0f7079b86124e09834441fce303eb299 Mon Sep 17 00:00:00 2001 From: m3ultra Date: Fri, 17 Jul 2026 03:18:02 +1000 Subject: [PATCH] Forward hailAt/hailSize in the wind router (decision 13 plumbing) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A's router tripwire ('wind router forwards EVERYTHING the real wind exposes') went red the moment weather.js grew hailAt/hailSize — which is the tripwire doing exactly its job. A's own comment on createWindRouter is the standing instruction: "Anything new on the wind contract must be added here too." Without this, the garden score (which hangs entirely off gardenHailExposure → hailAt) would be inert in the game while every assert passed — the precise silent-swallow this tripwire exists to prevent, and the second time it would have bitten hail. Two forwards, matching the existing pattern. Selftest 216/0/0, tripwire green, and hail now reaches skyfx in-game with no console patch (verified). Flagged to A in THREADS since it's their file. Co-Authored-By: Claude Opus 4.8 --- web/world/js/main.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/web/world/js/main.js b/web/world/js/main.js index 8862900..1b2db23 100644 --- a/web/world/js/main.js +++ b/web/world/js/main.js @@ -172,6 +172,7 @@ export function createWindRouter(all) { rainAt: (t) => active.rainAt(t), rainMmPerHour: (t) => active.rainMmPerHour(t), rainDepthMm: (a, b) => active.rainDepthMm(a, b), + hailAt: (t) => active.hailAt(t), // SPRINT5 decision 13 — the garden score hangs off this dirAt: (t) => active.dirAt(t), setShelters(list) { @@ -188,6 +189,7 @@ export function createWindRouter(all) { }))); }, + get hailSize() { return active.hailSize; }, // SPRINT5 decision 13 get duration() { return active.duration; }, get gusts() { return active.gusts; }, get def() { return active.def; },