AI flight recorderPrototype 2

← All runs

Ben Okafor's request

Started . 1 proposed action.

  1. Ben Okafor asked for help.
    “The jacket I ordered (order 1190) never arrived. It has been three weeks.”

Refund $180 for order 1190

Done
Asked→Proposed→Held→Approved→Done
  1. The support agent proposed a $180 refund for order 1190.
    “Order 1190 shows no delivery scan. Refund the $180 jacket.”
  2. Held by the rule “Refunds over $100 need a person”. A person must decide.
  3. Tester approved it.
  4. Done: $180 refunded (simulated, no money moved).

Receipt

The receipt holds every step of this run, its fingerprint, and the outside timekeepers' proofs, so anyone can see if a step was changed or removed, and by when each step happened.

It proves these steps were recorded in this order, and that none was changed or removed afterwards. It doesn't prove the AI's reasoning was right, who a person really is, or what happened outside this record.

0 of 5 steps sent to the outside timekeepers. Confirmed by the outside timekeeper (FreeTSA): 0. Locked into Bitcoin: not yet (every 30 minutes).

The free checker runs in your browser and sends nothing to us. Drop the receipt in: it shows each step with the time the outside timekeeper confirmed, and one verdict.

Show the technical details
Chain check (run by this server): Intact: 5 steps, each pointing at the one before, none changed.
Run id run-dujuay8mqy · rules rules-v1#6ad3916fe682caed · build attesto-flight-recorder@proto-2.0 · effects waiting 0
#FactTagWhoTimeHashPrev
1request.receivedclaimedBen Okafor00:21:18Zb1cf2a7d4b8b…000000000000…
2action.proposedclaimedSupport agent00:21:18Z754f51e5ebd5…b1cf2a7d4b8b…
3action.heldobservedYour rules00:21:18Z710d8c92a855…754f51e5ebd5…
4person.approvedclaimedTester00:21:57Z103157921b15…710d8c92a855…
5action.doneobservedsimulated payments (prototype)00:21:57Zbe757be734da…103157921b15…
How the chain works. Each step is written as canonical JSON (keys sorted, no spaces) and fingerprinted with SHA-256. Each step includes the fingerprint of the step before it ("prev"); the first points at 64 zeros. Changing or removing any step breaks every fingerprint after it. Tags: observed = we saw it, claimed = someone says so (the customer, the AI, the approver), attested = an outside witness signed it. Each step's fingerprint is also sent, as a checkpoint, to the shared evidence service: it is batched with other checkpoints into a Merkle tree whose root FreeTSA timestamps (RFC 3161) and OpenTimestamps anchors in Bitcoin. Those proofs are in the receipt, not in this chain. Free text is stored outside the chain; the chain holds only its fingerprint.
#1 request.received
{
  "v": "proto-2",
  "runId": "run-dujuay8mqy",
  "seq": 1,
  "prev": "0000000000000000000000000000000000000000000000000000000000000000",
  "how": {
    "build": "attesto-flight-recorder@proto-2.0",
    "rules": "rules-v1#6ad3916fe682caed",
    "traceId": "a4bb24754a15dc67"
  },
  "type": "request.received",
  "at": "2026-10-17T00:21:18.335Z",
  "who": {
    "kind": "customer",
    "id": "cust-ben",
    "name": "Ben Okafor"
  },
  "tag": "claimed",
  "source": "customer message",
  "data": {
    "textHash": "23919aaab8fd9290f9e77cd72fdb48447d88da55886d9a0bf91cd64a37c5b3b7"
  },
  "hash": "b1cf2a7d4b8b4666fcd1997ce644dc174473cbe25d135f2e1c0c28d04f9658ce"
}
#2 action.proposed
{
  "v": "proto-2",
  "runId": "run-dujuay8mqy",
  "seq": 2,
  "prev": "b1cf2a7d4b8b4666fcd1997ce644dc174473cbe25d135f2e1c0c28d04f9658ce",
  "how": {
    "build": "attesto-flight-recorder@proto-2.0",
    "rules": "rules-v1#6ad3916fe682caed",
    "traceId": "a4bb24754a15dc67",
    "agent": "Support agent@toy-0.1"
  },
  "type": "action.proposed",
  "at": "2026-10-17T00:21:18.693Z",
  "who": {
    "kind": "agent",
    "id": "agent:toy-support",
    "name": "Support agent",
    "version": "toy-0.1"
  },
  "tag": "claimed",
  "source": "agent proposal",
  "data": {
    "proposalId": "p-9z49y6bj2b",
    "action": {
      "kind": "refund",
      "orderId": "1190",
      "amountCents": 18000,
      "currency": "USD"
    },
    "reasonHash": "8e063cc4afa33e3eb470ec7de2620795704d12b0c678c2bc3e9b91c6a6480d9c"
  },
  "hash": "754f51e5ebd501bbf89aefdfe77dd5e5fff388e674784a2a12ebffe022c36c31"
}
#3 action.held
{
  "v": "proto-2",
  "runId": "run-dujuay8mqy",
  "seq": 3,
  "prev": "754f51e5ebd501bbf89aefdfe77dd5e5fff388e674784a2a12ebffe022c36c31",
  "how": {
    "build": "attesto-flight-recorder@proto-2.0",
    "rules": "rules-v1#6ad3916fe682caed",
    "traceId": "a4bb24754a15dc67",
    "agent": "Support agent@toy-0.1"
  },
  "at": "2026-10-17T00:21:18.693Z",
  "who": {
    "kind": "rules",
    "id": "rules",
    "name": "Your rules"
  },
  "tag": "observed",
  "source": "decide()",
  "type": "action.held",
  "data": {
    "proposalId": "p-9z49y6bj2b",
    "rule": {
      "id": "over-100-needs-person",
      "name": "Refunds over $100 need a person"
    },
    "checked": [
      {
        "ruleId": "flagged-customer",
        "matched": false
      },
      {
        "ruleId": "one-refund-per-order",
        "matched": false
      },
      {
        "ruleId": "over-100-needs-person",
        "matched": true
      }
    ],
    "approvalId": "ap-p-9z49y6bj2b"
  },
  "hash": "710d8c92a855072350a533b25c18eb830669bc6bffc7cc8017c9e97babe35ba8"
}
#4 person.approved
{
  "v": "proto-2",
  "runId": "run-dujuay8mqy",
  "seq": 4,
  "prev": "710d8c92a855072350a533b25c18eb830669bc6bffc7cc8017c9e97babe35ba8",
  "how": {
    "build": "attesto-flight-recorder@proto-2.0",
    "rules": "rules-v1#6ad3916fe682caed",
    "traceId": "a4bb2567dda8dc67"
  },
  "type": "person.approved",
  "at": "2026-10-17T00:21:57.099Z",
  "who": {
    "kind": "person",
    "id": "person:tester",
    "name": "Tester"
  },
  "tag": "claimed",
  "source": "approval link",
  "data": {
    "proposalId": "p-9z49y6bj2b",
    "approvalId": "ap-p-9z49y6bj2b"
  },
  "hash": "103157921b15eea97221e9a148eb4c300bc444186e989ab90d7ddd282d7af288"
}
#5 action.done
{
  "v": "proto-2",
  "runId": "run-dujuay8mqy",
  "seq": 5,
  "prev": "103157921b15eea97221e9a148eb4c300bc444186e989ab90d7ddd282d7af288",
  "how": {
    "build": "attesto-flight-recorder@proto-2.0",
    "rules": "rules-v1#6ad3916fe682caed",
    "traceId": "a4bb2567dda8dc67"
  },
  "type": "action.done",
  "at": "2026-10-17T00:21:57.117Z",
  "who": {
    "kind": "system",
    "id": "simulated payments (prototype)",
    "name": "simulated payments (prototype)"
  },
  "tag": "observed",
  "source": "simulated payments (prototype)",
  "data": {
    "proposalId": "p-9z49y6bj2b",
    "reference": "sim-refund-p-9z49y6bj2b"
  },
  "hash": "be757be734daeec0bf2f7d16b22e9270c5a72a57b60077196a4987c16f0f6a8d"
}