Policy

Compiled once, human-confirmed, then immutable until a new version is committed.

Plain-English intent

Spend up to 500 USDC every 7 days.

Only swap into pools with at least $50,000,000 in TVL (2% tolerance) that
are at least 30 days old.

Never approve unlimited allowances, delegatecall, or selfdestruct — refuse
these regardless of what the premises say.

Anything over 1 USDC pauses for a human confirmation before it settles.

Compiled artifact — v1

{
  "version": 1,
  "budget": {
    "asset": "USDC",
    "period": "7d",
    "max": "500000000"
  },
  "premises": [
    {
      "id": "tvl",
      "schema": "messari-dex-amm",
      "field": "liquidityPool.totalValueLockedUSD",
      "op": "gte",
      "value": "50000000000000000000000000",
      "tolerance_bps": 200
    },
    {
      "id": "pool_age",
      "schema": "messari-dex-amm",
      "field": "liquidityPool.createdTimestamp",
      "op": "older_than",
      "value": "2592000"
    }
  ],
  "forbid": [
    "approve_unlimited",
    "delegatecall",
    "selfdestruct"
  ],
  "irreversible_above": "1000000"
}

Computed hash (SHA-256 of canonical JSON)

0x105a3284b9c2e970a034010ddcdeb4baa6a6ef5856d241ee17c187745ef55e25

MATCHES ON-CHAIN

Committed on-chain to BondedRegistry at 0xB825225163aEf4353d0110BA63d0d811A17B8205. This page re-hashes the artifact above server-side and reads currentPolicyHash() live from Arc testnet on every load — a mismatch would render as a refusal, not a stale display.

Recompile

Re-derives the artifact from its intent and checks it still matches what BondedRegistry holds. Read-only — committing a new hash is a separate, explicit CLI step.