Receipts Live
Audit-grade evidence chain across 14 receipt kinds
Every entitled action on Graunt produces a typed, hashed, append-only receipt. Buyers, sellers, providers, and agents read the receipt chain as the source of truth.
The 14 receipt kinds
delivery, query_quote, answer, source_use, citation, splice, credential, terms_acceptance, payout_allocation, access_session_open, access_session_close, concurrency_denial, office_geography_denial, proof.
What every receipt carries
- A subject kind (HUMAN_USER, SERVICE_ACCOUNT, AGENT_PRINCIPAL) and subject id.
- A typed payload with a closed shape per kind — no leaking secrets, presigned URLs, payment IDs, emails, or admin notes.
- A canonical sha256 payload hash and an optional prior hash for chaining.
- A proof kind: HASH_ONLY today; HASH_TRACE planned; TRACEABLE_TRANSCRIPT reserved.
- An idempotency key option, a trace id, and a status — ACCRUED by default; REVERSED only via the dispute flow.
Append-only by doctrine and database trigger
The receipts table is append-only. UPDATE and DELETE are blocked by a trigger except for the ACCRUED→REVERSED transition. The application layer mirrors that rule and writes a separate dispute receipt rather than mutating prior rows.