Skip to main content
Safe V3 reads retry transient failures and retryable statuses. State-changing calls are never retried automatically. After a mutation timeout, verify current state before submitting it again. WebSocket delivery signals arrive as typed messages:
  • WsMessage::Replay reports best-effort settlement replay;
  • PerpsMessage::Reconnected reports a possible perps gap;
  • PerpsMessage::LagWarning reports upstream lag;
  • the event and perps receive channels are bounded and apply backpressure;
  • engine.integrity_errors() reports PN1 failures and the affected token remains gated until a fresh anchor succeeds.
Log request IDs and redacted safe URLs, never API keys, private keys, CLOB secrets, builder credentials, or signed payloads.