Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sudont.xyz/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Every request that traverses Sudont terminates in a typed verdict. The verdict is the final output of The Diamond — Constitution + Cortex + Cage collapsed into a single decision the agent loop can branch on. Four variants cover the full surface; reason codes qualify each one with a stable, machine-readable token. The verdict itself is defined by the VerdictDecision enum on the RPC event channel; the swarm observes the same value through the ReAct error payload on non-Allow outcomes, and through an EIP-191 attestation on Allow.

The Four Verdicts

Allow

The Cage’s simulated state diff matches the agent’s declared intent envelope, the Constitution accepts every recipient and target, and freshness is within tolerance. Sudont signs an approval attestation and forwards the original signed transaction to the upstream RPC. The agent records the artifact and continues; no remediation is required.

Deny

Surfaced to the swarm as BLOCK. The simulated outcome violates a Constitution rule, exceeds a policy bound (slippage, price impact), or pays an unauthorized recipient. Sudont never forwards the transaction to the network and emits a deterministic ReAct error carrying the reason_code and the violated rule. The agent must rewrite the transaction — fix the route, narrow the recipient, lower the size — before retrying.

Interrogate

The simulation surfaces ambiguity the Judge will not unilaterally resolve: amount slightly above delegated authority, recipient missing from a soft allowlist, or a state-freshness gap that needs operator confirmation. Sudont holds the request and returns an actionable challenge in the ReAct payload. The agent inspects actionable_feedback, applies the requested correction, and resubmits; a human operator can also clear the hold from the cage UI.

Diagnose

Reached only through sudont_diagnoseRawTransaction. The Judge runs the full simulate → evaluate → verdict pipeline but never forwards the result to network egress, regardless of outcome. Use this verdict to dry-run an unsigned candidate, validate a bundle ahead of submission, or replay a historical transaction against the current Constitution. The response is always the full ReAct envelope; no attestation is signed.

Canonical Reason Codes

Every non-Allow verdict carries a reason_code token from the ReasonCode vocabulary. The five codes below are the ones the agent loop branches on most often. All codes are stable and serde-renamed; agents should match on the string, not the discriminant.
CodeFires whenAgent next step
SUDONT_POLICY_DENYConstitution evaluation rejects the simulated outcome — exceeded price-impact ceiling, blocked program, or any first-order policy violation that is not specifically a recipient or target case.Rewrite the transaction to satisfy the violated rule_id. Lower size, change route, or pick a different venue.
SUDONT_UNAUTHORIZED_RECIPIENTSimulated value flows into an address that is not in the Constitution’s recipient allowlist — the canonical Mythos / trojan-swap signature.Reroute to an approved vault or treasury. Do not retry with the same destination.
SUDONT_UNSUPPORTED_TARGETThe transaction calls a program or contract outside the Constitution’s program allowlist. The Cortex labels it as a CUSTOM SVM PROGRAM CALL or analogous EVM target.Use only allowlisted programs. Adding a target requires an operator policy change, not an agent retry.
SUDONT_EGRESS_UNAVAILABLEThe Judge granted Allow but the upstream RPC egress channel is missing, misconfigured, or unreachable.Surface to the operator; the agent cannot recover this on its own. The transaction is held, not denied.
SUDONT_STALE_HEADThe freshness gate detects that the working-set state is older than the configured tolerance for the request mode (pending vs sealed).Wait for the next hydration cycle and resubmit. Persistent staleness is an operator concern.
The full vocabulary — including SUDONT_SLIPPAGE_EXCEEDED, SUDONT_PRICE_IMPACT_EXCEEDED, SUDONT_PRIVATE_ROUTE_REQUIRED, SUDONT_INTENT_PARSE_FAILED, SUDONT_INTENT_OUTCOME_MISMATCH, SUDONT_INSUFFICIENT_LIQUIDITY, SUDONT_UNKNOWN_STATE, and SUDONT_INTERNAL_SIMULATION_ERROR — is enumerated in the RPC method reference. The five codes above cover the verdict-defining cases that every agent integration must handle.

How Verdicts Compose with the Loop

The verdict is the only contract between Sudont and the swarm. Everything else — the simulated state diff, the route table, the µs phase breakdown — is observability. The agent’s branching logic should read exactly two fields:
  1. The verdict variant (Allow / Deny / Interrogate / Diagnose).
  2. The first reason_code in data.sudont.violations.
For the full payload schema, the canonical violation order, and the recovery patterns for each reason code, see the ReAct Error Payload and the Constitution Compiler references. For the Cortex / Cage hot path that produces the verdict, see The Diamond Architecture.