{"policies":[{"name":"verigate-treasury-step-up","wallet":"0x0c744ecb3949b3582cdd2dbc70dc876405eec44d","rules":[{"type":"transfer_limit","enforced_by":"circle-wallet-policy (origin=CUSTOM)","description":"Max STEP_UP evidence fee per transaction","max_amount":"5.00","asset":"USDC","rationale":"Dynamic pricing caps at $5.00 for the largest transactions"},{"type":"daily_limit","enforced_by":"circle-wallet-policy (origin=CUSTOM)","description":"Max daily evidence spend","max_amount_per_day":"50.00","asset":"USDC","rationale":"At $0.02-$5.00 per STEP_UP, 50 max/day bounds daily exposure"},{"type":"destination_whitelist","enforced_by":"verigate-application (not a Circle wallet policy)","description":"Treasury can only pay authorized validators","allowed_destinations":["0xbe1424b7bcc149523f749ceb7a8316d8ba6ba558"],"rationale":"Treasury funds are ring-fenced for evidence purchases only"},{"type":"rate_limit","enforced_by":"verigate-application (circle/treasury_budget.py; Circle wallet policies do not offer a rate-limit rule type)","description":"Max evidence purchases per hour","max_transfers_per_hour":20,"rationale":"Prevents evidence purchase spam from a compromised agent"}],"status":"pending","policy_id":""},{"name":"verigate-customer-screening","wallet":"0x5c34e3e05f0f1b9c4e3b92846791c6516dd431a2","rules":[{"type":"transfer_limit","enforced_by":"circle-wallet-policy (origin=CUSTOM)","description":"Max screening fee per check","max_amount":"0.10","asset":"USDC","rationale":"Screening fee is $0.05; 2x buffer for fee changes"},{"type":"daily_limit","enforced_by":"circle-wallet-policy (origin=CUSTOM)","description":"Max daily screening spend","max_amount_per_day":"25.00","asset":"USDC","rationale":"500 checks/day max at $0.05 each"},{"type":"destination_whitelist","enforced_by":"verigate-application (not a Circle wallet policy)","description":"Customer can only pay Verigate treasury","allowed_destinations":["0x0c744ecb3949b3582cdd2dbc70dc876405eec44d"],"rationale":"Screening fees go to treasury only"}],"status":"pending","policy_id":""},{"name":"verigate-validator-receive-only","wallet":"0xbe1424b7bcc149523f749ceb7a8316d8ba6ba558","rules":[{"type":"architectural_constraint","enforced_by":"architecture (no send path in code); Circle layer is default only","description":"Validator never initiates outbound transfers","max_amount":null,"asset":"USDC","rationale":"Receive-only by architecture, not by wallet policy: no code path in this repository sends from the validator wallet. Circle's wallet layer currently carries only its default $100/month transfer limit here (origin=DEFAULT) — unlike the Treasury and Customer wallets, no custom Circle policy is set on this wallet. Verify with: circle wallet limit --address 0xbe1424b7... --chain BASE"}],"status":"pending","policy_id":""}],"note":"Treasury and Customer carry CUSTOM Circle wallet policies, set via `circle wallet limit set` and enforced by Circle independently of Verigate (verify: `circle wallet limit --address <addr> --chain BASE`). Changing them requires human email-OTP authorization, so the agent spends autonomously within policy but cannot widen its own limits. The Validator wallet is receive-only by architecture and carries only Circle's default policy. Verigate additionally screens at the application layer; the two are independent."}