#!/usr/bin/env python3
from __future__ import annotations

import argparse
import json
from pathlib import Path

import yaml


ROOT = Path(__file__).resolve().parents[1]
DEFAULT_REPORT = ROOT / "Temp" / "operational_report.json"
DEFAULT_CONTRACT = ROOT / "spec" / "render" / "renderer_contract.yaml"


def main() -> int:
    ap = argparse.ArgumentParser()
    ap.add_argument("--report", default=str(DEFAULT_REPORT))
    ap.add_argument("--contract", default=str(DEFAULT_CONTRACT))
    args = ap.parse_args()

    report = json.loads(Path(args.report).read_text(encoding="utf-8"))
    contract = yaml.safe_load(Path(args.contract).read_text(encoding="utf-8")) or {}
    expected = contract.get("section_order") if isinstance(contract.get("section_order"), list) else []
    actual = [s.get("name") for s in report.get("sections", []) if isinstance(s, dict)]
    filtered_expected = [str(x) for x in expected]
    ok = actual[: len(filtered_expected)] == filtered_expected
    payload = {
        "formula_id": "RENDERER_SECTION_ORDER_V1",
        "gate": "PASS" if ok else "FAIL",
        "expected_count": len(filtered_expected),
        "actual_count": len(actual),
    }
    print(json.dumps(payload, ensure_ascii=True, indent=2))
    return 0 if ok else 1


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