{"name":"OceanAlt x402 Compliance Conformance Pack","version":"0.1","updated":"2026-08","summary":"Machine-readable reason_code + retry-semantics taxonomy for pre-settlement compliance in agent payments (x402/MCP). Grounded 1:1 in the live 11-gate gateway.","status":{"shipped":["reason_code","signal_class","retry","retry_hint"],"proposed_not_shipped":["HTTP 451 status mapping for regulatory blocks","JSON-RPC error codes -4510 / -4020"],"note":"Endpoints return the reason_code/retry fields today (HTTP status stays 200/403/409). The 451/-4510 wire mapping is a proposed, versioned change and is NOT yet shipped."},"signal_classes":{"ok":{"retry":"not_applicable","meaning":"cleared — proceed"},"payment":{"retry":"retryable_after_funding","meaning":"budget/limit; retry only after the cap/budget changes"},"regulatory":{"retry":"non_retryable","meaning":"deterministic compliance FAIL; do not auto-retry unless the underlying compliance state changes"},"authorization":{"retry":"retry_after_authorization","meaning":"attribution/mandate/allowlist/credential; retry only after authorization changes"},"uncertain":{"retry":"policy_dependent_backoff","meaning":"screening unavailable/inconclusive; back off and re-evaluate, never silently PASS"},"client_error":{"retry":"retry_after_fix","meaning":"malformed request; fix and retry"}},"reason_codes":[{"reason_code":"kya_unattributed","signal_class":"authorization","retry":"retry_after_authorization","retry_hint":"retry only after authorization changes (present credential / re-authorize / update allowlist).","from":"KYA"},{"reason_code":"mandate_revoked","signal_class":"authorization","retry":"non_retryable","retry_hint":"do NOT auto-retry; a deterministic compliance block — retry only if the underlying compliance state changes.","from":"KYA/Revoked"},{"reason_code":"kya_proof_missing","signal_class":"authorization","retry":"retry_after_authorization","retry_hint":"retry only after authorization changes (present credential / re-authorize / update allowlist).","from":"KYA/Proof"},{"reason_code":"kyc_required","signal_class":"authorization","retry":"retry_after_authorization","retry_hint":"retry only after authorization changes (present credential / re-authorize / update allowlist).","from":"KYA/KYC"},{"reason_code":"invalid_input","signal_class":"client_error","retry":"retry_after_fix","retry_hint":"fix the request and retry.","from":"Input"},{"reason_code":"over_per_tx_limit","signal_class":"payment","retry":"retryable_after_funding","retry_hint":"retry only after the budget/limit changes (raise the cap or fund the mandate).","from":"Firewall/Limit"},{"reason_code":"over_daily_limit","signal_class":"payment","retry":"retryable_after_funding","retry_hint":"retry only after the budget/limit changes (raise the cap or fund the mandate).","from":"Firewall/Velocity"},{"reason_code":"payee_not_allowlisted","signal_class":"authorization","retry":"retry_after_authorization","retry_hint":"retry only after authorization changes (present credential / re-authorize / update allowlist).","from":"Firewall/Allowlist"},{"reason_code":"mandate_intent_mismatch","signal_class":"authorization","retry":"retry_after_authorization","retry_hint":"retry only after authorization changes (present credential / re-authorize / update allowlist).","from":"Mandate"},{"reason_code":"sanctioned_or_high_risk_payee","signal_class":"regulatory","retry":"non_retryable","retry_hint":"do NOT auto-retry; a deterministic compliance block — retry only if the underlying compliance state changes.","from":"Screening/AML"},{"reason_code":"behavioral_anomaly","signal_class":"uncertain","retry":"policy_dependent_backoff","retry_hint":"UNCERTAIN — back off and re-evaluate, or apply your local fail-open/fail-closed policy; never treat as a PASS.","from":"Behavior/Anomaly"},{"reason_code":"replay_detected","signal_class":"authorization","retry":"non_retryable","retry_hint":"do NOT auto-retry; a deterministic compliance block — retry only if the underlying compliance state changes.","from":"Mandate/Replay"},{"reason_code":"clear","signal_class":"ok","retry":"not_applicable","retry_hint":"cleared — proceed.","from":"allow"},{"reason_code":"elevated_risk_payee","signal_class":"uncertain","retry":"policy_dependent_backoff","retry_hint":"UNCERTAIN — back off and re-evaluate, or apply your local fail-open/fail-closed policy; never treat as a PASS.","from":"screening: review"},{"reason_code":"screening_unavailable","signal_class":"uncertain","retry":"policy_dependent_backoff","retry_hint":"UNCERTAIN — back off and re-evaluate, or apply your local fail-open/fail-closed policy; never treat as a PASS.","from":"screening unavailable"}],"reproduce":{"sanctioned_payee":"curl 'https://oceanalt.com/api/risk?addr=0x8589427373D6D84E98730D7795D8f6f8731FDA16'  # → regulatory / non_retryable","clear_payee":"curl 'https://oceanalt.com/api/risk?addr=0x742d35Cc6634C0532925a3b844Bc454e4438f44e'  # → ok / not_applicable"},"human_readable":"https://oceanalt.com/en/x402-conformance","standard":"https://oceanalt.com/en/rap","disclaimer":"Compliance screening is not full/licensed AML compliance; clear/allow is not absolute safety."}