[
 {
  "id": "C01",
  "http_status": 200,
  "recorded_at": "2026-11-03T22:48:22+00:00",
  "ms": 424,
  "reply": {
   "slug": "cainpay",
   "title": "Set a spend policy, then authorize a payment that breaks it",
   "status": "ok",
   "input": "office-supplies.example",
   "total_ms": 338,
   "steps": [
    {
     "call": "POST /policies",
     "request": {
      "principal": "demo-agent-ae13d589",
      "per_transaction_max": "200.00",
      "daily_max": "500.00",
      "merchant_deny": [
       "casino.example"
      ]
     },
     "status": 200,
     "ms": 132,
     "reply": {
      "principal": "demo-agent-ae13d589",
      "currency": "USD",
      "policy": {
       "principal": "demo-agent-ae13d589",
       "currency": "USD",
       "per_transaction_max": "200.00",
       "daily_max": "500.00",
       "merchant_allow": null,
       "merchant_deny": [
        "casino.example"
       ],
       "require_approval_over": null,
       "per_transaction_max_minor": 20000,
       "daily_max_minor": 50000,
       "require_approval_over_minor": null
      }
     }
    },
    {
     "call": "POST /authorize",
     "request": {
      "principal": "demo-agent-ae13d589",
      "merchant": "office-supplies.example",
      "amount": "120.00",
      "memo": "demo"
     },
     "status": 200,
     "ms": 131,
     "reply": {
      "decision": "APPROVED",
      "reason": "within policy",
      "authorization": {
       "auth_id": "auth_4522c570e12c4b63",
       "principal": "demo-agent-ae13d589",
       "merchant": "office-supplies.example",
       "currency": "USD",
       "amount": "120.00",
       "held": "120.00",
       "captured": "0.00",
       "refunded": "0.00",
       "status": "held",
       "memo": "demo",
       "created_at": "2026-11-03T22:48:22Z"
      },
      "ledger": {
       "seq": 636,
       "entry_hash": "271958e5e8fd34c1ebec4eb0ed71151030628255bef96def33ef68b3ce46e97c"
      },
      "receipt": {
       "signed_by": "cainpay (this deployment's own Ed25519 key)",
       "algorithm": "Ed25519",
       "public_key_hex": "726606baa1fdf68017a6fd591adb4dd3c66fac47e5212e370d98d476634ed332",
       "statement": {
        "service": "cainpay",
        "decision": "APPROVED",
        "reason": "within policy",
        "principal": "demo-agent-ae13d589",
        "merchant": "office-supplies.example",
        "amount": "120.00",
        "currency": "USD",
        "auth_id": "auth_4522c570e12c4b63",
        "ledger_entry_hash": "271958e5e8fd34c1ebec4eb0ed71151030628255bef96def33ef68b3ce46e97c",
        "owner": "52b5815052239ac02d1eb72055d5ad75",
        "issued_at": "2026-11-03T22:48:22Z"
       },
       "statement_sha256": "0974408d2348778ce49c373feeb8c7e8a8a03278783603e66c2d3d49fa17275e",
       "signature_hex": "f58145526b9d2dfadd0e9e1b13564feea28a27cbcab32018a3fca0002dc742e1679f752c44fc510cec23d27f306ad9285c84f0dd1251777031699a23da8bd40b",
       "verify": "Ed25519 verify(public_key_hex, signature_hex, canonical JSON of statement (sorted keys, separators ',' ':'))"
      }
     }
    },
    {
     "call": "GET /ledger/verify",
     "request": null,
     "status": 200,
     "ms": 60,
     "reply": {
      "intact": true,
      "entries": 636,
      "head": "271958e5e8fd34c1ebec4eb0ed71151030628255bef96def33ef68b3ce46e97c"
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 },
 {
  "id": "C02",
  "http_status": 200,
  "recorded_at": "2026-11-03T22:48:23+00:00",
  "ms": 162,
  "reply": {
   "slug": "cainpay",
   "title": "Set a spend policy, then authorize a payment that breaks it",
   "status": "ok",
   "input": "casino.example",
   "total_ms": 97,
   "steps": [
    {
     "call": "POST /policies",
     "request": {
      "principal": "demo-agent-9ad41e22",
      "per_transaction_max": "200.00",
      "daily_max": "500.00",
      "merchant_deny": [
       "casino.example"
      ]
     },
     "status": 200,
     "ms": 21,
     "reply": {
      "principal": "demo-agent-9ad41e22",
      "currency": "USD",
      "policy": {
       "principal": "demo-agent-9ad41e22",
       "currency": "USD",
       "per_transaction_max": "200.00",
       "daily_max": "500.00",
       "merchant_allow": null,
       "merchant_deny": [
        "casino.example"
       ],
       "require_approval_over": null,
       "per_transaction_max_minor": 20000,
       "daily_max_minor": 50000,
       "require_approval_over_minor": null
      }
     }
    },
    {
     "call": "POST /authorize",
     "request": {
      "principal": "demo-agent-9ad41e22",
      "merchant": "casino.example",
      "amount": "120.00",
      "memo": "demo"
     },
     "status": 200,
     "ms": 18,
     "reply": {
      "decision": "DECLINED",
      "reason": "merchant 'casino.example' is on the deny list",
      "authorization": null,
      "ledger": {
       "seq": 638,
       "entry_hash": "320ce607f44ce91209ef785867e8c2018797e698f5047f7969c80f6e42a32662"
      },
      "receipt": {
       "signed_by": "cainpay (this deployment's own Ed25519 key)",
       "algorithm": "Ed25519",
       "public_key_hex": "726606baa1fdf68017a6fd591adb4dd3c66fac47e5212e370d98d476634ed332",
       "statement": {
        "service": "cainpay",
        "decision": "DECLINED",
        "reason": "merchant 'casino.example' is on the deny list",
        "principal": "demo-agent-9ad41e22",
        "merchant": "casino.example",
        "amount": "120.00",
        "currency": "USD",
        "auth_id": null,
        "ledger_entry_hash": "320ce607f44ce91209ef785867e8c2018797e698f5047f7969c80f6e42a32662",
        "owner": "52b5815052239ac02d1eb72055d5ad75",
        "issued_at": "2026-11-03T22:48:23Z"
       },
       "statement_sha256": "fdc4c8ff8385f0ad463f2444b0593b7a94cd4b7bb5854dc13661208bcc38c6e4",
       "signature_hex": "0cb0c4c71f63ea31fd883b40996f573166ca260f337159af46563901d8e9c4d57646af05f2f401c7330e8a13544ba8f3717bcaaca354d53ed466626ece215b0c",
       "verify": "Ed25519 verify(public_key_hex, signature_hex, canonical JSON of statement (sorted keys, separators ',' ':'))"
      }
     }
    },
    {
     "call": "GET /ledger/verify",
     "request": null,
     "status": 200,
     "ms": 40,
     "reply": {
      "intact": true,
      "entries": 638,
      "head": "320ce607f44ce91209ef785867e8c2018797e698f5047f7969c80f6e42a32662"
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 },
 {
  "id": "C03",
  "http_status": 200,
  "recorded_at": "2026-11-03T22:48:24+00:00",
  "ms": 163,
  "reply": {
   "slug": "cainpay",
   "title": "Set a spend policy, then authorize a payment that breaks it",
   "status": "ok",
   "input": "CASINO.EXAMPLE.",
   "total_ms": 100,
   "steps": [
    {
     "call": "POST /policies",
     "request": {
      "principal": "demo-agent-f1c3b945",
      "per_transaction_max": "200.00",
      "daily_max": "500.00",
      "merchant_deny": [
       "casino.example"
      ]
     },
     "status": 200,
     "ms": 26,
     "reply": {
      "principal": "demo-agent-f1c3b945",
      "currency": "USD",
      "policy": {
       "principal": "demo-agent-f1c3b945",
       "currency": "USD",
       "per_transaction_max": "200.00",
       "daily_max": "500.00",
       "merchant_allow": null,
       "merchant_deny": [
        "casino.example"
       ],
       "require_approval_over": null,
       "per_transaction_max_minor": 20000,
       "daily_max_minor": 50000,
       "require_approval_over_minor": null
      }
     }
    },
    {
     "call": "POST /authorize",
     "request": {
      "principal": "demo-agent-f1c3b945",
      "merchant": "CASINO.EXAMPLE.",
      "amount": "120.00",
      "memo": "demo"
     },
     "status": 200,
     "ms": 16,
     "reply": {
      "decision": "DECLINED",
      "reason": "merchant 'CASINO.EXAMPLE.' is on the deny list",
      "authorization": null,
      "ledger": {
       "seq": 640,
       "entry_hash": "5a5375321a87f5c0bbc25f97791cdb43ee0deb2e95f93e5deee7cc0c88cacbe5"
      },
      "receipt": {
       "signed_by": "cainpay (this deployment's own Ed25519 key)",
       "algorithm": "Ed25519",
       "public_key_hex": "726606baa1fdf68017a6fd591adb4dd3c66fac47e5212e370d98d476634ed332",
       "statement": {
        "service": "cainpay",
        "decision": "DECLINED",
        "reason": "merchant 'CASINO.EXAMPLE.' is on the deny list",
        "principal": "demo-agent-f1c3b945",
        "merchant": "CASINO.EXAMPLE.",
        "amount": "120.00",
        "currency": "USD",
        "auth_id": null,
        "ledger_entry_hash": "5a5375321a87f5c0bbc25f97791cdb43ee0deb2e95f93e5deee7cc0c88cacbe5",
        "owner": "52b5815052239ac02d1eb72055d5ad75",
        "issued_at": "2026-11-03T22:48:24Z"
       },
       "statement_sha256": "e3406b48ff71c4fab7882a14ddbae208f9a8e2b013f7639e37db71fb12d728bc",
       "signature_hex": "9d20b9e453b1ea0fd4083f486565b1951423e5eb30bbdc4e466a7feac9fd8022980d3b0b34b2914b09a9fe943b51c4f369aa62c3fc28b8cf174958bd8a755b01",
       "verify": "Ed25519 verify(public_key_hex, signature_hex, canonical JSON of statement (sorted keys, separators ',' ':'))"
      }
     }
    },
    {
     "call": "GET /ledger/verify",
     "request": null,
     "status": 200,
     "ms": 42,
     "reply": {
      "intact": true,
      "entries": 640,
      "head": "5a5375321a87f5c0bbc25f97791cdb43ee0deb2e95f93e5deee7cc0c88cacbe5"
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 },
 {
  "id": "C04",
  "http_status": 200,
  "recorded_at": "2026-11-03T22:48:24+00:00",
  "ms": 177,
  "reply": {
   "slug": "cainpay",
   "title": "Set a spend policy, then authorize a payment that breaks it",
   "status": "ok",
   "input": "https://casino.example/checkout",
   "total_ms": 121,
   "steps": [
    {
     "call": "POST /policies",
     "request": {
      "principal": "demo-agent-cf7a6b8a",
      "per_transaction_max": "200.00",
      "daily_max": "500.00",
      "merchant_deny": [
       "casino.example"
      ]
     },
     "status": 200,
     "ms": 29,
     "reply": {
      "principal": "demo-agent-cf7a6b8a",
      "currency": "USD",
      "policy": {
       "principal": "demo-agent-cf7a6b8a",
       "currency": "USD",
       "per_transaction_max": "200.00",
       "daily_max": "500.00",
       "merchant_allow": null,
       "merchant_deny": [
        "casino.example"
       ],
       "require_approval_over": null,
       "per_transaction_max_minor": 20000,
       "daily_max_minor": 50000,
       "require_approval_over_minor": null
      }
     }
    },
    {
     "call": "POST /authorize",
     "request": {
      "principal": "demo-agent-cf7a6b8a",
      "merchant": "https://casino.example/checkout",
      "amount": "120.00",
      "memo": "demo"
     },
     "status": 200,
     "ms": 23,
     "reply": {
      "decision": "DECLINED",
      "reason": "merchant 'https://casino.example/checkout' is on the deny list",
      "authorization": null,
      "ledger": {
       "seq": 642,
       "entry_hash": "2714d0991552f084c544a6d2d5c5e504e721cf066fa8c89cb19f22749522b5b5"
      },
      "receipt": {
       "signed_by": "cainpay (this deployment's own Ed25519 key)",
       "algorithm": "Ed25519",
       "public_key_hex": "726606baa1fdf68017a6fd591adb4dd3c66fac47e5212e370d98d476634ed332",
       "statement": {
        "service": "cainpay",
        "decision": "DECLINED",
        "reason": "merchant 'https://casino.example/checkout' is on the deny list",
        "principal": "demo-agent-cf7a6b8a",
        "merchant": "https://casino.example/checkout",
        "amount": "120.00",
        "currency": "USD",
        "auth_id": null,
        "ledger_entry_hash": "2714d0991552f084c544a6d2d5c5e504e721cf066fa8c89cb19f22749522b5b5",
        "owner": "52b5815052239ac02d1eb72055d5ad75",
        "issued_at": "2026-11-03T22:48:24Z"
       },
       "statement_sha256": "b586b9116ec424a6440841523d5f1d08c2a521067821c2c9ad1f97bf32621d69",
       "signature_hex": "3e4e9718cf5b8f2666852b611354cb88ccc593d7f9c7141fcae1e6a206cbd4f622230336445bcaa9cae3982bd32f0a243c923256b548590a4a7fd86fb4b3140f",
       "verify": "Ed25519 verify(public_key_hex, signature_hex, canonical JSON of statement (sorted keys, separators ',' ':'))"
      }
     }
    },
    {
     "call": "GET /ledger/verify",
     "request": null,
     "status": 200,
     "ms": 51,
     "reply": {
      "intact": true,
      "entries": 642,
      "head": "2714d0991552f084c544a6d2d5c5e504e721cf066fa8c89cb19f22749522b5b5"
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 },
 {
  "id": "C05",
  "http_status": 200,
  "recorded_at": "2026-11-03T22:48:25+00:00",
  "ms": 140,
  "reply": {
   "slug": "cainpay",
   "title": "Set a spend policy, then authorize a payment that breaks it",
   "status": "ok",
   "input": "pay.casino.example",
   "total_ms": 92,
   "steps": [
    {
     "call": "POST /policies",
     "request": {
      "principal": "demo-agent-93b928e0",
      "per_transaction_max": "200.00",
      "daily_max": "500.00",
      "merchant_deny": [
       "casino.example"
      ]
     },
     "status": 200,
     "ms": 18,
     "reply": {
      "principal": "demo-agent-93b928e0",
      "currency": "USD",
      "policy": {
       "principal": "demo-agent-93b928e0",
       "currency": "USD",
       "per_transaction_max": "200.00",
       "daily_max": "500.00",
       "merchant_allow": null,
       "merchant_deny": [
        "casino.example"
       ],
       "require_approval_over": null,
       "per_transaction_max_minor": 20000,
       "daily_max_minor": 50000,
       "require_approval_over_minor": null
      }
     }
    },
    {
     "call": "POST /authorize",
     "request": {
      "principal": "demo-agent-93b928e0",
      "merchant": "pay.casino.example",
      "amount": "120.00",
      "memo": "demo"
     },
     "status": 200,
     "ms": 12,
     "reply": {
      "decision": "DECLINED",
      "reason": "merchant 'pay.casino.example' is on the deny list",
      "authorization": null,
      "ledger": {
       "seq": 644,
       "entry_hash": "67902b4e6a54a766cd5c9210e7e072abef77556eb5f85242fd371e832a8492c6"
      },
      "receipt": {
       "signed_by": "cainpay (this deployment's own Ed25519 key)",
       "algorithm": "Ed25519",
       "public_key_hex": "726606baa1fdf68017a6fd591adb4dd3c66fac47e5212e370d98d476634ed332",
       "statement": {
        "service": "cainpay",
        "decision": "DECLINED",
        "reason": "merchant 'pay.casino.example' is on the deny list",
        "principal": "demo-agent-93b928e0",
        "merchant": "pay.casino.example",
        "amount": "120.00",
        "currency": "USD",
        "auth_id": null,
        "ledger_entry_hash": "67902b4e6a54a766cd5c9210e7e072abef77556eb5f85242fd371e832a8492c6",
        "owner": "52b5815052239ac02d1eb72055d5ad75",
        "issued_at": "2026-11-03T22:48:25Z"
       },
       "statement_sha256": "d80785640941031f3effe95d55d021ad0c6c65da88deeedf1d9df3cd8d43f364",
       "signature_hex": "2a8ae5eea971a478c1745e53a33928ccb305ad466becd7dd2ef0940828a06e5a9a6a91483c24680bc45234f0d00203aeae9c3c7e76f60013c64a7084c5022709",
       "verify": "Ed25519 verify(public_key_hex, signature_hex, canonical JSON of statement (sorted keys, separators ',' ':'))"
      }
     }
    },
    {
     "call": "GET /ledger/verify",
     "request": null,
     "status": 200,
     "ms": 48,
     "reply": {
      "intact": true,
      "entries": 644,
      "head": "67902b4e6a54a766cd5c9210e7e072abef77556eb5f85242fd371e832a8492c6"
     }
    }
   ],
   "note": "Real calls to the running service with the public demo identity; replies are unedited."
  }
 }
]