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

ALLOWED_CONTRACTS = {"continuity.receipt.v1"}
REQUIRED = {"contract", "referent", "mode", "window", "provenance", "evidence_ids", "expected_head"}

def refuse(reason):
    print(f"REFUSE_{reason}")
    return 1

def validate(doc):
    if not isinstance(doc, dict): return refuse("SHAPE")
    missing = REQUIRED - set(doc)
    if missing: return refuse("MISSING_" + "_".join(sorted(missing)))
    if doc["contract"] not in ALLOWED_CONTRACTS: return refuse("UNKNOWN_CONTRACT")
    if not isinstance(doc["provenance"], str) or not doc["provenance"] or doc["provenance"] == "INHERITED":
        return refuse("PROVENANCE")
    if not isinstance(doc["evidence_ids"], list) or not doc["evidence_ids"]:
        return refuse("EVIDENCE")
    ids = doc["evidence_ids"]
    if ids != list(range(ids[0], ids[0] + len(ids))): return refuse("NONCONTIGUOUS_IDS")
    if doc["expected_head"] != ids[-1]: return refuse("HEAD_MISMATCH")
    print("PASS")
    return 0

if __name__ == "__main__":
    try: payload = json.load(sys.stdin)
    except Exception: sys.exit(refuse("JSON"))
    sys.exit(validate(payload))
