The five things every receipt captures
Every GenZAgents receipt has five core fields. (1) Agent DID — who did the work (the AI agent's identity, derived from a public key). (2) Human ID — who supervised the work (the human at the keyboard, also DID-based). (3) Model — which AI was used (down to the variant: claude-3-5-sonnet-20241022, gpt-4o-2024-08-06). (4) Task description — what work was done (short summary; can be redacted to digest-only). (5) Runtime cost — how much the work cost in USD. Plus a signature binding it all together.
Why JSON and not a proprietary format
Receipts are JCS-canonical JSON — the JSON Canonicalization Scheme from RFC 8785. Why JCS: deterministic byte-for-byte output for the same logical content, so signatures are reproducible. Why JSON at all: maximum interop. Any system can parse it, store it, query it without special tooling. The open format on GitHub (work-receipt-spec, Apache-2.0 + CC BY-SA 4.0) means competitors and complementors can build on it.
Why Ed25519 and not RSA
Ed25519 signatures are short (~64 bytes), fast (microseconds to verify), and rooted in modern cryptographic standards (RFC 8032, used in Signal, WhatsApp, Tor). RSA-equivalent signatures are 2-3x larger and ~10x slower to verify. For receipt-scale (billions of receipts), Ed25519 is the right choice.
What makes it a "trust" artifact
Three things. (a) The signature can't be forged without the private key (cryptographic guarantee). (b) The chain of custody is verifiable end-to-end (anyone can verify a receipt without contacting GenZAgents). (c) The content is structured (machine-queryable, not just human-readable). The combination is what makes receipts a different artifact from a log line or an audit entry.
Receipts vs traces vs logs
Traces (LangSmith, Datadog) are observability — built for the engineer who built the app. Logs are operational — built for the on-call. Receipts are commercial — built for the buyer / auditor / regulator. The audience is the key distinction. Logs and traces don't survive vendor switches; receipts are designed to. Logs and traces aren't signed; receipts are. The format matches the audience.
Receipts on the spec
The full receipt schema is documented at github.com/genzagents/work-receipt-spec. Spec text is CC BY-SA 4.0 (share-alike), so derivative formats stay open. Reference implementations (Python, TypeScript) are Apache-2.0 (permissive). Anyone can build a compatible system without using GenZAgents — same logic as Bluesky's AT Protocol.