{
  "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": 1000,
    "note": "counts here move when correlation improves; the five primary metrics do not (see docs/decisions/0002-unk-participants.md)",
    "objects": 284,
    "objects_not_in_advisory": 90,
    "tracks_resolved_beyond_advisory": 131,
    "tracks_with_object": 348,
    "tracks_without_object": 116,
    "unk_designations": 115
  },
  "correlation_run_id": 1000,
  "correlation_version": 5,
  "date": "2026-09-25",
  "epoch_collisions": {
    "detail": [
      {
        "epoch": "2026-09-25T18:27:50.320016",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "12cf70d5-399a-5c05-8404-30d55216ea63",
          "1324f48d-c853-5402-8a0b-7df2c74efa89",
          "b1df6064-8698-5052-a9b9-ef854ca0a571"
        ],
        "object_norad_id": 31123,
        "positions": [
          "51.108452 54.941093",
          "51.683293 54.813622",
          "53.042399 54.502355"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77226,
          77227,
          77228
        ],
        "station_id": 11,
        "track_id": 77226
      },
      {
        "epoch": "2026-09-25T18:37:25.937516",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "46626c1a-46cb-5cef-b78e-e22659d90b6f",
          "a1d02444-bda8-513c-9c51-cd74e6710d18"
        ],
        "object_norad_id": 69141,
        "positions": [
          "42.031322 62.983383",
          "43.127463 62.832374"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77249,
          77250
        ],
        "station_id": 11,
        "track_id": 77249
      },
      {
        "epoch": "2026-09-25T18:39:17.042905",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "1d93261a-d853-54b7-ae18-0154ae0a1eb8",
          "56088875-64b7-5f80-86c5-d64efde64461",
          "5dd1a041-bb39-596a-a794-4a98daa3f785"
        ],
        "object_norad_id": 4419,
        "positions": [
          "52.199896 58.919492",
          "52.470075 58.898623",
          "53.555020 59.065394"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77252,
          77254,
          77255
        ],
        "station_id": 11,
        "track_id": 77252
      },
      {
        "epoch": "2026-09-25T18:43:52.582336",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "1670da91-0c6f-53b1-9da7-bf5f2b46450c",
          "4b70139c-7668-5109-9064-31be7cc1525e"
        ],
        "object_norad_id": 65254,
        "positions": [
          "45.273542 62.688547",
          "51.096358 63.278226"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77266,
          77267
        ],
        "station_id": 11,
        "track_id": 77266
      },
      {
        "epoch": "2026-09-25T19:05:12.672478",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "2b08037f-ccac-5763-897c-d1f27b3b1af9",
          "3a2be63e-b3d2-5f1b-bba1-d71607063aaf",
          "7ff57b16-9ec9-5ea4-a10d-dec099dc2c35"
        ],
        "object_norad_id": 65275,
        "positions": [
          "63.093344 54.231069",
          "63.856592 54.312478",
          "64.289932 54.353909"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77358,
          77359,
          77360
        ],
        "station_id": 11,
        "track_id": 77358
      },
      {
        "epoch": "2026-09-25T19:18:34.062315",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "a4a27450-90ea-5bfc-9717-70251ea5dddf",
          "aaa91c14-9d19-5730-ae9a-ba4b79f737f0"
        ],
        "object_norad_id": 68803,
        "positions": [
          "65.243855 59.648402",
          "67.492426 59.045465"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77394,
          77395
        ],
        "station_id": 11,
        "track_id": 77394
      },
      {
        "epoch": "2026-09-25T19:18:44.973413",
        "excluded_measurements": 4,
        "kind": "contradictory",
        "measurements": [
          "006599c8-21f2-5b09-b8c6-813d5bab2e37",
          "1cb853ac-a06e-55eb-a54e-794836bdf18b",
          "32c461d7-59de-5748-86f9-be14daaa7ce5",
          "c214df5f-0e17-5d25-a8e3-bdeca8e4e2cd"
        ],
        "object_norad_id": 68803,
        "positions": [
          "57.676615 61.272464",
          "59.065463 61.020409",
          "59.934302 60.851779",
          "60.443419 60.754812"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77394,
          77395,
          77396,
          77397
        ],
        "station_id": 11,
        "track_id": 77394
      },
      {
        "epoch": "2026-09-25T19:20:40.896601",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "d9ef87f6-7480-546f-befd-7da172da8eb7",
          "f648be8d-7b89-5fe7-9f4b-3c34f00189dc"
        ],
        "object_norad_id": 69689,
        "positions": [
          "66.500637 57.603553",
          "66.997625 57.478334"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77402,
          77403
        ],
        "station_id": 11,
        "track_id": 77402
      },
      {
        "epoch": "2026-09-25T19:52:02.730257",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "18650a97-1f18-52e7-97ef-4f0b9575f953",
          "eaaa572c-d1d4-5859-9e68-ae63050d696f"
        ],
        "object_norad_id": 64897,
        "positions": [
          "66.482492 52.897208",
          "68.027342 53.220695"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77473,
          77474
        ],
        "station_id": 11,
        "track_id": 77473
      },
      {
        "epoch": "2026-09-25T21:00:43.776768",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "38a79fed-9e6a-5d1b-9345-c37dda46e9fc",
          "ba4a4336-fa64-5067-9e42-e96e5ceb0373"
        ],
        "object_norad_id": 28095,
        "positions": [
          "84.485441 56.325099",
          "84.637574 55.012336"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77504,
          77505
        ],
        "station_id": 11,
        "track_id": 77504
      },
      {
        "epoch": "2026-09-26T01:17:51.420325",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "0811d0ab-3211-5f33-b1b8-3cc6423907e9",
          "a93ee340-eeca-5003-97d0-2283d355ca3e"
        ],
        "object_norad_id": 43754,
        "positions": [
          "143.089000 57.269007",
          "146.040935 57.143583"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77580,
          77581
        ],
        "station_id": 11,
        "track_id": 77580
      },
      {
        "epoch": "2026-09-26T02:09:07.418738",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "572c60bc-bd54-577e-bef9-2758496b83d6",
          "729002ae-ea48-5330-a525-2d53d0b221fd",
          "7a816ba9-923e-5c8c-8898-061f20a811cd"
        ],
        "object_norad_id": 23908,
        "positions": [
          "159.734548 61.437140",
          "159.911527 61.517792",
          "160.705635 61.861177"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77617,
          77618,
          77619
        ],
        "station_id": 11,
        "track_id": 77617
      },
      {
        "epoch": "2026-09-26T03:59:10.513363",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "23972a09-153a-5d50-a7d8-1f7b1644d361",
          "d0415003-ca8b-58ec-bf1e-f5aca5e78dfc"
        ],
        "object_norad_id": 10585,
        "positions": [
          "194.421558 58.947147",
          "197.036421 59.703775"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          77639,
          77640
        ],
        "station_id": 11,
        "track_id": 77639
      }
    ],
    "detail_omitted": 0,
    "epochs": 13,
    "measurements_excluded": 32,
    "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": 12,
    "tracks_left_without_observations": 20
  },
  "generated_at": "2026-09-29T11:47:14.772423Z",
  "generation_id": "0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57",
  "generator": "satnogs_optical_network.products",
  "iod": {
    "11": {
      "identified_lines": 45250,
      "identified_tracks": 310,
      "lines": 54999,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 9749,
      "unk_tracks": 97,
      "wide_id_tracks": 0
    },
    "15": {
      "identified_lines": 443,
      "identified_tracks": 17,
      "lines": 455,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 12,
      "unk_tracks": 11,
      "wide_id_tracks": 0
    },
    "7": {
      "identified_lines": 1756,
      "identified_tracks": 21,
      "lines": 2084,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 328,
      "unk_tracks": 7,
      "wide_id_tracks": 0
    }
  },
  "layout": {
    "generation_dir": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57",
    "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-09-25",
    "stations": "stations",
    "tracks": "tracks.parquet"
  },
  "metrics": {
    "measurements": 57540,
    "objects": 207,
    "stations": 3,
    "tracks": 464,
    "unk_tracks": 229
  },
  "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": 47417,
    "tdm_observations_expected": 47417,
    "tdm_observations_verified": true,
    "tdm_tracks": 328
  },
  "per_station": [
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 1756,
        "identified_tracks": 21,
        "lines": 2084,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 328,
        "unk_tracks": 7,
        "wide_id_tracks": 0
      },
      "iod_station_code": "7",
      "measurements": 2084,
      "name": "Drachten",
      "objects": 13,
      "station_id": 7,
      "tdm_tracks": 21,
      "tracks": 28,
      "unk_tracks": 15
    },
    {
      "epoch_collisions": 13,
      "iod": {
        "identified_lines": 45250,
        "identified_tracks": 310,
        "lines": 54999,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 9749,
        "unk_tracks": 97,
        "wide_id_tracks": 0
      },
      "iod_station_code": "11",
      "measurements": 55001,
      "name": "dwingeloo",
      "objects": 191,
      "station_id": 11,
      "tdm_tracks": 310,
      "tracks": 408,
      "unk_tracks": 192
    },
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 443,
        "identified_tracks": 17,
        "lines": 455,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 12,
        "unk_tracks": 11,
        "wide_id_tracks": 0
      },
      "iod_station_code": "15",
      "measurements": 455,
      "name": "Satnogs-optical",
      "objects": 6,
      "station_id": 15,
      "tdm_tracks": 17,
      "tracks": 28,
      "unk_tracks": 22
    }
  ],
  "products": [
    {
      "bytes": 9766,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/stations/station-11.json",
      "scope": "station-night",
      "scope_key": "11-2026-09-25",
      "sha256": "5f69914ce076047ae62b25059ddd56f09e4428808d94fc8670e999ed19b3a11b"
    },
    {
      "bytes": 9899,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/stations/station-15.json",
      "scope": "station-night",
      "scope_key": "15-2026-09-25",
      "sha256": "d45acaca45c243b8edeeef24e474138fb72b5455c1843ddb70aa5f4b42d1b838"
    },
    {
      "bytes": 9883,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/stations/station-7.json",
      "scope": "station-night",
      "scope_key": "7-2026-09-25",
      "sha256": "9618115da6c1a06737e9e30511ed24ca3d11c9eeceeffad99088ef701e5c2ac6"
    },
    {
      "bytes": 3684933,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/iod/station-11-2026-09-25.iod",
      "scope": "station-night",
      "scope_key": "11-2026-09-25",
      "sha256": "ef6bef37e3e2d9760c65df542020976d4894bda5f33ee78d24345fe8a43820b9"
    },
    {
      "bytes": 30485,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/iod/station-15-2026-09-25.iod",
      "scope": "station-night",
      "scope_key": "15-2026-09-25",
      "sha256": "6f705f730c3970fbe8d4db0df8f290165e76ca9accaa6a163c8b6dd66d5c0cc6"
    },
    {
      "bytes": 139628,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/iod/station-7-2026-09-25.iod",
      "scope": "station-night",
      "scope_key": "7-2026-09-25",
      "sha256": "0b67491cfb080122f226859d411ee7c936d736c0df17b941577bf331c4fd793d"
    },
    {
      "bytes": 6082021,
      "conformance": null,
      "kind": "parquet-session",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/measurements.parquet",
      "scope": "session",
      "scope_key": "2026-09-25",
      "sha256": "c6331ed1f4926717862c89aece26e85c4c18566d27be80312292552500344055"
    },
    {
      "bytes": 43219,
      "conformance": null,
      "kind": "parquet-tracks",
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/tracks.parquet",
      "scope": "session",
      "scope_key": "2026-09-25",
      "sha256": "20ce82f00a8486ca2dcff7f7f413a59f58671873bccc43b02b3d59c702390677"
    },
    {
      "bytes": 5337752,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-11-2026-09-25.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": 45218,
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/tdm/station-11-2026-09-25.tdm",
      "scope": "station-night",
      "scope_key": "11-2026-09-25",
      "sha256": "94368d438d4e2b669fdd51c06f9d4fd740f8823e921c57b98eb6803f94c04059"
    },
    {
      "bytes": 67369,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-15-2026-09-25.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": 443,
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/tdm/station-15-2026-09-25.tdm",
      "scope": "station-night",
      "scope_key": "15-2026-09-25",
      "sha256": "feee2054a671bff764fa9f5cc54e4e28bbbd8f32c392aaddfa93bd12ef027720"
    },
    {
      "bytes": 222402,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-7-2026-09-25.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": 1756,
      "path": "session_date=2026-09-25/generations/0f344a89f46e5506b3b2dddbecb3fc7ab33f77ec6c28aef3c1f0107aae26af57/tdm/station-7-2026-09-25.tdm",
      "scope": "station-night",
      "scope_key": "7-2026-09-25",
      "sha256": "7af4f71a7f0910af7f5e93ace55d45c952d82448d5fee83f88597120e02d1fef"
    }
  ],
  "quarantined_excluded": 0,
  "station": [
    7,
    11,
    15
  ],
  "stations": [
    7,
    11,
    15
  ],
  "tdm_excluded_epoch_collisions": 32,
  "tdm_skipped_no_observations": 20,
  "tdm_skipped_unk": 116
}
