K-Veritas
Guide

Proofs & checkout

Selectively reveal one file without exposing the rest, and reconstruct the exact code of any snapshot from a single, signature-bound bundle.

Selective-disclosure proofs

Because the state is a Merkle tree, you can prove that specific files were part of a signed snapshot while every other file stays an opaque, salted hash. Name one or more files and get a single self-contained proof:

kveritas prove report.pdf src/train.py configs/train.yaml
# -> writes one self-contained kveritas-proof.json

kveritas verify-proof kveritas-proof.json
# -> VERIFIED src/train.py       (run 2, train)
#    VERIFIED configs/train.yaml (run 1, preprocess)

The proof reveals only those files' contents; everything else appears only as commitments. It embeds the report's signed seal, so verify-proof checks it on its own - no report needed alongside it. It works across every run of a session.

report.pdf.provkey.json is a local keystore written next to the report at seal time. It holds real paths and salts and powers prove - keep it private and do not share it.

Verify in the browser

A proof is a single self-contained file, so a non-technical reviewer can check it with no tools. Drop it on kveritas.org/verify and it shows, for each revealed file, a VERIFIED badge and the file's contents. You can also drop several separate proof files at once and it verifies each.

Checkout bundle

Sealing at --disclosure open writes one bundle, report.pdf.kvbundle.zip, that can reconstruct the code at any snapshot. For a multi-run session, all runs are merged into that single uploadable zip.

kveritas checkout report.pdf.kvbundle.zip run_end /tmp/out --report report.pdf
# multi-run: select a run and snapshot
kveritas checkout report.pdf.kvbundle.zip run2:train /tmp/out --report report.pdf

The bundle contains the source contents (content-addressed and deduplicated), a manifest per snapshot, and an index. It never contains datasets, weights, or withheld files.

Tamper-evidence

Report

Signed with RSA-PSS over the canonical data; any change breaks the data hash.

Bundle

Its hash is bound inside the signed report, so a modified bundle is rejected.

Each file

Every object is re-hashed against its manifest on checkout, so a swapped file is caught even without the report.

Verify a bundle

Always pass --report to checkout so the bundle is checked against the signature. On the web verifier, upload the report together with the bundle and the Source Bundle check reads MATCH.