from __future__ import annotations

def evaluate(c):
    required=["contract_version","auth_scheme","credential_scope","request_schema_version","response_schema_version","mapping_version","event_identity","idempotency_strategy","retry_policy","backoff_policy","rate_limit_signal","reconciliation_strategy","deprecation_state"]
    if any(c.get(k) in (None,"", "UNKNOWN") for k in required):
        if c.get("credential_scope") in (None,"", "UNKNOWN"): return "HOLD_AUTH_SCOPE"
        return "HOLD_UNKNOWN_EVIDENCE"
    if c.get("provider_leak"): return "HOLD_PROVIDER_LEAKAGE"
    if c.get("webhook_contract") not in (None,"none") and c.get("event_identity") in (None,"NONE","UNKNOWN"): return "HOLD_EVENT_IDENTITY"
    if c.get("idempotency_strategy") == "NONE" and c.get("reconciliation_strategy") == "NONE": return "HOLD_IDEMPOTENCY_GAP"
    if c.get("rate_limit_signal") not in (None,"n/a","NONE") and c.get("backoff_policy") in (None,"NONE","fixed-unsafe"): return "HOLD_RATE_LIMIT_UNKNOWN"
    prev_res=c.get("previous_response_schema_version")
    prev_map=c.get("previous_mapping_version")
    if prev_res and prev_res != c.get("response_schema_version") and prev_map == c.get("mapping_version"): return "HOLD_MAPPING_VERSION"
    if str(c.get("deprecation_state","")).startswith("REMOVED") and not c.get("transfer"): return "HOLD_DEPRECATION"
    return "ACCEPT_CONTRACT"
