Scope freeze — mobile_radiosonde MovingPlatformDex (1st MovingPlatformDex kind)
Decided 2026-06-27. First kind of the new 6th dex family, MovingPlatformDex
(docs/movingplatformdex-framework.md): the slot is one MOVING measurement platform, and the slot
carries the platform's track. This kind is the mobile twin of the fixed radiosonde_station
Locationdex (docs/scope-radiosonde-station-locationdex.md).
Origin (the categorization call)
While building the IGRA radiosonde_station Locationdex, 100 of the 2,921 stations turned out to be
non-fixed (lat/lon sentinels -98.8888/-998.8888): weather balloons launched from platforms that
move. Mike's first call: a moving platform is not a place, so it leaves the Locationdex. His second
call (after seeing that each ship sounding has its own launch position, and that the balloon itself
flies free from each point): give moving platforms their own family rather than a mobile
Locationdex, because the family will later also hold research aircraft, drifting buoys, ocean
gliders, anything that measures while it moves. He named the family MovingPlatformDex and
validated "platform" on the meteorology/oceanography sense of an observing platform.
The fixed radiosonde_station Locationdex was rebuilt to exclude the 100 mobile platforms (now
2,821 fixed stations); they live here.
Slot
One moving platform. event_id = platform_id = the 11-character IGRA ID. The slot carries:
- Identity:
name,platform_type(ship / drifting_ice_station / other_mobile), network (Volunteer Observing Ship vs specially-coded),country= "Ocean" (FIPS ZZ),first_year/last_year/n_soundings(the roster's record summary). voyagesummary:n_launches,n_located, first/last date, lat/lon bounding box, start and end position, andtrack_length_km(sum of great-circle hops between consecutive launches).track: the full ordered list of launch points[date, hour, lat, lon], one per sounding, embedded in the slot the same way the CelestialObjectDexneokind embeds its close-approach array. The launch position comes from each sounding's IGRA2 HEADER record (LAT/LON, degrees ×10000); only the headers are parsed, the full vertical profiles stay at the source.
The fleet (100 platforms, 157,669 launches)
- 77 Volunteer Observing Ships (network V): research and weather ships. POLARSTERN (the German polar icebreaker) runs pole to pole (−78° to 90°N), ~2.09M km of track, 10,654 launches, 1985→2024; METEOR roams the globe; POLARFRONT station-kept in one box of the Norwegian Sea for 20 years (15,239 launches).
- 23 Soviet "Severnyy Polyus" (NP) drifting ice stations (network X): manned camps on Arctic sea ice (NP02–NP31) that launched balloons as the ice drifted across the pole.
Measured reality — IN / OUT (bright line feedback_measured_reality_only)
- IN — every recorded launch position (where the platform physically was) and the roster's tallies of real balloon ascents. A radiosonde is a physical instrument.
- OUT — nothing modeled. No drift forecast, no interpolated/smoothed track; the track is the raw recorded launch positions only.
Storage
The MovingPlatformDex pattern: file-per-slot at
data/platform_storehouse/mobile_radiosonde/<platform_id>.json (the 6th sibling storehouse),
written via the shared event_storehouse write + disk-rebuilt-index machinery (base_dir). 100
slots. Built by scripts/build_mobile_radiosonde_movingplatformdex.py; the per-platform data-por
zips are cached under data/igra_mobile_cache/ (not git-tracked).
Deferred (not in v1)
- Live edge (the IGRA live feed tracks ~89 US fixed stations only; extending it to mobile platforms is a separate fetcher decision).
- Full vertical profiles per launch (carried as references via the source; only the track is embedded).
- Track / spatial sweep (cross-matching a voyage against other sensor layers — deferred to a MovingPlatformDex v2 read-across, as with every family).
- More platform kinds in the family (research aircraft, drifting buoys, Argo floats, gliders).