Two packages, intent-schema and IntentLib.sol, must agree byte-for-byte on how an outcome and a policy hash. If they disagree, settlement reverts with OutcomeMismatch.
One playbook sentence, traced through the loop:
| Kind | What it is |
|---|---|
| SWAP | One asset in → one asset out |
| BASKET | One asset in → weighted set out (xStocks portfolios) |
| REBALANCE | Exits → base → entries, one atomic tx |
| RWA_ONBOARD | Acquire an attested tokenized real-world asset |
| BATCH | Several of the above declared together |
| PAYMENT | 1:1 stable send, including gasless USDG |
OPEN → SELECTED → FULFILLED
Side paths: CANCELLED, EXPIRED, or back to OPEN on failure or a dominance challenge.
Kind, input token/amount, recipient, slippage ceiling, acquisition legs (token, weightBps, minOut), exit legs (rebalance only).
Spend cap, validity window, fee cap, reputation floor, requireRwaAttested, requireCompliant (KYB), sponsorGas, token allowlist. The registry stores hashes, never contents.
| Contract | Job | Address |
|---|---|---|
| IntentRegistry | Commit hashes, auction, select, gasless submitFor, session keys | 0x8AA313ce51AdCC6c6B448Fd1fd0429dc24328eB6 |
| IntentSettlement | Only contract that touches user funds | 0x8CEC593527fB711205D3e656B1e277E35C793C9f |
| PolicyEngine | Guardrails | 0xb59E325278F641847124A9F009b006713f7e1236 |
| SolverRegistry | Bond, reputation, lanes, KYB | 0xf46dCa275b0698f847f318DAc357A23540B44280 |
| RWARegistry | Attestations and onboarding | 0xBaF79Da5aE8c61EC95178B1c64d8280287553576 |
| RecurringRegistry | Standing jobs the coordinator re-declares | 0xF4e3018d883AAfA8541F1B722d392B14407d0AdC |
| RwaVault | 1:1 TSLAx shares | 0xA3741ff772A198c0374d37592931db33C5e6E096 |
| Layer | Trust |
|---|---|
| Mempool / draft | Untrusted. Wrong hash → unsettleable. |
| Solver | Untrusted. Bid is a promise the contract enforces. |
| Coordinator | Cannot steal funds; can pick a worse solver (slashable). |
| Settlement | The only trusted arithmetic. |