- createGarden / GARDEN_DRAIN / HAIL_WEIGHT / RAIN_WEIGHT move from main.js
module-locals to garden.js, unchanged — the audit must predict the sim off
the sim's OWN code, not a drifting copy. GARDEN_DRAIN's comment now carries
the gate-1.4 ruling: the constant does not move; it owns the bare-bed arc.
- M-mute application extracted to exported applyMute(sky, on): calls C's
sky.setMute when the tap exists, reports honestly when it does not, so the
selftest can fail the wiring instead of trusting a ?.() no-op.