Physics tab: live ADS-B traffic from adsb.retina.fm with its own dark share - #356
Conversation
… share Pins retina-simulation feat/live-adsb-seed (adbc713): the fleet pulls the real aircraft over its metro from an adsb.lol-shaped feed INTO the simulated world, so the synthetic nodes echo real trajectories. - deploy/fleet-entrypoint.sh: FLEET_LIVE_ADSB_URL (default https://adsb.retina.fm; empty = off) and FLEET_LIVE_ADSB_INTERVAL feed --live-adsb-url / --live-adsb-interval. Production sets the URL empty: its real hardware nodes claim the same real hexes in the "real" world, and the simulated fleet would push those keys into the one ADS-B cache as simulated-world traffic. - simulation config: frac_live_dark (share of the LIVE aircraft mirrored without their transponder; outside the frac_* sum like frac_adsb_outage) and live_adsb_enabled (pauses the pull). Both PUT-able, snapshot-restored, and applied in-process at the fleet's next config poll — the simulator re-casts the aircraft already in the air. - ground truth: the push carries source=live|sim, the config counts report live / live_adsb / live_dark alongside the type buckets (overlapping them, like adsb_silent), and /api/simulation/ground-truth exposes has_adsb and source. - Physics tab: a "Live ADS-B traffic" card with the feed toggle, a live/dark badge and a "Dark share of live aircraft" slider, deliberately separate from the composition bar (the feed sets the live headcount, so it is not a share of the synthetic mix); the objects-target card says it governs synthetic aircraft only. GT map: dark aircraft coloured by has_adsb (the "dark" object_type it keyed on never arrives), live aircraft dashed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
|
Live on the test droplet (detached checkout of
Left deployed on test. |
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Claude finished @jehanazad's task in 9m 58s —— View job Code ReviewTodo list
Only commit since the last review is the submodule pin ( 1.
|
Summary
Pairs with offworldlabs/retina-simulation#14 (pinned at
adbc713). The synthetic fleet now pulls the real aircraft over its metro from adsb.retina.fm (/v2/point/{lat}/{lon}/{radius_nm}) into the simulated world, so the synthetic nodes echo real trajectories — and the Physics tab gets a slider for how many of those fly dark, independent of the synthetic knobs.FLEET_LIVE_ADSB_URL(defaulthttps://adsb.retina.fm; empty = off) andFLEET_LIVE_ADSB_INTERVAL→--live-adsb-url/--live-adsb-interval. Production is opted out (FLEET_LIVE_ADSB_URL=indocker-compose.prod.yml): its real hardware nodes claim the same real hexes in the "real" world, and a simulated fleet mirroring those aircraft would push the same keys into the one ADS-B cache as simulated-world traffic. Test and staging get it by default.frac_live_dark(share of the live aircraft mirrored without their transponder — outside thefrac_*sum, likefrac_adsb_outage) andlive_adsb_enabled(pauses the pull, removing the live aircraft). Both PUT-able, snapshot-restored, and applied in-process at the fleet's next 5 s poll — the simulator re-casts the aircraft already in the air (stable per-hex hash: raising the slider only ever adds dark aircraft).source: live|sim;GET /api/simulation/configcountslive/live_adsb/live_darkalongside the type buckets (overlapping them, likeadsb_silent);/api/simulation/ground-truthexposeshas_adsbandsource.has_adsb(the"dark"object_type it keyed on never arrives), live aircraft drawn dashed.docs/simulation.md"Live ADS-B seeding" replaces the stale adsb.lol section.The two populations are adjusted independently:
min/max_aircraft+frac_darkgovern synthetic spawns (spawning counts synthetic aircraft only),frac_live_darkgoverns the live ones.Test plan
tests/test_sim_ingest.py(+5: counts by cast, defaults, PUT/echo, validation, outside-the-sum),test_state_snapshot.py,test_sim_ingest_mount.py— all greenPhysicsSettings.test.tsx(+2: fallbacks + Apply payload, toggle disables the slider and sends the flag) — 7/7;tsc --noEmitandvite buildcleansh -non the entrypointLive ADS-B: N aircraft in world (…dark…), config counts reportlive, slider re-casts within a poll🤖 Generated with Claude Code