How a PrivHaven report is verified
The report is evidence, not certification. It attests a deterministic process and its findings: facts an auditor can independently reproduce, without trusting us and without the data ever leaving a device.
The breathalyzer model
A breathalyzer is type-approved and calibrated; each reading is admissible evidence; the manufacturer never certifies the driver. PrivHaven is the calibrated instrument. Your DPO, auditor, or counsel draws the compliance conclusion. We never do.
What makes it reproducible
- Pinned engine + ruleset. The report records the engine version it ran under, the SHA-256 of the engine binary that actually ran, and a ruleset hash that is computed from the detection rules themselves, so the verifier recomputes it and compares, rather than taking the report's word for it. A report produced under different rules will not verify against this one.
- Pure, deterministic core. Same input bytes × same version ⇒ byte-identical findings: no floats, no hash-map order, no ambient inputs.
- Tamper-evident. The report's
reportHashis a SHA-256 over its canonical form: change one byte of it, and the hash no longer matches.
How to verify a report
- Recompute the hash. SHA-256 over the canonical
report.jsonmust equal itsreportHash. - Reproduce the findings. Re-run the same file through PrivHaven. The report records the engine and ruleset version it ran under, plus the SHA-256 of the engine binary, so you can confirm the running version matches; while it does, the findings reproduce byte-identically (scan) or at the findings level (scrub).
- Read the limits. The report's remediation notes and the detection rules state what detection does not guarantee (e.g. names in free text without an NER pass).
Every step here is something you do, on your own device, with your own copy of the file, with no trust in us required. Or run all of it at once with the engine-free verifier below (hash, ruleset, and every finding) in your browser, with nothing uploaded.
Verify a report now
Drop in a report.json and the original file. Everything runs on your device, with
no upload and none of PrivHaven's detection engine: the checker uses only public algorithms
(checksums and SHA-256). It recomputes the report hash, re-checks the ruleset identity, and
re-validates every finding against your own copy of the file. A legal conclusion is still your
auditor's to draw.
Or run it yourself, outside this page
The checker is a published open-source package, so you never have to take our word for what this page does. Read it, run it air-gapped, or wire it into a pipeline. It has zero runtime dependencies, and the PrivHaven detection engine is deliberately not part of it.
- Command line. No install:
Exit codes make it usable as a CI or pre-signing gate:npx privhaven-check report.json your-file.csv --hash sha256:<hash on your report>0verified,1a check failed,2a usage error. - Offline single file. Download check.html from the latest release and open it in any browser. It is self-contained and makes no network requests, so it runs on an air-gapped machine.
- Source and hashes. Read it on GitHub or on npm. Every release publishes the SHA-256 of each artifact in its MANIFEST, so you can confirm the copy you ran is the copy that was published.
The browser tool above and the command line checker are the same code and produce the same result. A cross-check in both projects' CI proves the checker reproduces the engine's canonical report bytes exactly, so a report cannot pass here and fail there.
Why this is the difference
Local scrubbers mask data. Only a reproducible report lets a third party confirm what was checked and handled, turning "we cleaned it" into evidence that stands up in a review. That's the line between a tool and an instrument.