What’s in it
The catalog’s data model (algorithms, events, hazards, requests), the two entry modes that share one
filter state, and — the substantial part — how the naming standard is enforced rather than merely
documented: one source of truth in src/rules.ts, a 1:1 mirror in scripts/validate_data.py, a
parity test that fails if the two ever disagree, and a CI workflow that runs all of it on every PR.
It also records the knowing divergence from upstream. Upstream’s regex ends with .+, so the
LOCATION slot swallows extra underscores and 202501_Tropical_Cyclone_CA parses as
hazard=Tropical, location=Cyclone_CA — writing a wrong HAZARD GeoTIFF tag. This catalog ends
with _[^_]+$ instead, making 3+ underscores a hard error. The divergence is one-directional and
safe: everything this catalog accepts, DPS accepts too.
Read it when
- A valid-looking event name is rejected by the form.
- You are changing the naming rule (and therefore must change it in two places plus the parity test).
- You need to explain to an upstream maintainer why the two validators disagree.