OceanAltOceanAlt

STANDARD CONTRIBUTION · REPRODUCIBLE

x402 Compliance Conformance Pack v0.1

A machine-readable contract for pre-settlement compliance in agent payments (x402 / MCP): every compliance outcome maps to a stable reason_code, a signal_class, and a retry rule. Grounded 1:1 in our live 11-gate gateway, reproducible against a free endpoint.

STATUS — HONEST

Endpoints return reason_code / signal_class / retry / retry_hint today (HTTP status stays 200/403/409). 451/-4510 wire mapping = proposed, not yet shipped (changing a live status code is breaking; needs versioned negotiation).

1 · Signal classes & retry rules

signal_classmeaningretry
okclearednot_applicable
paymentbudget / limit (fundable)retryable_after_funding
regulatorydeterministic compliance FAILnon_retryable
authorizationattribution / mandate / allowlistretry_after_authorization
uncertainscreening unavailable / inconclusivepolicy_dependent_backoff
client_errormalformed requestretry_after_fix

The point: a budget refusal, a regulatory refusal, and a temporary infra failure can look identical to an autonomous client yet each needs different handling. Standardizing retry per class prevents both silent PASS-through and infinite retry loops (LangChain/AutoGen/CrewAI).

2 · reason_code taxonomy (mapped to real gates)

reason_codesignal_classretryfrom
kya_unattributedauthorizationretry_after_authorizationKYA
mandate_revokedauthorizationnon_retryableKYA/Revoked
kya_proof_missingauthorizationretry_after_authorizationKYA/Proof
kyc_requiredauthorizationretry_after_authorizationKYA/KYC
invalid_inputclient_errorretry_after_fixInput
over_per_tx_limitpaymentretryable_after_fundingFirewall/Limit
over_daily_limitpaymentretryable_after_fundingFirewall/Velocity
payee_not_allowlistedauthorizationretry_after_authorizationFirewall/Allowlist
mandate_intent_mismatchauthorizationretry_after_authorizationMandate
sanctioned_or_high_risk_payeeregulatorynon_retryableScreening/AML
behavioral_anomalyuncertainpolicy_dependent_backoffBehavior/Anomaly
replay_detectedauthorizationnon_retryableMandate/Replay
clearoknot_applicableallow
elevated_risk_payeeuncertainpolicy_dependent_backoffscreening: review
screening_unavailableuncertainpolicy_dependent_backoffscreening unavailable

Single source: lib/conformance.ts + lib/gates.ts.

3 · Reproducible test vectors (free endpoint)

① Sanctioned payee → regulatory / non_retryable

curl "https://oceanalt.com/api/risk?addr=0x8589427373D6D84E98730D7795D8f6f8731FDA16"
# → verdict:"risky", reason_code:"sanctioned_or_high_risk_payee", signal_class:"regulatory", retry:"non_retryable"

② Clear payee → ok / not_applicable

curl "https://oceanalt.com/api/risk?addr=0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
# → verdict:"clear", reason_code:"clear", signal_class:"ok", retry:"not_applicable"

Provenance & non-claims: reason_code and retry are produced by the live gateway (/api/pay, /api/x402/decision, /api/risk); this page and the JSON are generated from the same source. Multi-transport (stdio/SSE/streamable) wire observations and the 451/-4510 mapping are not yet implemented — listed as proposed, to be contributed as reproducible vectors after they run, never as forward-looking claims. Compliance screening ≠ full/licensed AML compliance; clear/allow ≠ absolute safety.