{
  "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": 889,
    "note": "counts here move when correlation improves; the five primary metrics do not (see docs/decisions/0002-unk-participants.md)",
    "objects": 209,
    "objects_not_in_advisory": 49,
    "tracks_resolved_beyond_advisory": 86,
    "tracks_with_object": 265,
    "tracks_without_object": 55,
    "unk_designations": 54
  },
  "correlation_run_id": 889,
  "correlation_version": 4,
  "date": "2026-09-21",
  "epoch_collisions": {
    "detail": [
      {
        "epoch": "2026-09-21T18:46:53.846703",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "09488f53-1bb5-5c8b-b283-40734491fad7",
          "4103b93b-8303-57b1-bb36-e68b437deb04",
          "dd081d99-0ffc-52c3-8158-8ab65cf19967"
        ],
        "object_norad_id": 69746,
        "positions": [
          "51.458115 55.309996",
          "52.857064 55.026035",
          "53.763769 54.830635"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75180,
          75181,
          75182
        ],
        "station_id": 11,
        "track_id": 75180
      },
      {
        "epoch": "2026-09-21T19:24:27.817611",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "a3b24998-9ec5-5693-b6da-a26b7aa3e2af",
          "eae540d8-0a2c-5642-b1c2-09cc6314ed25"
        ],
        "object_norad_id": 65443,
        "positions": [
          "58.206337 51.795901",
          "58.816392 51.718722"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75217,
          75218
        ],
        "station_id": 11,
        "track_id": 75217
      },
      {
        "epoch": "2026-09-21T19:28:18.556899",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "23f8823d-07c9-5f55-a1ab-983a20dc90a9",
          "9a0d226b-d964-5417-a7b3-0e09634d45b9"
        ],
        "object_norad_id": 62331,
        "positions": [
          "51.020880 57.160445",
          "51.739105 57.094853"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75227,
          75228
        ],
        "station_id": 11,
        "track_id": 75227
      },
      {
        "epoch": "2026-09-21T19:37:56.564592",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "59833a68-0335-55c4-84e3-986822cdbe81",
          "abe0bbae-43d6-5fdd-bbc6-139671fb7197"
        ],
        "object_norad_id": 4047,
        "positions": [
          "67.787607 56.566579",
          "69.731065 57.904285"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75250,
          75252
        ],
        "station_id": 11,
        "track_id": 75250
      },
      {
        "epoch": "2026-09-21T19:38:28.593374",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "109c0153-21bb-5607-a8c1-62be36cce699",
          "45a8dbcd-1597-58a2-8362-e4ef73445d76"
        ],
        "object_norad_id": 6019,
        "positions": [
          "62.992149 58.743369",
          "66.977738 59.749818"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75253,
          75255
        ],
        "station_id": 11,
        "track_id": 75253
      },
      {
        "epoch": "2026-09-21T19:38:39.306395",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "6dc5cc5c-a3c6-5afe-b664-505010b217dc",
          "d9147b56-ba0b-5154-a5b9-a285042fb6d0"
        ],
        "object_norad_id": 6019,
        "positions": [
          "59.554306 57.756914",
          "62.325161 58.556487"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75253,
          75255
        ],
        "station_id": 11,
        "track_id": 75253
      },
      {
        "epoch": "2026-09-21T19:47:59.798277",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "e6937a7a-53a3-5fc3-a34a-879de090b6ec",
          "f49db56c-e31d-5695-939e-2544f2f5f9ba"
        ],
        "object_norad_id": 12783,
        "positions": [
          "63.216911 59.065246",
          "65.580149 60.248051"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75270,
          75271
        ],
        "station_id": 11,
        "track_id": 75270
      },
      {
        "epoch": "2026-09-21T19:47:59.798277",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "8369a891-2993-5919-bade-b3e1da14fdac",
          "edeb857c-3981-5355-9576-a963b5bbf2ad"
        ],
        "object_norad_id": 66410,
        "positions": [
          "62.446880 58.648735",
          "64.164934 59.556870"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75272,
          75273
        ],
        "station_id": 11,
        "track_id": 75272
      },
      {
        "epoch": "2026-09-21T20:32:38.151721",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "864d4b1a-e449-5146-80fa-22ff6b267df2",
          "d0367d68-9c71-5757-9cf3-2d1b1191f853"
        ],
        "object_norad_id": 43717,
        "positions": [
          "73.948292 60.723446",
          "76.855068 61.046496"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75345,
          75346
        ],
        "station_id": 11,
        "track_id": 75345
      },
      {
        "epoch": "2026-09-22T00:40:58.248575",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "3ac50f38-aa40-59fb-8502-4c80cc7d0b68",
          "c9a3c077-df06-58ef-959b-eea3b0c65337"
        ],
        "object_norad_id": 47691,
        "positions": [
          "140.991697 53.264768",
          "141.378593 53.995468"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75417,
          75418
        ],
        "station_id": 11,
        "track_id": 75417
      },
      {
        "epoch": "2026-09-22T01:38:17.089560",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "17c2bfa4-14b0-51e3-a439-cc0105aa12a6",
          "f9684acd-0f1c-5c91-a60c-e165c303dabd"
        ],
        "object_norad_id": 43754,
        "positions": [
          "147.084870 54.930044",
          "148.350540 54.882775"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75434,
          75435
        ],
        "station_id": 11,
        "track_id": 75434
      },
      {
        "epoch": "2026-09-22T01:56:10.113227",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "368d6384-e6f7-5e83-8ad2-ee684dfb10df",
          "fb808667-c5d6-5adf-9a14-460e93683442"
        ],
        "object_norad_id": 17536,
        "positions": [
          "148.429629 57.154256",
          "148.859504 57.355990"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75457,
          75458
        ],
        "station_id": 11,
        "track_id": 75457
      },
      {
        "epoch": "2026-09-22T01:58:08.638677",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "856e93fa-70a1-5dfa-86b8-84419b136660",
          "97f3bd42-4358-540e-b499-2c705770d169"
        ],
        "object_norad_id": 14618,
        "positions": [
          "155.290624 58.436056",
          "155.905526 58.193849"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75461,
          75462
        ],
        "station_id": 11,
        "track_id": 75461
      },
      {
        "epoch": "2026-09-22T02:53:15.705507",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "4d4c8d0f-d34f-5fef-b8fa-c6d64da39dfd",
          "5e25cea0-0264-5dae-b389-2c9352796fdb"
        ],
        "object_norad_id": 35865,
        "positions": [
          "165.159159 55.407678",
          "166.044145 55.297592"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75478,
          75479
        ],
        "station_id": 11,
        "track_id": 75478
      },
      {
        "epoch": "2026-09-22T02:54:18.972579",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "3e6a17da-08ad-5747-8d7f-3e77ab536c9a",
          "8dc91c08-99d5-5c99-bdd6-7ae217f6b24c"
        ],
        "object_norad_id": 26905,
        "positions": [
          "169.753966 57.129387",
          "169.904767 55.757809"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          75481,
          75482
        ],
        "station_id": 11,
        "track_id": 75481
      }
    ],
    "detail_omitted": 0,
    "epochs": 15,
    "measurements_excluded": 31,
    "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": 14,
    "tracks_left_without_observations": 18
  },
  "generated_at": "2026-09-24T06:43:09.883796Z",
  "generation_id": "c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8",
  "generator": "satnogs_optical_network.products",
  "iod": {
    "11": {
      "identified_lines": 27060,
      "identified_tracks": 218,
      "lines": 29512,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 2452,
      "unk_tracks": 34,
      "wide_id_tracks": 0
    },
    "15": {
      "identified_lines": 1198,
      "identified_tracks": 29,
      "lines": 1321,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 123,
      "unk_tracks": 11,
      "wide_id_tracks": 0
    },
    "7": {
      "identified_lines": 748,
      "identified_tracks": 18,
      "lines": 760,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 12,
      "unk_tracks": 9,
      "wide_id_tracks": 0
    }
  },
  "layout": {
    "generation_dir": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8",
    "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-21",
    "stations": "stations",
    "tracks": "tracks.parquet"
  },
  "metrics": {
    "measurements": 31596,
    "objects": 164,
    "stations": 3,
    "tracks": 320,
    "unk_tracks": 134
  },
  "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": 28975,
    "tdm_observations_expected": 28975,
    "tdm_observations_verified": true,
    "tdm_tracks": 247
  },
  "per_station": [
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 748,
        "identified_tracks": 18,
        "lines": 760,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 12,
        "unk_tracks": 9,
        "wide_id_tracks": 0
      },
      "iod_station_code": "7",
      "measurements": 760,
      "name": "Drachten",
      "objects": 9,
      "station_id": 7,
      "tdm_tracks": 18,
      "tracks": 27,
      "unk_tracks": 18
    },
    {
      "epoch_collisions": 15,
      "iod": {
        "identified_lines": 27060,
        "identified_tracks": 218,
        "lines": 29512,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 2452,
        "unk_tracks": 34,
        "wide_id_tracks": 0
      },
      "iod_station_code": "11",
      "measurements": 29515,
      "name": "dwingeloo",
      "objects": 145,
      "station_id": 11,
      "tdm_tracks": 218,
      "tracks": 253,
      "unk_tracks": 90
    },
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 1198,
        "identified_tracks": 29,
        "lines": 1321,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 123,
        "unk_tracks": 11,
        "wide_id_tracks": 0
      },
      "iod_station_code": "15",
      "measurements": 1321,
      "name": "Satnogs-optical",
      "objects": 11,
      "station_id": 15,
      "tdm_tracks": 29,
      "tracks": 40,
      "unk_tracks": 26
    }
  ],
  "products": [
    {
      "bytes": 9761,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/stations/station-11.json",
      "scope": "station-night",
      "scope_key": "11-2026-09-21",
      "sha256": "690a3466c2d94d60dc6ab6418934f4d3e85d1c6e671669f0b4edfc68a29fdb82"
    },
    {
      "bytes": 9871,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/stations/station-15.json",
      "scope": "station-night",
      "scope_key": "15-2026-09-21",
      "sha256": "a5d7b4431e2271d9f10d9ebadbde3c0346169aaa88f949c7be32d5dac731cceb"
    },
    {
      "bytes": 9865,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/stations/station-7.json",
      "scope": "station-night",
      "scope_key": "7-2026-09-21",
      "sha256": "70144f592e1a0a5cd36b8abb5aade01a72821dc6a949c628b3b4ad04e3f90450"
    },
    {
      "bytes": 1977304,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/iod/station-11-2026-09-21.iod",
      "scope": "station-night",
      "scope_key": "11-2026-09-21",
      "sha256": "ce7eeb14f4dc9e42e48c98bc9e34e46c933beebcdfeb36942aa29bb8c91276f9"
    },
    {
      "bytes": 88507,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/iod/station-15-2026-09-21.iod",
      "scope": "station-night",
      "scope_key": "15-2026-09-21",
      "sha256": "6f0487db6ba4224610838377258ec7c0bab5d826f0dba32c6496633ee74b7ab9"
    },
    {
      "bytes": 50920,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/iod/station-7-2026-09-21.iod",
      "scope": "station-night",
      "scope_key": "7-2026-09-21",
      "sha256": "53813ee9d73c33aeb08464bb5c9d77be6261bde5226f025d3fecab63df310f51"
    },
    {
      "bytes": 3342807,
      "conformance": null,
      "kind": "parquet-session",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/measurements.parquet",
      "scope": "session",
      "scope_key": "2026-09-21",
      "sha256": "d9b76c85fb5dc8777ac6bc0347bd030343750a07c594010d3a5e8880034be8ef"
    },
    {
      "bytes": 32344,
      "conformance": null,
      "kind": "parquet-tracks",
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/tracks.parquet",
      "scope": "session",
      "scope_key": "2026-09-21",
      "sha256": "ee871030a8ea9ec3945ff7ac78500f3b9c3cf36ac4b2b5fb9ae3b791bdb99b41"
    },
    {
      "bytes": 3210304,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-11-2026-09-21.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": 27029,
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/tdm/station-11-2026-09-21.tdm",
      "scope": "station-night",
      "scope_key": "11-2026-09-21",
      "sha256": "dd3b3e6c0f48734d97ae2252c95a625d840c1dfb5c2489a55b1b06b20d273c78"
    },
    {
      "bytes": 165684,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-15-2026-09-21.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": 1198,
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/tdm/station-15-2026-09-21.tdm",
      "scope": "station-night",
      "scope_key": "15-2026-09-21",
      "sha256": "0f06510121762ea59124375d793f58847e18680d4f1108768e33f9f8987ffb0e"
    },
    {
      "bytes": 103654,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-7-2026-09-21.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": 748,
      "path": "session_date=2026-09-21/generations/c8a9045ea794a1ac41aff2096b05c7e15e7eaaab8533ab25dde0431019e63ef8/tdm/station-7-2026-09-21.tdm",
      "scope": "station-night",
      "scope_key": "7-2026-09-21",
      "sha256": "a6e751f9df2f2310357af29c56bbec1035e5944bbf9daa3e1a741eaa3b306578"
    }
  ],
  "quarantined_excluded": 0,
  "station": [
    7,
    11,
    15
  ],
  "stations": [
    7,
    11,
    15
  ],
  "tdm_excluded_epoch_collisions": 31,
  "tdm_skipped_no_observations": 18,
  "tdm_skipped_unk": 55
}
