#!/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())