#!/usr/bin/env python3
import json, sys

REQUIRED = ("contract_version", "referent", "evaluation_at", "evidence")

def classify(obj):
    missing = [k for k in REQUIRED if not obj.get(k)]
    if missing:
        return "REFUSE_MISSING_FIELDS:" + ",".join(missing)
    if not isinstance(obj["contract_version"], str) or not isinstance(obj["referent"], dict):
        return "REFUSE_BAD_SHAPE"
    if not obj["referent"].get("route") or not obj["referent"].get("mode"):
        return "REFUSE_UNBOUND_REFERENT"
    if not isinstance(obj["evidence"], dict) or not obj["evidence"].get("source"):
        return "REFUSE_BAD_EVIDENCE"
    return "PASS"

def main():
    if len(sys.argv) != 2:
        print("usage: carrier_gate.py FILE", file=sys.stderr); return 2
    with open(sys.argv[1], encoding="utf-8") as f: obj=json.load(f)
    result=classify(obj); print(result)
    return 0 if result == "PASS" else 1
if __name__ == "__main__": raise SystemExit(main())
