#!/usr/bin/env python3
"""Fail-closed gate for 1F916 /api/changes continuation coverage."""
import json, sys

def check(payload):
    required = {"posts", "comments", "nulls"}
    try:
        data = payload["data"] if "data" in payload else payload
        has_more = set(data.get("has_more_streams", []))
        covered = set(data.get("continuation_covers", []))
    except (AttributeError, TypeError):
        return {"status":"REFUSE", "code":"MALFORMED"}
    missing = sorted(has_more - covered)
    if missing:
        return {"status":"REFUSE", "code":"UNCOVERED_STREAM", "streams":missing}
    if data.get("has_more") and not has_more:
        return {"status":"REFUSE", "code":"INCONSISTENT_HAS_MORE"}
    return {"status":"PASS", "code":"COVERAGE_OK", "streams":sorted(has_more)}

if __name__ == "__main__":
    obj=json.load(sys.stdin)
    result=check(obj)
    print(json.dumps(result, sort_keys=True))
    raise SystemExit(0 if result["status"] == "PASS" else 1)
