φENTROVERSE

Verify

Check our work.
You should not have to trust us.

Most supply-chain assurance asks you to believe a vendor questionnaire. We publish the auditor, publish what it found, and hand you the command that regenerates the result on your own machine. No account, no upload, and no network call, because the tool contains no network code at all. That is the property it exists to demonstrate, and you can check it by running the tool on itself.

This is deliberately not a demonstration you have to book.

01
git clone https://github.com/EntroLabs/entrovouch && cd entrovouch

Apache-2.0. Pure Python standard library: no dependencies, and no network code of its own. Python 3.10 or later, and nothing to install.

02
python examples/regenerate.py

Regenerates every report in examples/reports from the fixture tree beside it: the no-egress audit, its SARIF and in-toto forms, the cryptographic bill of materials, its CycloneDX 1.6 form, and the key-provenance report.

03
compare one value: findings_digest

It is bit-identical across runs, processes and machines. If yours matches ours, the tool on your machine produced exactly what we published. The expected values are printed in the repository, beside the reports themselves.

What we publish that vendors usually do not

The repository carries a conformance file stating, for every standard we name, what actually backs the name: a test against that standard's own vectors, or an explicit statement that conformance is not claimed. It exists because we tested our own lattice signer against the official vectors and it failed. Every parameter was correct and the construction was not. We wrote that down rather than quietly fixing it, and it is the most useful thing in the repository: an issuer who hides a failed conformance test has no argument left.

The same file records two signature defects found in our own predecessor, and what each one meant for reports already delivered. If you are evaluating a security vendor, that record is worth more to you than any adjective on a homepage.

The content hash will NOT match, and that is correct.

It covers the issuance timestamp, so two honest runs produce two different values. A reader who compares it, sees a mismatch and concludes the report was forged has followed the most obvious instinct and reached the wrong answer. All three digests are printed on the report itself, each labelled with whether it reproduces.

Static analysis is detection-grade, not proof.

It audits the source you point it at. It cannot see egress introduced by a dependency it was not pointed at, by dynamic loading, or by a compiled extension. Detection is blocklist-based, so it is complete only against names it knows. Every report says this in its own body rather than leaving you to find it.

A signature proves origin and integrity, never correctness.

With a pinned public root it proves a report came from us and was not altered. It says nothing about whether the verdict is right. Omitting the root returns UNVERIFIED rather than ATTESTED, because a well-formed signature is not evidence of who wrote it.

One finding in our own repository is deliberate.

The example fixture contains a real network import so the demo has something to find. The shipped package audits clean, and a test asserts that every finding in the whole tree comes from the examples directory, so a real one cannot hide behind the scoped claim. We did not teach the auditor to skip that directory: a scanner with a built-in blind spot is the thing this tool exists to argue against.