OPEN STANDARD · DRAFT 1
AI-Decision-Receipt
One HTTP response header that travels with every governed AI decision: what was decided, where it is sealed, a fingerprint of the request, and where anyone can check it against Bitcoin. Free for anyone to emit, read or implement.
The header
AI-Decision-Receipt: v=1, issuer="sebbi.pro", decision=ALLOW, score=0.12, block=1042, seal="9f2c…", req="<sha256>", call="GC-7Q2M9X4KDP", verify="https://sebbi.pro/forever?block=1042"
Syntax: an RFC 8941 Structured Field Dictionary.
| Key | Meaning |
|---|---|
| v | Version. Integer, currently 1. Required. |
| issuer | Who sealed the decision. String host name. Required. |
| decision | Token: ALLOW, CHALLENGE or BLOCK (issuers may define others in capitals). |
| score | Decimal risk score, 0 to 1. |
| block | Integer position of the sealed decision in the issuer's chain. |
| seal | String: the chain hash of that block (hex SHA-256). |
| req | String: SHA-256 (hex) of the exact request body the decision was made on. |
| call | String: the issuer's identifier for this call, when sent through a gateway. |
| verify | String URL where the decision can be checked — for sebbi.pro, a Forever Proof against Bitcoin. |
Browsers: issuers should send Access-Control-Expose-Headers: AI-Decision-Receipt so web apps can read it.
Checking a receipt
- Hash the request body you sent; it must equal
req. - Fetch the proof for
blockfromverify. Its subject's chain hash must equalseal. - Check the proof against Bitcoin — in a browser or offline with forever-verify.py. The decision existed before that Bitcoin block.
Paste a header to try it:
Where it comes from
Every response through the sebbi.pro gateway and every /api/govern answer carries it. Any governance system may emit it under its own issuer. Version 1 is a draft published openly for comment; the intent is to take it through the IETF as an Internet-Draft.