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

import argparse
import sys
from pathlib import Path

import yaml


def main() -> int:
    ap = argparse.ArgumentParser()
    ap.add_argument("--manifest", required=True)
    ap.add_argument("--strict", action="store_true")
    args = ap.parse_args()

    path = Path(args.manifest)
    data = yaml.safe_load(path.read_text(encoding="utf-8"))
    rows = data.get("manifest_rows") if isinstance(data.get("manifest_rows"), list) else []
    statuses = {
        "active_count_per_formula": int(data.get("active_count_per_formula") or 0),
        "authority_collision_count": int(data.get("authority_collision_count") or 0),
        "legacy_reference_render_blocked_count": int(data.get("legacy_reference_render_blocked_count") or 0),
    }
    ok = (
        data.get("is_active") is True
        and statuses["active_count_per_formula"] == 1
        and statuses["authority_collision_count"] == 0
        and statuses["legacy_reference_render_blocked_count"] == 0
        and len(rows) > 0
    )
    result = {
        "formula_id": data.get("formula_id"),
        "gate": "PASS" if ok else "FAIL",
        "manifest_row_count": len(rows),
        **statuses,
    }
    print(yaml.safe_dump(result, sort_keys=False, allow_unicode=True).strip())
    return 0 if ok or not args.strict else 1


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