{
  "conformance": {
    "checked": 3,
    "counts": {
      "SKIPPED": 3
    },
    "missing": [
      "orekit_jpype not importable (ModuleNotFoundError: No module named 'orekit_jpype'); pip install 'satnogs-optical-network[od]'",
      "no JVM (JAVA_HOME unset and no 'java' on PATH)",
      "orekit-data not found (set OREKIT_DATA_PATH to the orekit-data zip or directory, or put orekit-data.zip in the working directory)"
    ],
    "note": "Orekit is the conformance authority (ADR 0014). SKIPPED means it did not run here; it does not mean the file conforms. NOT_RUN means nothing was checked at all, which is not a pass either. This deployment does not carry a JVM, by decision (network #11): the gate runs on bench machines that install the optional [od] extra, not on the deployed service.",
    "status": "SKIPPED",
    "structural_problems": []
  },
  "correlation_metrics": {
    "basis": "correlation",
    "correlation_run_id": 146,
    "note": "counts here move when correlation improves; the five primary metrics do not (see docs/decisions/0002-unk-participants.md)",
    "objects": 118,
    "objects_not_in_advisory": 104,
    "tracks_resolved_beyond_advisory": 129,
    "tracks_with_object": 144,
    "tracks_without_object": 190,
    "unk_designations": 190
  },
  "correlation_run_id": 146,
  "correlation_version": 5,
  "date": "2026-08-28",
  "epoch_collisions": {
    "detail": [
      {
        "epoch": "2026-08-28T21:12:12.102864",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "3fc98948-ed04-5e02-a346-e85a43d433cb",
          "bf57adc8-c166-5334-aa84-a4e80450bd4d"
        ],
        "object_norad_id": 20478,
        "positions": [
          "223.527202 42.020717",
          "224.441386 40.100171"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          5407,
          5408
        ],
        "station_id": 7,
        "track_id": 5407
      },
      {
        "epoch": "2026-08-28T22:15:33.700932",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "760f6b2e-8493-5000-910e-765f66ed70da",
          "96c3aab6-566f-5fed-a28b-cdee0072eec4"
        ],
        "object_norad_id": 99123,
        "positions": [
          "244.420956 38.069122",
          "245.406996 37.576362"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          5514,
          5515
        ],
        "station_id": 7,
        "track_id": 5514
      },
      {
        "epoch": "2026-08-28T22:31:47.952427",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "5f50dd5b-7d3d-50f5-983b-72ceb4212558",
          "7787ca5b-6496-56cd-a5de-06562747ce3c"
        ],
        "object_norad_id": 49114,
        "positions": [
          "251.913671 44.464160",
          "252.006646 42.961765"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          5588,
          5590
        ],
        "station_id": 7,
        "track_id": 5588
      },
      {
        "epoch": "2026-08-28T22:32:23.537721",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "6791ebb7-f82a-53da-afb0-5b99213256f7",
          "e705e054-a628-5600-96a8-dc9442462a1e"
        ],
        "object_norad_id": 25637,
        "positions": [
          "254.312284 39.623934",
          "255.395829 38.917289"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          5596,
          5597
        ],
        "station_id": 7,
        "track_id": 5596
      },
      {
        "epoch": "2026-08-28T22:32:23.537721",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "32d29751-61d5-5a88-ac1a-3665b4fdc090",
          "47aab58a-3efe-59c3-b3a4-afa183f0ad3c"
        ],
        "object_norad_id": 49114,
        "positions": [
          "254.352438 40.108270",
          "255.873645 38.587392"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          5598,
          5599
        ],
        "station_id": 7,
        "track_id": 5598
      },
      {
        "epoch": "2026-08-29T00:57:25.067653",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "b0c47a1f-362a-5558-98f4-e9527b91ab6d",
          "b7a660dc-3c8d-54b8-a864-811354010a46"
        ],
        "object_norad_id": 66916,
        "positions": [
          "290.779856 64.041338",
          "292.459080 64.837047"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          5627,
          5628
        ],
        "station_id": 4,
        "track_id": 5627
      }
    ],
    "detail_omitted": 0,
    "epochs": 6,
    "measurements_excluded": 12,
    "note": "one epoch stated twice costs its own measurements, never the session: a repeated epoch is published once, a contradicted one is published not at all, and every excluded row is still in the parquet archive. Counted over tracks with a correlated object, which are the only tracks a TDM is written for. See docs/decisions/0004-duplicate-epochs.md",
    "tracks": 6,
    "tracks_left_without_observations": 1
  },
  "generated_at": "2026-09-22T23:46:57.514475Z",
  "generation_id": "9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b",
  "generator": "satnogs_optical_network.products",
  "iod": {
    "11": {
      "identified_lines": 9014,
      "identified_tracks": 76,
      "lines": 12044,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 3030,
      "unk_tracks": 29,
      "wide_id_tracks": 0
    },
    "4": {
      "identified_lines": 1290,
      "identified_tracks": 23,
      "lines": 1778,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 488,
      "unk_tracks": 14,
      "wide_id_tracks": 0
    },
    "7": {
      "identified_lines": 3798,
      "identified_tracks": 45,
      "lines": 4408,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 610,
      "unk_tracks": 147,
      "wide_id_tracks": 0
    }
  },
  "layout": {
    "generation_dir": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b",
    "measurements": "measurements.parquet",
    "note": "Resolve products through this manifest. Retained generations must not be combined with a recursive Parquet wildcard.",
    "session_dir": "session_date=2026-08-28",
    "stations": "stations",
    "tracks": "tracks.parquet"
  },
  "metrics": {
    "measurements": 18230,
    "objects": 16,
    "stations": 3,
    "tracks": 334,
    "unk_tracks": 316
  },
  "metrics_basis": "as-ingested",
  "packaging": {
    "note": "TDM file count is a packaging artifact, not a headline metric: it both overstates the claim to experts and understates the data volume (ADR 0010). tdm_observations is the count actually read back out of the published station-night TDMs and checked against the measurement rows; it is the number to compare a published file against. tdm_tracks is the number of segments across them.",
    "tdm_files": 3,
    "tdm_observations": 14090,
    "tdm_observations_expected": 14090,
    "tdm_observations_verified": true,
    "tdm_tracks": 143
  },
  "per_station": [
    {
      "epoch_collisions": 1,
      "iod": {
        "identified_lines": 1290,
        "identified_tracks": 23,
        "lines": 1778,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 488,
        "unk_tracks": 14,
        "wide_id_tracks": 0
      },
      "iod_station_code": "4",
      "measurements": 1778,
      "name": "optical-bench1",
      "objects": 16,
      "station_id": 4,
      "tdm_tracks": 23,
      "tracks": 37,
      "unk_tracks": 19
    },
    {
      "epoch_collisions": 5,
      "iod": {
        "identified_lines": 3798,
        "identified_tracks": 45,
        "lines": 4408,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 610,
        "unk_tracks": 147,
        "wide_id_tracks": 0
      },
      "iod_station_code": "7",
      "measurements": 4408,
      "name": "Drachten",
      "objects": 0,
      "station_id": 7,
      "tdm_tracks": 45,
      "tracks": 192,
      "unk_tracks": 192
    },
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 9014,
        "identified_tracks": 76,
        "lines": 12044,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 3030,
        "unk_tracks": 29,
        "wide_id_tracks": 0
      },
      "iod_station_code": "11",
      "measurements": 12044,
      "name": "dwingeloo",
      "objects": 0,
      "station_id": 11,
      "tdm_tracks": 76,
      "tracks": 105,
      "unk_tracks": 105
    }
  ],
  "products": [
    {
      "bytes": 9540,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/stations/station-11.json",
      "scope": "station-night",
      "scope_key": "11-2026-08-28",
      "sha256": "aadab524b77a7f37581391ef180d2b16a86ef1fc8bd7a5b164c3a70210ae1ba4"
    },
    {
      "bytes": 10955,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/stations/station-4.json",
      "scope": "station-night",
      "scope_key": "4-2026-08-28",
      "sha256": "9675632bb896140bbd1586db988130fa8345ad2d47e5d1d36d8bbc7b1820bc99"
    },
    {
      "bytes": 9645,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/stations/station-7.json",
      "scope": "station-night",
      "scope_key": "7-2026-08-28",
      "sha256": "a9a3f55c20bd73edd75cc968cad1375e4533b8ba800b005d7dec18be39666005"
    },
    {
      "bytes": 806948,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/iod/station-11-2026-08-28.iod",
      "scope": "station-night",
      "scope_key": "11-2026-08-28",
      "sha256": "457db659aaed1068d15b33b3aaf274de9b82ddfc5647f6238a30253e0154e6dd"
    },
    {
      "bytes": 119126,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/iod/station-4-2026-08-28.iod",
      "scope": "station-night",
      "scope_key": "4-2026-08-28",
      "sha256": "f4497c202c187437c3d0099a5cf69530001e7db6f9e6dadd1af4fe1b8af6dd8e"
    },
    {
      "bytes": 295336,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/iod/station-7-2026-08-28.iod",
      "scope": "station-night",
      "scope_key": "7-2026-08-28",
      "sha256": "fbd6e98da5db1136b93894fe4cced7aaf46497f28a5989e299c71aefa8138991"
    },
    {
      "bytes": 1652213,
      "conformance": null,
      "kind": "parquet-session",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/measurements.parquet",
      "scope": "session",
      "scope_key": "2026-08-28",
      "sha256": "8031fc9f872aef54c09ac02a3e2e22840786ba6ec43a8702dcbe9299c8575864"
    },
    {
      "bytes": 31490,
      "conformance": null,
      "kind": "parquet-tracks",
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/tracks.parquet",
      "scope": "session",
      "scope_key": "2026-08-28",
      "sha256": "a702636a8aef94acc321635d52c608a346063d2cf73939f97bb0f1188c59c00f"
    },
    {
      "bytes": 1072648,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-11-2026-08-28.tdm: orekit_jpype not importable (ModuleNotFoundError: No module named 'orekit_jpype'); pip install 'satnogs-optical-network[od]'; no JVM (JAVA_HOME unset and no 'java' on PATH); orekit-data not found (set OREKIT_DATA_PATH to the orekit-data zip or directory, or put orekit-data.zip in the working directory). Offline structural check: clean.",
      "kind": "tdm-station-night",
      "observations": 9014,
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/tdm/station-11-2026-08-28.tdm",
      "scope": "station-night",
      "scope_key": "11-2026-08-28",
      "sha256": "2581972aed11fc1e5bf4091052c4b3d5a2e6497bb8e1cb94dcfe1ba1d37e833e"
    },
    {
      "bytes": 161876,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-4-2026-08-28.tdm: orekit_jpype not importable (ModuleNotFoundError: No module named 'orekit_jpype'); pip install 'satnogs-optical-network[od]'; no JVM (JAVA_HOME unset and no 'java' on PATH); orekit-data not found (set OREKIT_DATA_PATH to the orekit-data zip or directory, or put orekit-data.zip in the working directory). Offline structural check: clean.",
      "kind": "tdm-station-night",
      "observations": 1288,
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/tdm/station-4-2026-08-28.tdm",
      "scope": "station-night",
      "scope_key": "4-2026-08-28",
      "sha256": "dda34755bb58c2dc539db5eb680a4385898f698a578390c8dc1f59a7a13e5b41"
    },
    {
      "bytes": 466142,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-7-2026-08-28.tdm: orekit_jpype not importable (ModuleNotFoundError: No module named 'orekit_jpype'); pip install 'satnogs-optical-network[od]'; no JVM (JAVA_HOME unset and no 'java' on PATH); orekit-data not found (set OREKIT_DATA_PATH to the orekit-data zip or directory, or put orekit-data.zip in the working directory). Offline structural check: clean.",
      "kind": "tdm-station-night",
      "observations": 3788,
      "path": "session_date=2026-08-28/generations/9a18658c7db4f77f3f13f3190b2a99e2e699d799b06588b9e0b2758a9219fd9b/tdm/station-7-2026-08-28.tdm",
      "scope": "station-night",
      "scope_key": "7-2026-08-28",
      "sha256": "5ecca1abb2f7b16a52f7d33742a93e9d3e6a00a773754e7b8814329703924855"
    }
  ],
  "quarantined_excluded": 26,
  "station": [
    4,
    7,
    11
  ],
  "stations": [
    4,
    7,
    11
  ],
  "tdm_excluded_epoch_collisions": 12,
  "tdm_skipped_no_observations": 1,
  "tdm_skipped_unk": 190
}
