Signed receipts & the trust model¶
A verdict you can't take with you isn't worth much. Tessera binds every answer into an Ed25519 receipt that an auditor verifies offline — no warehouse, no network, no trust in Tessera.
What the signature commits to¶
The receipt binds the actual outcome: the question, the certified metric, the scope, the executed SQL, the answer, the verdict, a digest of the grounded issues, and the dataset identity. Change any one of them and verification fails.
tessera ask "What was consolidated net revenue in 2025?" --receipt receipt.json
tessera verify receipt.json
[VALID] signature valid; signer identity not pinned (pass --expect-key to assert it)
attested verdict: PASS signer key_id: e1bcdef0b7e4ca53
Pin the signer to turn an integrity check into an authenticity one (constant-time):
The key model — no default secret¶
The per-install Ed25519 signing key resolves:
TESSERA_SIGNING_KEY(env), else- a persisted key at
~/.config/tessera/signing_key(created0600in a0700dir, atomically withO_NOFOLLOW), else - fail closed.
There is no hardcoded or default signing secret anywhere — a public default key would let anyone forge receipts. The key is never logged and never committed.
The trust model, stated honestly¶
A receipt proves "these independent checks ran and this number reconciles to the certified metric, signed by this key" — not metaphysical truth.
- With a pinned key (
--expect-key): authenticity — a specific signer produced it. - Without one: integrity only — the bytes are internally consistent. Anyone can mint a self-signed receipt, so always pin the key out-of-band.
Residual risks no signature removes: a wrong certified metric definition (governance), replay of a
genuine receipt (consumers should track receipt_id), dependencies / OS, and questions outside the
modelled metrics (which return WARN, not false confidence).
Security cadence¶
The signing/key path went through the project's security cadence — audit → fix → empirically proved
(a CLI forgery of the answer returns INVALID) → regression pins (tamper, wrong-key, fail-closed,
per-install randomness, 0600 perms, env-key-not-persisted) → red-team rounds (added O_NOFOLLOW).