Skip to content

Stop pushing dark aircraft as ADS-B - #11

Merged
jehanazad merged 1 commit into
mainfrom
fix/no-adsb-push-for-dark-aircraft
Aug 26, 2026
Merged

jehanazad merged 1 commit into
mainfrom
fix/no-adsb-push-for-dark-aircraft

Conversation

@jehanazad

Copy link
Copy Markdown
Contributor

Summary

_push_adsb_live substituted the simulator object id for a missing transponder hex, so every dark aircraft got a fake live transponder on the server. Dark solves then claimed against it, keyed mn-adsb-obj-*, and the server's dark lane (mn-dark-* store, violet icons, the entire claiming path) was permanently empty — measured live on the test droplet 2026-08-26 as 15008/15008 multinode samples adsb_assisted: true with zero dark tracks.

Changes

  • The ADS-B push now carries transponder-equipped aircraft only: the loop body is extracted as build_adsb_push_payload (mirroring build_ground_truth_payload), which drops aircraft with no adsb_hex instead of substituting the object id. Dark aircraft still reach the server through the ground-truth push, where the object id is the intended key.

Test coverage

  • New tests/test_adsb_push_payload.py: transponder aircraft pushed under their hex with the schema intact, dark aircraft absent entirely, and a mixed fleet keeps only transponder entries. Ran the new tests plus test_ground_truth_push.py (7 passed); ruff check/format clean.

Review notes

  • The server side hardens independently (transponder-hex gate on /api/sim/adsb/push and on the solver keying rule, Tower-Finder fix/dark-adsb-lane), so both sides hold regardless of the other's version.
  • Behaviour change on sim environments: dark objects disappear from state.adsb_aircraft (they were never supposed to be there), so they can no longer appear in the ADS-B single-node lane either.

🤖 Generated with Claude Code

_push_adsb_live substituted the simulator object id for a missing
transponder hex, so every dark aircraft got a fake live transponder on
the server: dark solves claimed against it, keyed mn-adsb-obj-*, and the
server's dark lane (mn-dark-* store, violet icons, the claiming path)
was permanently empty — measured live 2026-08-26 as 15008/15008
multinode samples ADS-B-assisted with zero dark tracks.

The push is the simulated ADS-B broadcast; a dark target emits none.
Extract the loop body as build_adsb_push_payload (the
build_ground_truth_payload precedent) that keeps transponder aircraft
only. Dark aircraft still reach the server through the ground-truth
push, where the object id is the intended key.

The server side hardens independently (transponder-hex gate on
/api/sim/adsb/push and on the solver keying rule), so both sides hold
regardless of the other's version.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@jehanazad
jehanazad merged commit 97d0753 into main Aug 26, 2026
2 checks passed
@jehanazad
jehanazad deleted the fix/no-adsb-push-for-dark-aircraft branch August 26, 2026 21:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant