{
  "as_of": "2026-05-19T03:56:52.877745+00:00",
  "n_zones": 5,
  "n_total_aircraft_seen": 97,
  "n_hits_total": 0,
  "zones": [
    {
      "id": "iran_persian_gulf",
      "name": "Iran / Persian Gulf approach corridor",
      "theaters": [
        "iran",
        "yemen"
      ],
      "status": "ok",
      "n_total": 35,
      "n_hits": 0,
      "hits": []
    },
    {
      "id": "israel_cyprus_basin",
      "name": "Israeli airspace + Mediterranean approach",
      "theaters": [
        "israel",
        "lebanon"
      ],
      "status": "ok",
      "n_total": 12,
      "n_hits": 0,
      "hits": []
    },
    {
      "id": "ukraine_western_border",
      "name": "Ukraine western airspace + NATO approach",
      "theaters": [
        "ukraine"
      ],
      "status": "ok",
      "n_total": 1,
      "n_hits": 0,
      "hits": []
    },
    {
      "id": "taiwan_strait",
      "name": "Taiwan Strait + PLAAF activity zone",
      "theaters": [
        "taiwan"
      ],
      "status": "ok",
      "n_total": 49,
      "n_hits": 0,
      "hits": []
    },
    {
      "id": "red_sea_corridor",
      "name": "Red Sea / Bab el-Mandeb shipping corridor",
      "status": "unavailable",
      "n_total": 0,
      "n_hits": 0,
      "hits": []
    }
  ],
  "notes": "OpenSky public API (no auth) queried per zone. n_total is all aircraft visible in the bounding box; n_hits is the subset whose callsign-prefix matched the zone's watchlist (tankers, AWACS, surveillance, transports). Aircraft outside the watchlist are filtered out \u2014 most are civil traffic. A non-zero n_hits in Iran or Israel zones is the interesting case; this script just surfaces them. Integration into the live signal-analyzer prompt is queued for next iteration."
}