Why it can't be quietly changed.
Six overlapping layers of protection. The first four are cryptographic and let you detect tampering; the last two are storage guarantees that prevent it. Each closes a different “could POOF have faked this” angle.
1. Snapshot integrity
The snapshot's SHA-256 hash is stored on the approval row alongside the snapshot itself. Anyone re-verifying can recompute the hash from the stored bytes and compare. A mismatch means the snapshot column was edited after the row landed. This catches the simplest tamper attempt: changing what the customer approved without changing the hash.
2. Third-party timestamp (RFC 3161)
The envelope's hash gets submitted to a Trusted Time Stamping Authority (TSA), an independent service whose entire business is signing statements of the form “this hash existed at this time.” The TSA returns a cryptographically signed token. We store that token verbatim, along with the TSA's certificate chain at the time of issue.
The signing key is the TSA's, not ours. This is the key point: nobody at POOF can forge a TSA timestamp because POOF doesn't have the TSA's private key. A tamper attempt that changes the envelope changes its hash, and the original TSA signature no longer verifies.
For European jurisdictions, choosing a TSA that's a Qualified Trust Service Provider on the EU Trusted List makes the timestamp a Qualified Electronic Time Stamp under eIDAS, which carries a legal presumption of accuracy.
3. Hash-chained ledger
Every approval row carries the recomputed envelope hash of the prior approval in the same organization. The org's entire approval history is a linked list of cryptographic references. Rewriting one row's envelope shifts its hash, which breaks the link recorded on the next row, and breaks the TSA signature on every row from that point forward.
The practical effect: “fix one row to look clean” is not viable, because every later row would need a forged TSA signature, which requires the TSA's private key.
4. Signed approval URLs (HMAC)
The link a customer clicks in their approval email isn't an opaque random identifier. The URL carries an HMAC-SHA256 signature over a compact payload (token id, proof id, issuance time, expiration). A forgery attempt is rejected at signature verification time without ever touching the database.
Combined with the timestamp on the issuance event, this closes the “POOF generated this token after the fact” angle: the URL itself is cryptographic evidence that POOF issued it at the time recorded.
5. Database-level append-only ledger
The cryptographic protections above let you detect tampering. The next layer prevents it. The approval ledger lives in append-only ledger tables: a database engine feature that rejects UPDATE and DELETE at the engine level, regardless of who's running them. The schema is enforced when the table is created and cannot be turned off without dropping the table entirely (which itself leaves a system-managed audit trail).
The practical implication is that nobody at POOF, even a database administrator with full credentials, can quietly change an approval row. An attempted UPDATE returns an error before the row is touched. Combined with the cryptographic chain above, you get both layers: tampering is rejected at the engine, and the engine rejecting it leaves an audit trail of its own.
6. Immutable off-database archive
The complete evidence package for each approval is also written to write-once storage, under an immutability policy the application itself has no permission to lift. Retention defaults to seven years from the approval date.
This closes the last angle: what if the database itself were lost or replaced? The archived package is byte-identical to the one a user downloads through the app, and its own SHA-256 is recorded when it is written, so an archived copy can be checked against a live one at any point.