{
  "conformance": {
    "checked": 1,
    "counts": {
      "SKIPPED": 1
    },
    "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": 662,
    "note": "counts here move when correlation improves; the five primary metrics do not (see docs/decisions/0002-unk-participants.md)",
    "objects": 4,
    "objects_not_in_advisory": 2,
    "tracks_resolved_beyond_advisory": 3,
    "tracks_with_object": 5,
    "tracks_without_object": 2,
    "unk_designations": 0
  },
  "correlation_run_id": 662,
  "correlation_version": 5,
  "date": "2026-09-10",
  "epoch_collisions": {
    "detail": [],
    "detail_omitted": 0,
    "epochs": 0,
    "measurements_excluded": 0,
    "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": 0,
    "tracks_left_without_observations": 0
  },
  "generated_at": "2026-09-22T23:02:07.608954Z",
  "generation_id": "5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8",
  "generator": "satnogs_optical_network.products",
  "iod": {
    "7": {
      "identified_lines": 334,
      "identified_tracks": 5,
      "lines": 334,
      "skipped": 0,
      "skipped_reasons": [],
      "unk_lines": 0,
      "unk_tracks": 0,
      "wide_id_tracks": 0
    }
  },
  "layout": {
    "generation_dir": "session_date=2026-09-10/generations/5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8",
    "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-10",
    "stations": "stations",
    "tracks": "tracks.parquet"
  },
  "metrics": {
    "measurements": 340,
    "objects": 2,
    "stations": 1,
    "tracks": 7,
    "unk_tracks": 5
  },
  "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": 1,
    "tdm_observations": 334,
    "tdm_observations_expected": 334,
    "tdm_observations_verified": true,
    "tdm_tracks": 5
  },
  "per_station": [
    {
      "epoch_collisions": 0,
      "iod": {
        "identified_lines": 334,
        "identified_tracks": 5,
        "lines": 334,
        "skipped": 0,
        "skipped_reasons": [],
        "unk_lines": 0,
        "unk_tracks": 0,
        "wide_id_tracks": 0
      },
      "iod_station_code": "7",
      "measurements": 340,
      "name": "Drachten",
      "objects": 2,
      "station_id": 7,
      "tdm_tracks": 5,
      "tracks": 7,
      "unk_tracks": 5
    }
  ],
  "products": [
    {
      "bytes": 9669,
      "conformance": null,
      "kind": "characterisation-station",
      "path": "session_date=2026-09-10/generations/5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8/stations/station-7.json",
      "scope": "station-night",
      "scope_key": "7-2026-09-10",
      "sha256": "b8aec19866c029a63abe5e526736f6a61d27b1d72e5cb704388117385c2918fc"
    },
    {
      "bytes": 22378,
      "conformance": null,
      "kind": "iod-station-night",
      "path": "session_date=2026-09-10/generations/5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8/iod/station-7-2026-09-10.iod",
      "scope": "station-night",
      "scope_key": "7-2026-09-10",
      "sha256": "a195d63bc9aecaebcb87a3ba1075dd897ba6becf4adcd75a5bc97fc3e2cbed2d"
    },
    {
      "bytes": 48966,
      "conformance": null,
      "kind": "parquet-session",
      "path": "session_date=2026-09-10/generations/5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8/measurements.parquet",
      "scope": "session",
      "scope_key": "2026-09-10",
      "sha256": "23d37dd49b46848dd1880369ad77e360cac87b23c28a0197cf53eb8727dd7434"
    },
    {
      "bytes": 8205,
      "conformance": null,
      "kind": "parquet-tracks",
      "path": "session_date=2026-09-10/generations/5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8/tracks.parquet",
      "scope": "session",
      "scope_key": "2026-09-10",
      "sha256": "1f718fb1e1420a67751c792dd0b436fbca4c13d107fa1caa146156d992c6b2fb"
    },
    {
      "bytes": 43739,
      "conformance": "SKIPPED: Orekit conformance NOT VERIFIED for station-7-2026-09-10.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": 334,
      "path": "session_date=2026-09-10/generations/5dfdac0b4d1e9948a8d407e16d80b4be97cbf6ebc3df15cd022d5a117a22c0e8/tdm/station-7-2026-09-10.tdm",
      "scope": "station-night",
      "scope_key": "7-2026-09-10",
      "sha256": "142aae18f56ff599e6e8bc985b649874b04d61ca0b3d525733f39074ec8623ae"
    }
  ],
  "quarantined_excluded": 0,
  "station": 7,
  "stations": [
    7
  ],
  "tdm_excluded_epoch_collisions": 0,
  "tdm_skipped_no_observations": 0,
  "tdm_skipped_unk": 2
}
