#!/usr/bin/env python3 from __future__ import annotations import argparse import json from pathlib import Path ROOT = Path(__file__).resolve().parents[1] DEFAULT_GATHER = ROOT / "GatherTradingData.json" DEFAULT_OUT = ROOT / "Temp" / "data_freshness_sla_v1.json" def _load_json(path: Path) -> dict: if not path.exists(): return {} payload = json.loads(path.read_text(encoding="utf-8")) return payload if isinstance(payload, dict) else {} def main() -> int: ap = argparse.ArgumentParser() ap.add_argument("--gather", default=str(DEFAULT_GATHER)) ap.add_argument("--out", default=str(DEFAULT_OUT)) args = ap.parse_args() gather = _load_json(Path(args.gather)) hctx = gather.get("data", {}).get("_harness_context", {}) if isinstance(gather.get("data"), dict) else {} hctx = hctx if isinstance(hctx, dict) else {} hapex = gather.get("hApex", {}) if isinstance(gather.get("hApex"), dict) else {} collection_timestamp = hctx.get("captured_at") or hapex.get("captured_at") or "" decision_timestamp = hctx.get("decision_timestamp") or hctx.get("as_of") or gather.get("as_of") or "" freshness_status = hctx.get("data_freshness_status") or "UNKNOWN" snapshot_execution_gate = str(hctx.get("snapshot_execution_gate") or "").upper() gate = "PASS" if freshness_status in {"FRESH", "STALE"} and bool(collection_timestamp or decision_timestamp) else "FAIL" payload = { "formula_id": "DATA_FRESHNESS_SLA_V1", "gate": gate, "collection_timestamp": collection_timestamp, "decision_timestamp": decision_timestamp, "freshness_status": freshness_status, "snapshot_execution_gate": snapshot_execution_gate, "source_packet": "Temp/final_decision_packet_active.json", } out = Path(args.out) out.parent.mkdir(parents=True, exist_ok=True) out.write_text(json.dumps(payload, ensure_ascii=False, indent=2), encoding="utf-8") print(json.dumps(payload, ensure_ascii=False, indent=2)) return 0 if gate == "PASS" else 1 if __name__ == "__main__": raise SystemExit(main())