{
  "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": 716,
    "note": "counts here move when correlation improves; the five primary metrics do not (see docs/decisions/0002-unk-participants.md)",
    "objects": 65,
    "objects_not_in_advisory": 20,
    "tracks_resolved_beyond_advisory": 32,
    "tracks_with_object": 80,
    "tracks_without_object": 23,
    "unk_designations": 23
  },
  "correlation_run_id": 716,
  "correlation_version": 3,
  "date": "2026-09-14",
  "epoch_collisions": {
    "detail": [
      {
        "epoch": "2026-09-15T03:00:36.600368",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "dcbe1e76-094e-5026-b8a1-be325d671e41",
          "fe2cc9ca-e27b-5d87-887f-133b16972bef"
        ],
        "object_norad_id": 69860,
        "positions": [
          "158.621006 62.783648",
          "159.938073 62.816231"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73557,
          73558
        ],
        "station_id": 11,
        "track_id": 73557
      },
      {
        "epoch": "2026-09-15T03:00:47.208956",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "199775e1-cc85-5667-aae8-ffe222db2b08",
          "4893e3d2-a3bd-5712-a7b7-efc6c01dfc20"
        ],
        "object_norad_id": 69860,
        "positions": [
          "162.326773 62.836402",
          "165.479975 62.799119"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73557,
          73558
        ],
        "station_id": 11,
        "track_id": 73557
      },
      {
        "epoch": "2026-09-15T03:02:01.792080",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "09a990c4-7700-549c-94bf-1a8e45b24eae",
          "834802f0-8631-5ad4-938f-7e75bc4557d9"
        ],
        "object_norad_id": 69854,
        "positions": [
          "165.321520 63.412826",
          "166.814661 63.364044"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73559,
          73560
        ],
        "station_id": 11,
        "track_id": 73559
      },
      {
        "epoch": "2026-09-15T03:27:51.919896",
        "excluded_measurements": 4,
        "kind": "contradictory",
        "measurements": [
          "37fef5ad-75ef-5d6b-a063-a7979dfd3d10",
          "a55f8c13-dfab-5d6a-8ebb-6a23a0ac737e",
          "a6f1694d-8b92-567c-b6fb-af5244089c1c",
          "d179b884-7de4-534f-a82f-7c26a208e728"
        ],
        "object_norad_id": 66953,
        "positions": [
          "170.728659 61.158613",
          "171.520266 61.197242",
          "172.203207 61.228812",
          "172.879985 61.255808"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73575,
          73576,
          73577,
          73578
        ],
        "station_id": 11,
        "track_id": 73575
      },
      {
        "epoch": "2026-09-15T03:28:02.829262",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "23bf148d-d27e-564a-9c27-8652eec510ec",
          "a7939f1c-6f27-5d55-9996-98da3b17748c"
        ],
        "object_norad_id": 66953,
        "positions": [
          "168.605881 61.023036",
          "170.067640 61.118741"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73575,
          73576
        ],
        "station_id": 11,
        "track_id": 73575
      },
      {
        "epoch": "2026-09-15T03:35:31.300544",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "e024c8c1-4ad2-5116-87c9-8c6da4fc2fe4",
          "ed9f94ba-ca31-5daa-9a29-2fa81e2f5971",
          "f6e7cdaf-b2ab-5da2-905d-b1010e9922e6"
        ],
        "object_norad_id": 18123,
        "positions": [
          "170.989799 54.059634",
          "172.019585 54.316054",
          "173.331983 54.623959"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73584,
          73585,
          73586
        ],
        "station_id": 11,
        "track_id": 73584
      },
      {
        "epoch": "2026-09-15T03:35:42.007127",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "7a460dc4-cd4a-5642-92a3-cca78b74fbba",
          "ae60063b-c060-58c7-afc1-8a29bd75cde2",
          "f2e6f61a-829c-51c4-be91-20fbb2d1e4ff"
        ],
        "object_norad_id": 18123,
        "positions": [
          "174.596332 54.887234",
          "175.972259 55.167027",
          "177.121553 55.381697"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73584,
          73585,
          73586
        ],
        "station_id": 11,
        "track_id": 73584
      },
      {
        "epoch": "2026-09-15T03:35:52.818908",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "99fc8daa-7fb3-5b7f-b7ff-15b69b819563",
          "bedbf018-ebd6-5174-a9fb-b96878cda3dc",
          "c65a21c8-f38e-5588-ba4a-d23e8d57f55e"
        ],
        "object_norad_id": 18123,
        "positions": [
          "178.670595 55.640333",
          "179.742174 55.809066",
          "181.127059 56.008021"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73584,
          73585,
          73586
        ],
        "station_id": 11,
        "track_id": 73584
      },
      {
        "epoch": "2026-09-15T03:59:38.230142",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "a04976df-0fbd-5085-9531-1254db9ac515",
          "de0dd0c7-4c99-5b52-9112-655117fce103",
          "e9cd8bff-7e59-5eb7-9baa-1c4e55d3c402"
        ],
        "object_norad_id": 43010,
        "positions": [
          "173.523715 60.297342",
          "175.066708 60.050087",
          "175.966929 59.894271"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          73594,
          73595,
          73596
        ],
        "station_id": 11,
        "track_id": 73594
      }
    ],
    "detail_omitted": 0,
    "epochs": 9,
    "measurements_excluded": 24,
    "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": 5,
    "tracks_left_without_observations": 9
  },
  "generated_at": "2026-09-22T22:53:07.124463Z",
  "generation_id": "061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd",
  "generator": "satnogs_optical_network.products",
  "iod": {
    "11": {
      "identified_lines": 7573,
      "identified_tracks": 74,
      "lines": 8580,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 1007,
      "unk_tracks": 17,
      "wide_id_tracks": 0
    },
    "15": {
      "identified_lines": 325,
      "identified_tracks": 5,
      "lines": 379,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 54,
      "unk_tracks": 6,
      "wide_id_tracks": 0
    },
    "7": {
      "identified_lines": 121,
      "identified_tracks": 1,
      "lines": 121,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 0,
      "unk_tracks": 0,
      "wide_id_tracks": 0
    }
  },
  "layout": {
    "generation_dir": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd",
    "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-14",
    "stations": "stations",
    "tracks": "tracks.parquet"
  },
  "metrics": {
    "measurements": 9080,
    "objects": 46,
    "stations": 3,
    "tracks": 103,
    "unk_tracks": 53
  },
  "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": 7995,
    "tdm_observations_expected": 7995,
    "tdm_observations_verified": true,
    "tdm_tracks": 71
  },
  "per_station": [
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 121,
        "identified_tracks": 1,
        "lines": 121,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 0,
        "unk_tracks": 0,
        "wide_id_tracks": 0
      },
      "iod_station_code": "7",
      "measurements": 121,
      "name": "Drachten",
      "objects": 1,
      "station_id": 7,
      "tdm_tracks": 1,
      "tracks": 1,
      "unk_tracks": 0
    },
    {
      "epoch_collisions": 9,
      "iod": {
        "identified_lines": 7573,
        "identified_tracks": 74,
        "lines": 8580,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 1007,
        "unk_tracks": 17,
        "wide_id_tracks": 0
      },
      "iod_station_code": "11",
      "measurements": 8580,
      "name": "dwingeloo",
      "objects": 42,
      "station_id": 11,
      "tdm_tracks": 74,
      "tracks": 91,
      "unk_tracks": 45
    },
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 325,
        "identified_tracks": 5,
        "lines": 379,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 54,
        "unk_tracks": 6,
        "wide_id_tracks": 0
      },
      "iod_station_code": "15",
      "measurements": 379,
      "name": "Satnogs-optical",
      "objects": 3,
      "station_id": 15,
      "tdm_tracks": 5,
      "tracks": 11,
      "unk_tracks": 8
    }
  ],
  "products": [
    {
      "bytes": 9551,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/stations/station-11.json",
      "scope": "station-night",
      "scope_key": "11-2026-09-14",
      "sha256": "511782cb01a294b0bd85fb6c25bdc0cde93724c9f40539748f73749274178f77"
    },
    {
      "bytes": 9407,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/stations/station-15.json",
      "scope": "station-night",
      "scope_key": "15-2026-09-14",
      "sha256": "c1f5cd6cfc09349e2097abd65743b9e9f50e5515f3a2161ce2c2fa8c1fcb0b02"
    },
    {
      "bytes": 9648,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/stations/station-7.json",
      "scope": "station-night",
      "scope_key": "7-2026-09-14",
      "sha256": "cd28f30d6e246a59585084fd701c80ebcba887cf104b67b7c19b91034d8ba33f"
    },
    {
      "bytes": 574860,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/iod/station-11-2026-09-14.iod",
      "scope": "station-night",
      "scope_key": "11-2026-09-14",
      "sha256": "cf5a067f26168d805590d3c27c552476a98dd1be323466a138d3b02eebc44c8e"
    },
    {
      "bytes": 25393,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/iod/station-15-2026-09-14.iod",
      "scope": "station-night",
      "scope_key": "15-2026-09-14",
      "sha256": "5a9192b80dc8180fcfff6aa4e2c80f258bf0540d07057129b91c8c407f5d6964"
    },
    {
      "bytes": 8107,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/iod/station-7-2026-09-14.iod",
      "scope": "station-night",
      "scope_key": "7-2026-09-14",
      "sha256": "4179b3e4faa2f19fe0bb28a10ad97a7501c79f327c0eebcc8140f0fa1474096f"
    },
    {
      "bytes": 981981,
      "conformance": null,
      "kind": "parquet-session",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/measurements.parquet",
      "scope": "session",
      "scope_key": "2026-09-14",
      "sha256": "6c86a36747d9c46a22c0996d70a089702de82695a7917fc0e0299b206ba5c4df"
    },
    {
      "bytes": 15830,
      "conformance": null,
      "kind": "parquet-tracks",
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/tracks.parquet",
      "scope": "session",
      "scope_key": "2026-09-14",
      "sha256": "91743e28abaa5702f5744e20daaba9e0211ade89e8f3620d8c0eeaa17e36a86d"
    },
    {
      "bytes": 907649,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-11-2026-09-14.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": 7549,
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/tdm/station-11-2026-09-14.tdm",
      "scope": "station-night",
      "scope_key": "11-2026-09-14",
      "sha256": "b9ef5d8c3c6e94eec544018909eea72f69c5bdc2e069831ab9ae339aea59a05e"
    },
    {
      "bytes": 42506,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-15-2026-09-14.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": 325,
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/tdm/station-15-2026-09-14.tdm",
      "scope": "station-night",
      "scope_key": "15-2026-09-14",
      "sha256": "2a7c38c6e299ad5ac3069ad9d6ba599738a8ba8ae7a570bba27229704d548f71"
    },
    {
      "bytes": 15467,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-7-2026-09-14.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": 121,
      "path": "session_date=2026-09-14/generations/061f8a11d43247f02a8c0eb466d2f7f1b2322f8d9b0cf571f3862094683cc1bd/tdm/station-7-2026-09-14.tdm",
      "scope": "station-night",
      "scope_key": "7-2026-09-14",
      "sha256": "d9023d4852754ae4c3f2dd69208261d9f5a678fae844e98b6771206345f11400"
    }
  ],
  "quarantined_excluded": 0,
  "station": [
    7,
    11,
    15
  ],
  "stations": [
    7,
    11,
    15
  ],
  "tdm_excluded_epoch_collisions": 24,
  "tdm_skipped_no_observations": 9,
  "tdm_skipped_unk": 23
}
