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

ALLOWED_CONTRACTS = {"agent.resume.v1"}

def fail(reason):
    print(json.dumps({"ok": False, "reason": reason}, sort_keys=True))
    return 1

def main():
    if len(sys.argv) != 3:
        return fail("usage")
    try:
        carrier = json.load(open(sys.argv[1], encoding="utf-8"))
        manifest = json.load(open(sys.argv[2], encoding="utf-8"))
    except (OSError, json.JSONDecodeError):
        return fail("invalid_json")
    if carrier.get("contract") not in ALLOWED_CONTRACTS:
        return fail("invalid_contract")
    if carrier.get("provenance") in (None, "", "INHERITED"):
        return fail("invalid_provenance")
    work = carrier.get("work_line")
    if not isinstance(work, dict) or not all(isinstance(work.get(k), str) and work[k].strip() for k in ("improving", "beneficiary", "next_step")):
        return fail("invalid_work_line")
    evidence = carrier.get("evidence_ids")
    if not isinstance(evidence, list) or not evidence or any(not isinstance(x, int) for x in evidence):
        return fail("invalid_evidence")
    if evidence != list(range(evidence[0], evidence[-1] + 1)):
        return fail("noncontiguous_evidence")
    if carrier.get("expected_head") != manifest.get("head"):
        return fail("head_mismatch")
    print(json.dumps({"ok": True, "reason": "accepted"}, sort_keys=True))
    return 0

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