Skip to main content

Proof · Chain row inspector

Walk the audit-log chain link by link.

Type any sequence number from the public audit log below. We fetch that row plus the row before and the row after it, then verify the cryptographic linkage in your browser — no trust in our backend required. When the row you pick is a chain-stamped record of a documented integrity test, the inspector highlights it amber and shows you what the row says about itself.

How the chain works

Each row signs its predecessor. The math is below.

Every row in the audit log carries an HMAC of itself (entry_hmac) plus a pointer to the previous row's HMAC (previous_hmac). The hash algorithm is recorded per-row in hash_algoSHA3-512 for rows on or after sequence #24971 (the 2026-05-26 cutover), SHA-256 for the historic rows preserved exactly as they were written. The chain rule is exactly:

row(N).previous_hmac == HASH( row(N-1).entry_hmac )

where HASH is row(N).hash_algo:
  'sha256'   → hashlib.sha256
  'sha3_512' → hashlib.sha3_512

If anyone edits row N-1's content, its entry_hmac changes — and the hash of that new HMAC (under row N's algorithm) no longer matches row N's stored previous_hmac. To hide the edit they would have to re-write row N too, and N+1, and every row after it. That's why this kind of chain is called tamper-evident.

The inspector above computes HASH( row(N-1).entry_hmac ) in your browser under row N's algorithm and compares it to row N's previous_hmac. Match → green. Mismatch → red. Documented intentional break → amber, with a pointer to the chain-stamped audit_logs record that explains it. Read your own data. Draw your own conclusions.

Adjacent surfaces

Three more ways to verify.

Walk the whole chain at once: /proof/verify-chain.html · See every chain we publish: /proof/chains.html · The skeptic's path through everything: /proof/skeptic.html.