Scope Freeze — Neutron Monitor Locationdex (neutron_monitor)
Status: FROZEN 2026-06-19 · Kind: neutron_monitor · Family: Locationdex (the third
dex family; slot = a place). Brick A of the build. Owner: Mike (rulings) + Claude (engine room).
This is the pilot kind for the Locationdex family (docs/locationdex-framework.md). Mike's
ruling 2026-06-19: when the Locationdex idea came up for safecast radiation, safecast turned out to
be ~half mobile drive-surveys (a roving sensor is not a location), so it is a poor first test.
Pilot the family on a clean fixed-station network instead, where every slot is unambiguously a
place. Mike picked NMDB neutron monitors from four candidate networks.
The one decision a Locationdex scope must make: what is a slot
A slot is one neutron-monitor station — a fixed geographic site that hosts a cosmic-ray detector
and reports a continuous count-rate series. Slot ID = the NMDB station code (OULU, JUNG,
SOPO, …). This mirrors how an Eventdex slot is one event and a Yeardex slot is one year: here the
addressable thing is a place.
A station is a place, so unlike a year ("a year is not a place", Yeardex is sweep-none) a Locationdex slot could later support a spatial sweep (what else did our sensors see near this station). For this pilot the slot is catalog + measured-series summary; the spatial sweep is deferred-v2.
Roster (deep pull, not the thin live slice)
The live nmdb_cosmic_rays fetcher hard-codes 6 reference stations (4 have staged data). The
full NMDB network is larger. Per the no-spiking rule (feedback_no_spiking_global), the spine is a
deep pull of the full published roster: parsed straight from the NMDB station registry
(https://www.nmdb.eu/nest/help.php station table for code/name/country/cutoff-rigidity/altitude,
plus per-station pages and the help-page map markers for coordinates).
Result: 64 stations, 22 countries, 100% with coordinates. (A small-model read of the page
guessed "71"; the authoritative HTML table parse gives 64 — the roster is parsed programmatically,
not retyped, so the count is the real one.) Coordinate provenance is recorded per station: 51 from
station pages, 10 from the registry map, 3 inherited from a co-located "bare"-detector twin
(DOMB→DOMC, ICRB→ICRO, MWSB→MWSN). South Pole detectors (SOPO/SOPB) carry lon = 0 by
convention (longitude is undefined at the pole; lat −90 locates them).
Slot contents (frozen)
Each station slot carries:
- Identity: station code, full name, country.
- Place: latitude, longitude, altitude (m), and
coord_srcprovenance. - Instrument character: effective vertical cutoff rigidity (GV) — the station's permanent geomagnetic sensitivity, what makes one neutron-monitor site different from another.
- Measured-series summary (cited to
nmdb_cosmic_rays): count of staged observations, first/last observation time, mean/min/max recorded flux, unit. Stations with no staged series yet carry a null summary andhas_series = false— they are real registry places we hold but do not yet stream. - Citations:
nmdb_stations(the registry) +nmdb_cosmic_rays(the flux series), per the universal multi-source cited-slot rule.
Measured-reality call: IN
A neutron-monitor count rate is a direct measurement of secondary cosmic-ray flux at that place;
the registry is the recorded fact of where the instrument sits. No model, no projection. IN, the same
posture as fema/landuse (records of what is, cited to the keeper of record).
Storage
- Spine source
nmdb_stations(registry;active=False— a roster is revised occasionally, not a 60-second feed; re-run the reload to refresh). One observation per station, with lat/lon (a place, unlike a Yeardex year-slot whose geo stays null), metadata inextra_json. - Slots in
data/location_storehouse/neutron_monitor/<code>.json, a third sibling ofevent_storehouse/andyear_storehouse/, reusing the sharedevent_storehousewrite + disk-rebuilt-index machinery via itsbase_dirargument.
Frozen vs open
Frozen (2026-06-19): slot = one station; slot ID = station code; full-roster deep pull (64
stations); slot contents above; measured-reality IN; location_storehouse layout.
Open / deferred-v2: the spatial sweep (a station is a place, so "what else did we measure near it"
is buildable later); enriching the live nmdb_cosmic_rays fetcher to stream all 64 stations rather
than 6; bringing safecast in later as the "binned mobile" Locationdex special case.