Listening for events…

Scope freeze — aircraft MovingPlatformDex (2nd MovingPlatform kind)

Frozen 2026-07-07. The second MovingPlatformDex kind (after mobile_radiosonde), built for the paper-data standardization campaign ([[project_paper_dex_repoint_campaign]]). The slot is a moving measurement platform carrying its TRACK — here an aircraft and its ADS-B positions.

What it is / measures

feedback_measured_reality_only. Each fix is an aircraft's own transponder broadcasting where it physically was (ICAO ADS-B state vector), received by the community adsb.fi network. A record of where the platform actually was; nothing modeled.

Scope — the captured window (feedback_data_is_data_partial_coverage)

Aircraft data is NOT ingested into the platform. For the wspr-aircraft-detection paper the ADS-B feed was the ground truth, so the paper polled adsb.fi directly into its workspace (workspaces/wspr-aircraft-detection/data/adsb_live/). This dex organizes exactly that captured window:

  • 25 hourly snapshot files, ~1 day, April 2026, over the US Northeast (the WSPR experiment's region).
  • ~9,900 distinct aircraft, ~934,000 position fixes.

Bounded in time and place, but it is precisely the data the paper used, so it is what a repoint needs. A live standing feed and OpenSky as a second source are deferred (see below).

Slot = one aircraft (MovingPlatformDex, file-per-slot)

  • Slot id: the ICAO 24-bit address (icao24, 6 hex chars) — the aircraft's permanent id.
  • Payload: track = time-ordered [epoch, lat, lon, alt_m, on_ground] fixes (drop no-position fixes, dedup repeated snapshot times from overlapping poll tiles), plus a voyage summary (n_fixes, first/last UTC, duration, bbox, altitude range, track length km, callsigns, airborne).
  • Storage: data/platform_storehouse/aircraft/<icao24>.json, file-per-slot via event_storehouse.write_dossier + rebuild_index_from_disk (base_dir = platform_storehouse). ~9,900 slots — well under the file-per-slot index-cost concern ([[project_storehouse_index_cost]]).

Provenance

KIND_SOURCES["aircraft"] = ["adsbfi"]; adsbfi registered in KNOWN_SOURCES (adsb.fi community ADS-B network, https://opendata.adsb.fi/api/v2/). Resolved read-time.

Validation

Self-validates via the shared dex_validator.validate_kind_or_raise (file-per-slot family): index-matches-disk, one id per file, unique non-null icao24, required fields name/start_utc/track, and a slot check rejecting an empty track.

Deferred → tracked in docs/dex-backfill-backlog.md

  • Live standing ADS-B feed (vs this one-window capture).
  • OpenSky as a second source (the paper also has poll_opensky.py; skinwalker uses OpenSky).
  • Wider space/time coverage beyond the experiment's US-Northeast April-2026 window.
  • The repoint itself (campaign's final step).
Live Feed