Listening for events…

Scope freeze — radiosonde_station Locationdex (7th Locationdex kind)

Decided 2026-06-27 (Mike pasted the IGRA data-por directory URL). Source = NOAA's Integrated Global Radiosonde Archive (IGRA v2.2). The slot is one upper-air (weather-balloon) launch site. This is the 7th Locationdex kind (slot = a fixed place), after neutron_monitor, tide_gauge, magnetic_observatory, streamgauge, radiation_monitor, coral_reef_station.

Pre-blessed at the triage level: docs/dex-source-triage.md already mapped IGRA → Locationdex radiosonde_station ("Fixed launch sites, measured profiles. Place = the site"), and the pasted data-por URL is the inactive stub in docs/dex-backlog-urls.md.

Roster-based, not a deep-pull (the categorization call)

The other five instrument Locationdex kinds deep-pull each station's full measured series. For radiosondes that series is the soundings, and a roster is the right slot here for two reasons:

  1. The roster already carries the measured-record summary. igra2-station-list.txt gives, per station, the first year, last year, and NOBS (the count of soundings actually flown). That is the station's measured footprint; downloading all 2,821 period-of-record sounding zips to recompute it would add hundreds of GB for no new fact.
  2. The live igra_soundings feed already ingests the soundings (the ~102M-row backfill) for the ~89 active US sites. The Locationdex CATALOGS the places (feedback_organize_not_process); papers draw the soundings from the live feed. Each slot flags in_live_feed so the catalog points back at the live series rather than duplicating it.

This matches the tide_gauge precedent (roster slots, a has_series-style flag, series not pulled).

Slot

One IGRA station. event_id = station_id = the 11-character IGRA ID. Slot fields: latitude/longitude/elevation_m (the place), country_code/country (FIPS), state (US only), network_code/network (3rd ID char: ICAO / WMO / Volunteer Observing Ship / WBAN / specially constructed), first_year/last_year/n_soundings (the measured-record summary), active (last_year ≥ 2025), is_mobile, and in_live_feed.

Global scope (2,821 fixed stations)

"data is data" (feedback_data_is_data_partial_coverage): the live feed covers ~89 US sites; this roster carries all FIXED IGRA stations across 219 countries, marking which are in the live feed. A station's shorter or older record (e.g. a site that closed in 1942) is not a rejection reason. 2 of the 2,923 roster lines have empty station IDs (roster formatting artifacts) and produce no slot.

Mobile platforms moved to MovingPlatformDex (resolved 2026-06-27)

100 of the IGRA stations are not fixed (mobile sentinels -98.8888/-998.8888): 77 Volunteer Observing Ships + 23 Soviet drifting ice stations, each launching from a different position as it travels. A moving platform is not a place, so Mike split them into the new mobile_radiosonde MovingPlatformDex kind (docs/scope-mobile-radiosonde-movingplatformdex.md, docs/movingplatformdex-framework.md), whose slot carries the voyage track. This Locationdex now carries fixed stations only (2,821); the builder skips any is_mobile row.

Measured reality — IN / OUT (bright line feedback_measured_reality_only)

  • IN — the station roster and its tallies of real balloon ascents (a radiosonde is a physical instrument measuring temperature, pressure, humidity, and wind at every level it crosses). The soundings themselves (in the live feed) are measured reality.
  • OUT — nothing modeled is carried. IGRA's monthly means and derived stability parameters (CAPE, lifted index, etc.) are sounding-DERIVED but still computed from measurements; they are simply not in this roster slot (a deferred extra layer, not a bright-line exclusion).

Storage

The Locationdex pattern: file-per-slot at data/location_storehouse/radiosonde_station/<station_id>.json, written via the shared event_storehouse write + disk-rebuilt-index machinery (base_dir). 2,821 slots (fixed stations only; <1% of the ~295k-file storehouse). Built by scripts/build_radiosonde_station_locationdex.py.

Deferred (not in v1)

  • Sounding-derived parameters (IGRA derived-por: stability indices, precipitable water) and monthly means (monthly-por) as extra per-station layers.
  • Per-station deep-pull of the full sounding profiles (the data-por zips) — only if a paper needs the global profiles that the US-only live feed doesn't already cover.
  • Wiring the global roster into the live feed (the live feed tracks ~89 US sites; extending live ingestion worldwide is a separate fetcher decision).
  • Spatial sweep / cross-match (deferred to the Locationdex v2 read-across, as with every kind).
  • Mobile-ship resolution (keep-flagged vs exclude-as-track), pending Mike's categorization call.
Live Feed