{
  "schema": "SOVRIENT_MARITIME_AIS_OBSERVATION_GAP_REVIEW_V1",
  "generated_utc": "2026-04-08T16:53:27Z",
  "lane_id": "maritime_ais_hampton_roads",
  "slice_id": "ais_hampton_roads_2025-09-15_bbox",
  "event_class": "observation_gap_review",
  "review_policy": {
    "policy_id": "maritime_ais_observation_gap_v1",
    "min_gap_sec": 3600,
    "min_observations_per_mmsi": 20,
    "candidate_limit": 25,
    "internal_gap_only": true,
    "ordering_rule": "gap_sec_desc_then_mmsi_then_gap_start_then_gap_end"
  },
  "source_binding": {
    "manifest_json": "./manifest.json",
    "clipped_csv": "./maritime_ais_hampton_roads_2025-09-15_bbox.csv.gz",
    "clipped_csv_sha256": "bca5e4f4eff96daa3a46cc827576363d411fe17beda0942dc20a5af7df42dd0b"
  },
  "summary": {
    "total_mmsi_count": 463,
    "eligible_mmsi_count": 423,
    "total_gap_count": 200633,
    "qualifying_gap_count": 77,
    "qualifying_mmsi_count": 41,
    "published_candidate_count": 25,
    "max_gap_sec": 61402
  },
  "candidates": [
    {
      "candidate_id": "obs-gap-0001",
      "mmsi": "367091990",
      "vessel_name": "MERRIMAC",
      "imo": "IMO7436727",
      "call_sign": "WDC8717",
      "transceiver": "A",
      "vessel_type": 52.0,
      "mmsi_observation_count": 341,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T04:41:17Z",
      "gap_end_utc": "2025-09-15T21:44:39Z",
      "gap_sec": 61402,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T04:41:17Z",
        "longitude": -76.79976,
        "latitude": 37.21859,
        "sog": 3.6,
        "cog": 300.5,
        "heading": 297.0,
        "status": 0.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T21:44:39Z",
        "longitude": -76.79834,
        "latitude": 37.2167,
        "sog": 7.5,
        "cog": 137.2,
        "heading": 139.0,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0002",
      "mmsi": "367151570",
      "vessel_name": "AMERICAN ROVER",
      "imo": null,
      "call_sign": "WDD4948",
      "transceiver": "B",
      "vessel_type": 36.0,
      "mmsi_observation_count": 90,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T00:06:44Z",
      "gap_end_utc": "2025-09-15T12:39:36Z",
      "gap_sec": 45172,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T00:06:44Z",
        "longitude": -76.29301,
        "latitude": 36.84383,
        "sog": 0.0,
        "cog": 67.8,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T12:39:36Z",
        "longitude": -76.29302,
        "latitude": 36.84383,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0003",
      "mmsi": "368284720",
      "vessel_name": "DELTA MOTION",
      "imo": null,
      "call_sign": "WDN4842",
      "transceiver": "B",
      "vessel_type": 70.0,
      "mmsi_observation_count": 326,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T02:20:54Z",
      "gap_end_utc": "2025-09-15T11:49:00Z",
      "gap_sec": 34086,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T02:20:54Z",
        "longitude": -76.0875,
        "latitude": 36.90624,
        "sog": 4.4,
        "cog": 118.9,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T11:49:00Z",
        "longitude": -76.08684,
        "latitude": 36.90623,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0004",
      "mmsi": "368076690",
      "vessel_name": "FIRTH OF TAY",
      "imo": null,
      "call_sign": "WDK6652",
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 163,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T03:25:10Z",
      "gap_end_utc": "2025-09-15T10:42:31Z",
      "gap_sec": 26241,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T03:25:10Z",
        "longitude": -75.9919,
        "latitude": 37.17014,
        "sog": 0.1,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T10:42:31Z",
        "longitude": -75.99193,
        "latitude": 37.17023,
        "sog": 0.1,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0005",
      "mmsi": "367457580",
      "vessel_name": "TRACY MORAN",
      "imo": "IMO9232046",
      "call_sign": "WDA2094",
      "transceiver": "A",
      "vessel_type": 52.0,
      "mmsi_observation_count": 117,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T11:50:46Z",
      "gap_end_utc": "2025-09-15T19:07:52Z",
      "gap_sec": 26226,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T11:50:46Z",
        "longitude": -76.328,
        "latitude": 36.953,
        "sog": 0.0,
        "cog": 250.6,
        "heading": null,
        "status": 5.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T19:07:52Z",
        "longitude": -76.328,
        "latitude": 36.953,
        "sog": 0.0,
        "cog": 0.0,
        "heading": null,
        "status": 5.0
      }
    },
    {
      "candidate_id": "obs-gap-0006",
      "mmsi": "368328830",
      "vessel_name": "ERF 7",
      "imo": null,
      "call_sign": "WDN9639",
      "transceiver": "A",
      "vessel_type": 99.0,
      "mmsi_observation_count": 590,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T02:08:05Z",
      "gap_end_utc": "2025-09-15T09:03:04Z",
      "gap_sec": 24899,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T02:08:05Z",
        "longitude": -76.2957,
        "latitude": 36.83881,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": 0.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T09:03:04Z",
        "longitude": -76.29569,
        "latitude": 36.83875,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0007",
      "mmsi": "477462400",
      "vessel_name": "HERMANN SCHULTE",
      "imo": "IMO9535187",
      "call_sign": "VRJU7",
      "transceiver": "A",
      "vessel_type": 70.0,
      "mmsi_observation_count": 466,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T07:15:37Z",
      "gap_end_utc": "2025-09-15T14:08:23Z",
      "gap_sec": 24766,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T07:15:37Z",
        "longitude": -75.30296,
        "latitude": 36.70855,
        "sog": 16.7,
        "cog": 102.0,
        "heading": 100.0,
        "status": 0.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T14:08:23Z",
        "longitude": -75.43743,
        "latitude": 36.7004,
        "sog": 12.4,
        "cog": 325.0,
        "heading": 331.0,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0008",
      "mmsi": "338337307",
      "vessel_name": "SHARON LEE",
      "imo": null,
      "call_sign": null,
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 48,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T11:09:05Z",
      "gap_end_utc": "2025-09-15T17:57:05Z",
      "gap_sec": 24480,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T11:09:05Z",
        "longitude": -76.01825,
        "latitude": 37.26481,
        "sog": 0.0,
        "cog": 341.5,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T17:57:05Z",
        "longitude": -76.01821,
        "latitude": 37.26481,
        "sog": 0.0,
        "cog": 331.3,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0009",
      "mmsi": "367367390",
      "vessel_name": "DIAMOND COAST",
      "imo": null,
      "call_sign": "WDK5428",
      "transceiver": "A",
      "vessel_type": 31.0,
      "mmsi_observation_count": 333,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T00:24:03Z",
      "gap_end_utc": "2025-09-15T06:57:43Z",
      "gap_sec": 23620,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T00:24:03Z",
        "longitude": -76.79852,
        "latitude": 37.219,
        "sog": 9.4,
        "cog": 312.7,
        "heading": 305.0,
        "status": 12.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T06:57:43Z",
        "longitude": -76.7993,
        "latitude": 37.21935,
        "sog": 10.1,
        "cog": 124.6,
        "heading": 125.0,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0010",
      "mmsi": "368115480",
      "vessel_name": "CAPT RICHARD",
      "imo": "IMO7829039",
      "call_sign": "WDL2799",
      "transceiver": "A",
      "vessel_type": 31.0,
      "mmsi_observation_count": 615,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T09:52:58Z",
      "gap_end_utc": "2025-09-15T15:44:56Z",
      "gap_sec": 21118,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T09:52:58Z",
        "longitude": -76.3306,
        "latitude": 36.97209,
        "sog": 0.0,
        "cog": 288.5,
        "heading": null,
        "status": 0.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T15:44:56Z",
        "longitude": -76.33124,
        "latitude": 36.97224,
        "sog": 0.7,
        "cog": 136.0,
        "heading": null,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0011",
      "mmsi": "268248800",
      "vessel_name": "MILA",
      "imo": null,
      "call_sign": "T7AU8",
      "transceiver": "B",
      "vessel_type": 36.0,
      "mmsi_observation_count": 47,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T11:53:28Z",
      "gap_end_utc": "2025-09-15T16:23:29Z",
      "gap_sec": 16201,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T11:53:28Z",
        "longitude": -76.0146,
        "latitude": 37.26378,
        "sog": 0.0,
        "cog": 197.8,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T16:23:29Z",
        "longitude": -76.01462,
        "latitude": 37.2638,
        "sog": 0.0,
        "cog": 197.8,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0012",
      "mmsi": "368252810",
      "vessel_name": "TAYLOR'D FOR 2",
      "imo": null,
      "call_sign": "WDM9453",
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 62,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T01:29:46Z",
      "gap_end_utc": "2025-09-15T05:49:08Z",
      "gap_sec": 15562,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T01:29:46Z",
        "longitude": -76.29864,
        "latitude": 36.84087,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T05:49:08Z",
        "longitude": -76.29864,
        "latitude": 36.84078,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0013",
      "mmsi": "368091170",
      "vessel_name": "JUST FLUKIN AROUND",
      "imo": null,
      "call_sign": "WDK8137",
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 35,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T13:36:54Z",
      "gap_end_utc": "2025-09-15T17:43:23Z",
      "gap_sec": 14789,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T13:36:54Z",
        "longitude": -76.47987,
        "latitude": 37.25634,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T17:43:23Z",
        "longitude": -76.47981,
        "latitude": 37.25634,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0014",
      "mmsi": "338531433",
      "vessel_name": "SEAS THE LIFE",
      "imo": null,
      "call_sign": null,
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 40,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T09:15:14Z",
      "gap_end_utc": "2025-09-15T13:18:13Z",
      "gap_sec": 14579,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T09:15:14Z",
        "longitude": -76.01525,
        "latitude": 37.26362,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T13:18:13Z",
        "longitude": -76.01525,
        "latitude": 37.26362,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0015",
      "mmsi": "367338460",
      "vessel_name": "NORREEN MARIE",
      "imo": null,
      "call_sign": "WDE3392",
      "transceiver": "B",
      "vessel_type": 30.0,
      "mmsi_observation_count": 34,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T13:38:59Z",
      "gap_end_utc": "2025-09-15T17:38:57Z",
      "gap_sec": 14398,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T13:38:59Z",
        "longitude": -76.02094,
        "latitude": 37.26613,
        "sog": 0.0,
        "cog": 0.0,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T17:38:57Z",
        "longitude": -76.02093,
        "latitude": 37.26613,
        "sog": 0.0,
        "cog": 280.0,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0016",
      "mmsi": "338531433",
      "vessel_name": "SEAS THE LIFE",
      "imo": null,
      "call_sign": null,
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 40,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T15:18:13Z",
      "gap_end_utc": "2025-09-15T19:03:12Z",
      "gap_sec": 13499,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T15:18:13Z",
        "longitude": -76.01528,
        "latitude": 37.26362,
        "sog": 0.1,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T19:03:12Z",
        "longitude": -76.01525,
        "latitude": 37.26361,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0017",
      "mmsi": "368115480",
      "vessel_name": "CAPT RICHARD",
      "imo": "IMO7829039",
      "call_sign": "WDL2799",
      "transceiver": "A",
      "vessel_type": 31.0,
      "mmsi_observation_count": 615,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T18:53:07Z",
      "gap_end_utc": "2025-09-15T22:29:07Z",
      "gap_sec": 12960,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T18:53:07Z",
        "longitude": -76.33111,
        "latitude": 36.9726,
        "sog": 0.0,
        "cog": 249.2,
        "heading": null,
        "status": 0.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T22:29:07Z",
        "longitude": -76.33073,
        "latitude": 36.97296,
        "sog": 0.4,
        "cog": 90.1,
        "heading": null,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0018",
      "mmsi": "367338460",
      "vessel_name": "NORREEN MARIE",
      "imo": null,
      "call_sign": "WDE3392",
      "transceiver": "B",
      "vessel_type": 30.0,
      "mmsi_observation_count": 34,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T10:45:01Z",
      "gap_end_utc": "2025-09-15T13:38:59Z",
      "gap_sec": 10438,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T10:45:01Z",
        "longitude": -76.02093,
        "latitude": 37.26609,
        "sog": 0.0,
        "cog": 37.2,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T13:38:59Z",
        "longitude": -76.02094,
        "latitude": 37.26613,
        "sog": 0.0,
        "cog": 0.0,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0019",
      "mmsi": "368257830",
      "vessel_name": "BOSUN BIRD",
      "imo": null,
      "call_sign": "WDM9993",
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 40,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T13:35:13Z",
      "gap_end_utc": "2025-09-15T16:26:07Z",
      "gap_sec": 10254,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T13:35:13Z",
        "longitude": -76.29706,
        "latitude": 36.76913,
        "sog": 5.7,
        "cog": 200.6,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T16:26:07Z",
        "longitude": -76.35597,
        "latitude": 36.70264,
        "sog": 5.0,
        "cog": 186.9,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0020",
      "mmsi": "368367030",
      "vessel_name": "THOMAS BROWN",
      "imo": null,
      "call_sign": "WDP5838",
      "transceiver": "A",
      "vessel_type": 31.0,
      "mmsi_observation_count": 155,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T12:53:21Z",
      "gap_end_utc": "2025-09-15T15:39:08Z",
      "gap_sec": 9947,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T12:53:21Z",
        "longitude": -76.2477,
        "latitude": 36.83674,
        "sog": 0.1,
        "cog": 11.0,
        "heading": null,
        "status": 0.0
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T15:39:08Z",
        "longitude": -76.24774,
        "latitude": 36.83675,
        "sog": 0.0,
        "cog": 65.0,
        "heading": null,
        "status": 0.0
      }
    },
    {
      "candidate_id": "obs-gap-0021",
      "mmsi": "366845210",
      "vessel_name": "CAPE HENRY EXPRESS",
      "imo": null,
      "call_sign": "WDN4723",
      "transceiver": "B",
      "vessel_type": 70.0,
      "mmsi_observation_count": 20,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T16:43:55Z",
      "gap_end_utc": "2025-09-15T19:03:35Z",
      "gap_sec": 8380,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T16:43:55Z",
        "longitude": -76.06577,
        "latitude": 36.90503,
        "sog": 0.7,
        "cog": 21.7,
        "heading": 256.0,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T19:03:35Z",
        "longitude": -76.06572,
        "latitude": 36.90512,
        "sog": null,
        "cog": 331.2,
        "heading": 256.0,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0022",
      "mmsi": "338493278",
      "vessel_name": "BERTHA",
      "imo": null,
      "call_sign": null,
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 60,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T14:25:51Z",
      "gap_end_utc": "2025-09-15T16:43:53Z",
      "gap_sec": 8282,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T14:25:51Z",
        "longitude": -76.34075,
        "latitude": 37.02459,
        "sog": 0.0,
        "cog": 203.8,
        "heading": 135.0,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T16:43:53Z",
        "longitude": -76.34074,
        "latitude": 37.0246,
        "sog": 0.0,
        "cog": 203.8,
        "heading": 134.0,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0023",
      "mmsi": "338153665",
      "vessel_name": "MY SUNSHINE",
      "imo": null,
      "call_sign": "MY SUN",
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 50,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T13:56:05Z",
      "gap_end_utc": "2025-09-15T16:08:05Z",
      "gap_sec": 7920,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T13:56:05Z",
        "longitude": -76.29729,
        "latitude": 36.84102,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T16:08:05Z",
        "longitude": -76.2973,
        "latitude": 36.841,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0024",
      "mmsi": "368334950",
      "vessel_name": "CINNAMON GIRL",
      "imo": null,
      "call_sign": "WDP2287",
      "transceiver": "B",
      "vessel_type": 37.0,
      "mmsi_observation_count": 118,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T00:01:14Z",
      "gap_end_utc": "2025-09-15T02:04:17Z",
      "gap_sec": 7383,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T00:01:14Z",
        "longitude": -76.01868,
        "latitude": 37.26449,
        "sog": 0.2,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T02:04:17Z",
        "longitude": -76.01874,
        "latitude": 37.26449,
        "sog": 0.1,
        "cog": null,
        "heading": null,
        "status": null
      }
    },
    {
      "candidate_id": "obs-gap-0025",
      "mmsi": "368422660",
      "vessel_name": "CHASING SERENITY",
      "imo": null,
      "call_sign": "WDQ4121",
      "transceiver": "B",
      "vessel_type": 36.0,
      "mmsi_observation_count": 44,
      "candidate_kind": "internal_observation_gap",
      "review_state": "manual_review_required",
      "review_reason": "gap_duration_ge_threshold",
      "gap_start_utc": "2025-09-15T15:40:39Z",
      "gap_end_utc": "2025-09-15T17:43:39Z",
      "gap_sec": 7380,
      "preceding_observation": {
        "timestamp_utc": "2025-09-15T15:40:39Z",
        "longitude": -76.30084,
        "latitude": 36.84427,
        "sog": 0.1,
        "cog": null,
        "heading": null,
        "status": null
      },
      "following_observation": {
        "timestamp_utc": "2025-09-15T17:43:39Z",
        "longitude": -76.30079,
        "latitude": 36.84425,
        "sog": 0.0,
        "cog": null,
        "heading": null,
        "status": null
      }
    }
  ],
  "what_this_does_not_prove": [
    "that a reviewed gap proves AIS blackout at the vessel",
    "that a reviewed gap proves spoofing or malicious behavior",
    "that a reviewed gap proves the vessel was absent from the area",
    "that a reviewed gap by itself constitutes an incident finding"
  ]
}
