Independent verifier

Bring the receipt. Check the bytes.

The CLI reads a receipt file and checks its envelope, chain link, inclusion path, signed root and selected trust anchor.

Development signer means integrity under a published dev key and no independently trusted time.

Choose an explicit trust pin

The demo receipt is signed by a development key. Its public SPKI SHA-256 fingerprint is published separately in dev-trust.json. Copy that fingerprint into the command below.

./recourse-verify receipt.json \
  --dev-pin <SPKI-SHA256-from-dev-trust.json>

A receipt carrying a public key does not establish trust in that key. The CLI requires the separate pin. Development verification does not establish independently trusted time.

Know which dates the verifier checks.

Received, Durable and Sealed dates are covered by the receipt proof. Received and Durable sit inside the hashed chain entry, Sealed sits inside the signed root, so the verifier detects a change made to any of them after sealing. They are still times this service asserts from its own clock, and the development signer supplies no independently trusted time. Recorded-at is inside the hashed envelope. Seal lag is calculated from the Sealed-at inside the signed root, which is the value these pages render.

The source claimed event date is also inside the hashed envelope. Hashing preserves the claim; it does not establish that the event happened then.

The command above uses the downloaded executable renamed to recourse-verify. If you built from source, use ./dist/recourse-verify from recourse/ instead.

Read the result

CheckMeaning
EnvelopePublic fields, ciphertext and key reference match the envelope digest.
ChainThe record's sequence, envelope digest and preceding commitment produce its chain hash.
InclusionThe exact leaf index, tree size and sibling path reconstruct the signed Merkle root.
TimestampThe timestamp binds the canonical root statement and its signature verifies.
TrustThe signer matches the explicitly selected development pin or configured RFC 3161 trust anchor. An independent production timestamp service is a release gate.

Invalid or untrusted receipts exit nonzero. A change to hashed envelope content, a wrong sibling, a wrong position or a different root must fail.

Audit the surrounding chain

A single inclusion proof establishes this record's membership in the signed tree. A complete chain audit also downloads the public hash-only tiles and checks every contiguous entry back to genesis. The shared TypeScript library exposes verifyChain(entries) for that audit.

Inspect the demo receipt · Create a local record