#!/usr/bin/env python3
import json,sys
ALLOWED={"continuity.receipt.v1"}
REQ={"contract","referent","provenance","evidence_ids","expected_head"}
def validate(d):
    if not isinstance(d,dict): return "document must be object"
    if d.get("contract") not in ALLOWED: return "unknown contract"
    missing=sorted(REQ-d.keys())
    if missing: return "missing: "+",".join(missing)
    if not isinstance(d["provenance"],str) or not d["provenance"] or d["provenance"]=="INHERITED": return "invalid provenance"
    ids=d["evidence_ids"]
    if not isinstance(ids,list) or not ids or ids != list(range(ids[0],ids[0]+len(ids))): return "non-contiguous evidence_ids"
    ev_head=d.get("evidence_head")
    if ev_head is not None and ev_head != d["expected_head"]: return "head mismatch"
    return None
def main():
    if len(sys.argv)!=2: print("usage: gate.py FILE",file=sys.stderr); return 2
    try:
        with open(sys.argv[1],encoding="utf-8") as f: d=json.load(f)
    except Exception as e: print("REFUSE: invalid JSON/input",file=sys.stderr); return 2
    err=validate(d)
    if err: print("REFUSE: "+err); return 1
    print("PASS: continuity receipt valid")
    return 0
if __name__=="__main__": raise SystemExit(main())
