{
  "receipt_id": "nr_6f99fa85e571dc8e766d014a9da49440",
  "human_view": "https://verify.fairseal.io/receipt.html?id=nr_6f99fa85e571dc8e766d014a9da49440",
  "schema": "agent_decision",
  "payload_hash": "11a2bf5505b6d25c3b04c8c0049ba837b6097061d19574e27e44526dd57cf5e2",
  "metadata": {
    "agent_id": "fairseal-predge-pilot-notary-v1",
    "decided_at": "2026-10-13T01:39:13Z",
    "input_hash": "11a2bf5505b6d25c3b04c8c0049ba837b6097061d19574e27e44526dd57cf5e2",
    "decision_hash": "7db827ff6f2c7c2a01b3330c1885df0de321b87dc582c6bd51f064aaf62eaedd",
    "description": "FairSeal notarizes Predge settlement-risk record: Montana vs Idaho O/U 151.5 2026-01-08 (settlement-risk/1137824). Predge canonical sha256 snapshot taken at 2026-10-13T01:37:12Z.",
    "operator": "omi@fairseal.io"
  },
  "created_at": "2026-10-13T01:39:14.236Z",
  "status": "anchored",
  "proof": {
    "leaf_hash": "a4ce2ccddde380b6e331b71a4960f4cfda8ce03e546e66869a598ebf44021330",
    "leaf_formula": "SHA256(receipt_id + '||' + payload_hash) — hex-as-text",
    "merkle_path": [
      "cde7bde026efb482a45b7abb0027a5a85617b24d888386830391254fea8815e5"
    ],
    "merkle_root": "a04116161641635e63504d2a892f3a0029b0cc584dd204234ffdcf5e5e5e6e9c",
    "pair_formula": "node = SHA256(min(node,sib) + max(node,sib)) — pair sorted lexicographically, hex-as-text",
    "batch_id": "fairseal-notary-batch-1791855606358-1",
    "anchor_tx": "0xf8ded45d2daa2e83cf490bc20d2e7ea0bbadd3887c30a3114729a9a5e3db683f",
    "anchor_block": 52533131,
    "anchored_at": "2026-10-13T01:40:07.236Z",
    "anchor_chain": "base",
    "anchor_chain_id": 8453,
    "anchor_contract": "0xEE09671Bbc6B932BF1461CAff360bfDD9bEA55ca"
  },
  "verification": {
    "leaf_recomputed_ok": true,
    "merkle_path_valid": true,
    "anchored_onchain": true,
    "verified": true,
    "how_to_verify_independently": [
      "1. leaf = SHA256('nr_6f99fa85e571dc8e766d014a9da49440' + '||' + '<payload_hash>') must equal proof.leaf_hash",
      "2. node = leaf; for each sibling s in proof.merkle_path: node = SHA256(min(node,s)+max(node,s)); node must equal proof.merkle_root",
      "3. Call getBatchRoot(proof.batch_id) on 0xEE09671Bbc6B932BF1461CAff360bfDD9bEA55ca (Base mainnet) — returned root must equal 0x + proof.merkle_root",
      "4. Or inspect proof.anchor_tx calldata on any Base RPC / basescan.org — merkle_root appears in anchorBatch(batchId, merkleRoot, batchSize, clientId)"
    ]
  }
}