weather

The one question every weather consumer asks: what is the weather here, now? weatherAt(base, cells, x, z) answers it from the scene's base weather plus every weather CELL that reaches the point. A cell is a region that differs (a lee behind a ridge, a storm), the climate layer of a province, and a moving cell is a weather system. See WEATHER-DESIGN.md.

Composition is per quantity, the same rules as province-climate, so two ways of combining regions can never disagree at a boundary:

quantity rule why
wind vector SUM a lee subtracts, a gust adds
temperature signed SUM a cold cell beside a warm one cancels
coverage SUM, clamped 0–2 a storm thickens the sky, a clear cell thins it; past 1 is THICKNESS (a storm tower), as on the deck's own dial
precipitation MAX two storms overlapping do not rain twice as hard
storminess MAX like volcanism: the worst one wins

Pure and Babylon-free, so the simulation (and a driver) can ask the same question the renderer does.