feat(squawk): carry emergencySource + observation time into analyst records

Review on #856 (kvnloo): the analyst projection flattened a 7700 squawk and
the readsb ADS-B emergency field into the same emergency/emergencyKind pair.

- mapAnalystRecord (flights, military) adds emergencySource ('squawk' |
  'ads-b' | null, from aircraftEmergency().source), emergencyBroadcast (new
  pure emergencyBroadcastPhrase: "broadcasting squawk 7700 (general
  emergency)" vs "ADS-B reports general emergency") and observedAtMs (the
  record's lastContactEpochMs: last transponder message, epoch ms).
- emergencySource is a queryable analyst text field; the voice payload passes
  it and emergencyBroadcast through, and observedAtMs only for aircraft with
  a status. Tool description asks the model to narrate with the phrase.
- Source-to-analyst fixture test: OpenSky 7700 vs adsb.lol emergency=general
  on squawk 1200 differ in provenance and timestamp; filterable by source.
- Voice tool-payload pins re-derived for the additive description change.

Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
Leo PechnickiandClaude Opus 5.5 authored and Mazeyar Moeini Feizabadi committed 2026-10-13 17:23:39 +02:00
1 parent 6c643c8113
commit 7d6f31e54d
10 files changed
+227 -4

No files matched your search

+6 -1
View File
@@ -831,7 +831,12 @@ the same tint when a billboard is first created and when a tracked contact is
released. While a broadcasting aircraft is tracked, the Cockpit aircraft-meta
line reads `SQUAWK 7700 · GENERAL EMERGENCY` when the code names the status,
else `ADS-B EMERGENCY · …` or `ADS-B PRIORITY · …`, in red. Analyst records and
the voice query fields expose `squawk`, `emergency` (flag) and `emergencyKind`.
the voice query fields expose `squawk`, `emergency` (flag), `emergencyKind` and
`emergencySource` (`squawk` when the Mode A code names the status, `ads-b` for
the readsb field), plus `emergencyBroadcast` (`broadcasting squawk 7700 (general
emergency)` vs `ADS-B reports general emergency`) and `observedAtMs`, the epoch
ms of the last transponder message. Voice results carry `observedAtMs` only for
aircraft with a status.
`scripts/qa-emergency-squawk.mjs` proves the tint, HUD line and clearing.
## Browser live-source observations