{
  "conformance": {
    "checked": 2,
    "counts": {
      "SKIPPED": 2
    },
    "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": 637,
    "note": "counts here move when correlation improves; the five primary metrics do not (see docs/decisions/0002-unk-participants.md)",
    "objects": 312,
    "objects_not_in_advisory": 72,
    "tracks_resolved_beyond_advisory": 115,
    "tracks_with_object": 383,
    "tracks_without_object": 178,
    "unk_designations": 148
  },
  "correlation_run_id": 637,
  "correlation_version": 5,
  "date": "2026-09-09",
  "epoch_collisions": {
    "detail": [
      {
        "epoch": "2026-09-09T19:25:44.349560",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "70af85f0-8081-5ba0-9d1e-9a7db8970aab",
          "7ce3d16e-2a2c-5653-80e5-80d0a17c80ba"
        ],
        "object_norad_id": 54149,
        "positions": [
          "205.282781 58.844479",
          "205.943127 58.655789"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          67879,
          67880
        ],
        "station_id": 7,
        "track_id": 67879
      },
      {
        "epoch": "2026-09-09T19:58:27.846911",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "805ba8c0-2833-5c6f-a425-2a3ebd81985d",
          "bf98e0ad-e5fe-51f7-95a4-0365dc3b3daf"
        ],
        "object_norad_id": 55763,
        "positions": [
          "215.131226 54.910870",
          "217.137701 54.920574"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          67891,
          67892
        ],
        "station_id": 7,
        "track_id": 67891
      },
      {
        "epoch": "2026-09-09T20:01:17.146681",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "6fe88d9f-1d68-55c1-a849-99042cdbac95",
          "ec88f50d-874d-5aae-84a8-8a61e2b53c0f",
          "ee181a81-60f1-5c5f-9a62-2bf50dafd28e"
        ],
        "object_norad_id": 13844,
        "positions": [
          "215.164560 52.748041",
          "216.444714 53.003412",
          "218.844034 53.436087"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          67895,
          67896,
          67897
        ],
        "station_id": 7,
        "track_id": 67895
      },
      {
        "epoch": "2026-09-09T20:53:08.386621",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "b0e09338-be1f-5419-850a-875b73fd2016",
          "dfe3603c-b5ed-5d88-b425-101679d02edb"
        ],
        "object_norad_id": 63923,
        "positions": [
          "71.153169 60.277112",
          "71.916337 60.286604"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68034,
          68036
        ],
        "station_id": 11,
        "track_id": 68034
      },
      {
        "epoch": "2026-09-09T21:16:58.339906",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "155053f0-a0bf-5511-abac-604ef124cdc1",
          "bd198bd4-5c4e-57c6-a54c-b61d07ada161"
        ],
        "object_norad_id": 55956,
        "positions": [
          "238.867427 55.844373",
          "240.389204 55.815618"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68095,
          68096
        ],
        "station_id": 7,
        "track_id": 68095
      },
      {
        "epoch": "2026-09-09T21:33:32.838339",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "15c88161-6c98-52c5-ae39-deea91b2a8bd",
          "7a7ff04e-487e-5f32-b0b2-bfe73e011a09",
          "ed61c266-9e42-50f0-bde8-2999951e68c3"
        ],
        "object_norad_id": 55299,
        "positions": [
          "236.474964 55.671435",
          "236.993494 55.157683",
          "237.780398 54.344636"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68119,
          68120,
          68121
        ],
        "station_id": 7,
        "track_id": 68119
      },
      {
        "epoch": "2026-09-09T21:37:32.385754",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "380e1b01-8f64-5aa8-9f9f-00e09a381650",
          "405db56d-3dbd-50ff-aef1-48cd0f1c0449"
        ],
        "object_norad_id": 69081,
        "positions": [
          "90.050606 55.499855",
          "90.666003 55.462039"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68134,
          68135
        ],
        "station_id": 11,
        "track_id": 68134
      },
      {
        "epoch": "2026-09-09T22:05:48.635206",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "712a1217-50c6-5418-b8d3-3e93c80f39e8",
          "997e20ff-bf32-5eb3-8964-4fe970911a09"
        ],
        "object_norad_id": 28654,
        "positions": [
          "242.786078 57.673466",
          "244.651432 57.420460"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68165,
          68166
        ],
        "station_id": 7,
        "track_id": 68165
      },
      {
        "epoch": "2026-09-09T23:55:23.137329",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "d2cb705e-1901-5d2e-a702-a72392a44fff",
          "ebcc8330-d6ed-5382-8f51-2867609aa8c3"
        ],
        "object_norad_id": 12710,
        "positions": [
          "111.804772 55.723539",
          "112.384616 55.818428"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68272,
          68273
        ],
        "station_id": 11,
        "track_id": 68272
      },
      {
        "epoch": "2026-09-10T00:55:22.211291",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "ae32206b-3d83-5276-a5db-75c7e3aa465b",
          "b219c967-b4c8-5689-9992-296feaf329a9"
        ],
        "object_norad_id": 52895,
        "positions": [
          "135.321076 59.538530",
          "136.234326 59.614155"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68308,
          68309
        ],
        "station_id": 11,
        "track_id": 68308
      },
      {
        "epoch": "2026-09-10T00:57:53.969800",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "006844e0-7830-5704-8eaa-85096829f9d8",
          "98b7bb74-1318-5775-9037-65ddc2a346d8"
        ],
        "object_norad_id": 18709,
        "positions": [
          "134.640815 60.699916",
          "135.638793 60.506119"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68310,
          68311
        ],
        "station_id": 11,
        "track_id": 68310
      },
      {
        "epoch": "2026-09-10T03:16:29.832478",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "a76f908e-69a5-5033-bfd4-12042e4a372e",
          "c14edc95-a88e-5d50-94f3-539e7b2a0c2e"
        ],
        "object_norad_id": 60239,
        "positions": [
          "167.666671 54.013809",
          "168.377150 54.413628"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68397,
          68398
        ],
        "station_id": 11,
        "track_id": 68397
      },
      {
        "epoch": "2026-09-10T03:29:34.554363",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "67af9576-f22b-52d8-81d9-9c32298e152a",
          "73266751-b00e-597a-b19b-97a8d0347f1b"
        ],
        "object_norad_id": 18123,
        "positions": [
          "170.130733 53.008818",
          "172.456820 53.478429"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68403,
          68404
        ],
        "station_id": 11,
        "track_id": 68403
      },
      {
        "epoch": "2026-09-10T03:31:12.556587",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "e121029c-b6c4-5232-80a6-973478af9876",
          "f9f3111e-8e52-5955-8b2d-5fb8f819999d"
        ],
        "object_norad_id": 56470,
        "positions": [
          "171.415836 53.794282",
          "172.169101 53.147918"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68405,
          68406
        ],
        "station_id": 11,
        "track_id": 68405
      },
      {
        "epoch": "2026-09-10T03:33:45.317441",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "33a237b9-936f-540d-ac9b-fe85963f2a03",
          "66ae6396-126f-55d9-b4a5-df9e66dc42d9"
        ],
        "object_norad_id": 41919,
        "positions": [
          "161.326251 57.735177",
          "162.030815 57.752599"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68408,
          68409
        ],
        "station_id": 11,
        "track_id": 68408
      },
      {
        "epoch": "2026-09-10T03:34:07.138327",
        "excluded_measurements": 3,
        "kind": "contradictory",
        "measurements": [
          "10ac8f30-435b-5bd9-beca-4227442e72dd",
          "1c685a09-982a-56a2-9a7f-c0318693353e",
          "f2043c4b-0222-543c-8cdc-612275b55c8a"
        ],
        "object_norad_id": 41919,
        "positions": [
          "168.509210 57.709643",
          "169.956759 57.649224",
          "171.586790 57.559857"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68408,
          68409,
          68410
        ],
        "station_id": 11,
        "track_id": 68408
      },
      {
        "epoch": "2026-09-10T03:48:04.318784",
        "excluded_measurements": 2,
        "kind": "contradictory",
        "measurements": [
          "4201c4af-c891-5d5c-8f35-5df4561ef28a",
          "874a24f1-4580-5c60-baa8-4b8a9c57c70d"
        ],
        "object_norad_id": 55274,
        "positions": [
          "174.947196 54.110861",
          "175.696527 54.364362"
        ],
        "published_observations": 0,
        "scope": "sibling-tracks",
        "sibling_track_ids": [
          68424,
          68425
        ],
        "station_id": 11,
        "track_id": 68424
      }
    ],
    "detail_omitted": 0,
    "epochs": 17,
    "measurements_excluded": 37,
    "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": 16,
    "tracks_left_without_observations": 25
  },
  "generated_at": "2026-09-22T23:11:21.370008Z",
  "generation_id": "12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6",
  "generator": "satnogs_optical_network.products",
  "iod": {
    "11": {
      "identified_lines": 47417,
      "identified_tracks": 331,
      "lines": 53954,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 6537,
      "unk_tracks": 129,
      "wide_id_tracks": 0
    },
    "7": {
      "identified_lines": 2231,
      "identified_tracks": 52,
      "lines": 2928,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 697,
      "unk_tracks": 19,
      "wide_id_tracks": 0
    }
  },
  "layout": {
    "generation_dir": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6",
    "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-09",
    "stations": "stations",
    "tracks": "tracks.parquet"
  },
  "metrics": {
    "measurements": 57003,
    "objects": 246,
    "stations": 2,
    "tracks": 561,
    "unk_tracks": 282
  },
  "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": 2,
    "tdm_observations": 49611,
    "tdm_observations_expected": 49611,
    "tdm_observations_verified": true,
    "tdm_tracks": 358
  },
  "per_station": [
    {
      "epoch_collisions": 6,
      "iod": {
        "identified_lines": 2231,
        "identified_tracks": 52,
        "lines": 2928,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 697,
        "unk_tracks": 19,
        "wide_id_tracks": 0
      },
      "iod_station_code": "7",
      "measurements": 2928,
      "name": "Drachten",
      "objects": 29,
      "station_id": 7,
      "tdm_tracks": 52,
      "tracks": 71,
      "unk_tracks": 39
    },
    {
      "epoch_collisions": 11,
      "iod": {
        "identified_lines": 47417,
        "identified_tracks": 331,
        "lines": 53954,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 6537,
        "unk_tracks": 129,
        "wide_id_tracks": 0
      },
      "iod_station_code": "11",
      "measurements": 54075,
      "name": "dwingeloo",
      "objects": 219,
      "station_id": 11,
      "tdm_tracks": 331,
      "tracks": 490,
      "unk_tracks": 243
    }
  ],
  "products": [
    {
      "bytes": 9555,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/stations/station-11.json",
      "scope": "station-night",
      "scope_key": "11-2026-09-09",
      "sha256": "627d9ab344e790ae323cf5b0a26f6356213749c751dc410785397f97e2312430"
    },
    {
      "bytes": 9647,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/stations/station-7.json",
      "scope": "station-night",
      "scope_key": "7-2026-09-09",
      "sha256": "e2768b8b417c5a54f27bc1b504e5166206c6805abaadd0ee6c61ae6f3847b74a"
    },
    {
      "bytes": 3614918,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/iod/station-11-2026-09-09.iod",
      "scope": "station-night",
      "scope_key": "11-2026-09-09",
      "sha256": "5efdd836db0e5d0ea459e85a06b8098b92bff0bce5e296e8a8d063ae9e67e6ce"
    },
    {
      "bytes": 196176,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/iod/station-7-2026-09-09.iod",
      "scope": "station-night",
      "scope_key": "7-2026-09-09",
      "sha256": "03f9682129307ece2e58c6695ab3d9235030fdcd78b539389cc7db34cbecad9c"
    },
    {
      "bytes": 5971602,
      "conformance": null,
      "kind": "parquet-session",
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/measurements.parquet",
      "scope": "session",
      "scope_key": "2026-09-09",
      "sha256": "9c98b27085c2e7f57ac78d780a723d51981a7b2a2f24cfab3c3c286105610ddf"
    },
    {
      "bytes": 50407,
      "conformance": null,
      "kind": "parquet-tracks",
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/tracks.parquet",
      "scope": "session",
      "scope_key": "2026-09-09",
      "sha256": "3fa7d3b5799c7fd7f9b6269efa584e638c2803d0244a93f0e4bd179617f0e908"
    },
    {
      "bytes": 5608853,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-11-2026-09-09.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": 47394,
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/tdm/station-11-2026-09-09.tdm",
      "scope": "station-night",
      "scope_key": "11-2026-09-09",
      "sha256": "a747c5c40e2e054722f077f8d9941f6bf6568d7cfb95cb30fabc47da26f69c23"
    },
    {
      "bytes": 295436,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-7-2026-09-09.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": 2217,
      "path": "session_date=2026-09-09/generations/12c6fc0f58e896494fef2c448561965c0570a55e068ce22cab266d72c6e457f6/tdm/station-7-2026-09-09.tdm",
      "scope": "station-night",
      "scope_key": "7-2026-09-09",
      "sha256": "1b88f6d772e5f79b99d09c7c906b72c2cf02acad545eeeca86169e8748434f64"
    }
  ],
  "quarantined_excluded": 0,
  "station": [
    7,
    11
  ],
  "stations": [
    7,
    11
  ],
  "tdm_excluded_epoch_collisions": 37,
  "tdm_skipped_no_observations": 25,
  "tdm_skipped_unk": 178
}
