from __future__ import annotations

import argparse
import json
from pathlib import Path
from typing import Any


ROOT = Path(__file__).resolve().parents[1]
DEFAULT_JSON = ROOT / "Temp" / "formula_runtime_registry_v1.json"


def _load_json(path: Path) -> dict[str, Any]:
    if not path.exists():
        return {}
    try:
        obj = json.loads(path.read_text(encoding="utf-8"))
    except Exception:
        return {}
    return obj if isinstance(obj, dict) else {}


def main() -> int:
    ap = argparse.ArgumentParser()
    ap.add_argument("--json", default=str(DEFAULT_JSON))
    ap.add_argument("--target-coverage", type=float, default=100.0)
    args = ap.parse_args()

    json_path = Path(args.json)
    if not json_path.is_absolute():
        json_path = ROOT / json_path
    payload = _load_json(json_path)

    errors: list[str] = []
    formula_id = str(payload.get("formula_id") or "")
    total = int(payload.get("formula_total") or 0)
    declared = int(payload.get("declared_runtime_count") or 0)
    pct = float(payload.get("runtime_adjusted_coverage_pct") or 0.0)
    unmapped = int(payload.get("unmapped_formula_count") or 0)
    rows = payload.get("rows")

    if formula_id != "FORMULA_IMPLEMENTATION_REGISTRY_V1":
        errors.append(f"formula_id={formula_id}")
    if total <= 0:
        errors.append("formula_total<=0")
    if declared != total:
        errors.append(f"declared_runtime_count={declared}, formula_total={total}")
    if pct < float(args.target_coverage):
        errors.append(f"runtime_adjusted_coverage_pct={pct:.2f} < {args.target_coverage:.2f}")
    if unmapped != 0:
        errors.append(f"unmapped_formula_count={unmapped}")
    if not isinstance(rows, list) or len(rows) != total:
        errors.append("rows_invalid")

    if errors:
        print("FORMULA_IMPLEMENTATION_REGISTRY_V1_FAIL")
        for err in errors:
            print(f"  {err}")
        return 1

    print("FORMULA_IMPLEMENTATION_REGISTRY_V1_OK")
    print(f"  formula_total: {total}")
    print(f"  runtime_adjusted_coverage_pct: {pct:.2f}%")
    print("  unmapped_formula_count: 0")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

