Rust + Python · Data Quality · OSS

Evidence for
your data.

“Ruff, but for your data.”

ProofFrame is an Arrow-native data-quality engine for Rust and Python. Profile a dataset, check it against a contract, diff two versions by key — and get a canonical BLAKE3 fingerprint plus an Ed25519 signed receipt that proves exactly what was checked.

scanning verified diff
01 — THE PROBLEM

A check that says “pass” proves nothing.

Most data tools answer one narrow question — did this table pass? — and hide everything behind a boolean. When a pipeline breaks downstream, or an auditor asks what data a model was trained on, there is no record of what was checked, why it failed, or whether the exact dataset can be identified again. Data moves faster than the evidence about it — so bad data ships, and no one can prove what happened.

02 — HOW IT WORKS

Profile → validate → diff, with proof.

01 · PROFILE

Fingerprint the data

Every profile emits a canonical pf-fp-v1 BLAKE3 fingerprint from typed bytes — not Arrow display — so the exact dataset can always be identified again.

02 · VALIDATE

Bounded, row-level evidence

Contracts return the failing rows, a total violation count, and truncation status — never a vague pass/fail that hides real failures.

03 · PROVE

Sign the result

Ed25519 signed receipts (RFC 8785 + BLAKE3) turn a check into a verifiable, tamper-evident record anyone can re-check later.

30-second demo · Python
import proofframe as pf

profile = pf.profile(df)                # canonical pf-fp-v1 fingerprint
report  = pf.validate(df, contract)     # bounded, row-level evidence
receipt = report.sign(secret_key)       # Ed25519 signed receipt

print(profile.fingerprint)             # pf-fp-v1:9a3f…e2
print(report.passed, report.violation_count)  # False  3
03 — WHAT YOU GET

One engine you can trust in the pipeline.

One engine, two languages

A Rust core with Python bindings — PyArrow, Pandas, and Polars feed the same native path, deterministic JSON out.

Proof-carrying checks

Canonical fingerprints, keyed diffs, PII & leakage scans, and Ed25519 signed receipts — evidence, not vibes.

crates.io + PyPI

Published under Apache-2.0, #![forbid(unsafe_code)], ABI-stable Python wheels for 3.10+.

Need to prove your data is right?

Let's put proof-carrying checks at the edge of your pipeline.

Start a project →
04 — PROOF IN THE WILD

7.6M real Bitcoin rows, validated in 1.742 s.

ProofFrame ran an exact, row-level contract over 7.6 million real Bitcoin market rows — the whole dataset, not a sample — and emitted a canonical fingerprint plus a signed receipt. Read the writeup, or run the notebook yourself on Kaggle.

05 — INSTALL

Install it, run it, prove it.

ProofFrame ships to both registries under Apache-2.0 — a pure-Rust crate for Rust users, and ABI-stable wheels for Python.

$ pip install proofframe==0.4.0a3
$ cargo add proofframe@0.4.0-alpha.3
PyPI

pip install

ABI-stable wheels for Python 3.10+ — pf.validate, pf.profile, pf.diff, pf.scan_pii, and signed receipts.

CRATES.IO

cargo add

A pure-Rust default build with an idiomatic API returning typed structs — no required Python linkage.

DOCS.RS

Read the API

Full Rust API documentation is generated on docs.rs for every published version.

Apache-2.0 for everyone. Need commercial support, custom data contracts, or an SLA? Get in touch →

06 / DATA CONTRACT DOSSIER PROOFFRAME · RUST + PYTHON · APACHE-2.0

A table should carry its own evidence.Tablo kendi kanıtını taşımalı.

ProofFrame runs one Arrow-native engine behind Rust and Python. Profiles identify exact typed bytes, contracts return bounded row-level violations, keyed diffs explain change and signed receipts preserve what was checked.ProofFrame Rust ve Python arkasında tek Arrow-native motor çalıştırır. Profiller kesin tipli byte'ları tanımlar, sözleşmeler sınırlı satır-seviyesi ihlal döndürür, keyed diff değişimi açıklar ve imzalı receipt neyin kontrol edildiğini korur.

01 / PROFILE

Identify exact bytes.Kesin byte'ı tanı.

Typed Arrow data produces a canonical pf-fp-v1 BLAKE3 fingerprint.Tipli Arrow verisi kanonik pf-fp-v1 BLAKE3 fingerprint üretir.

02 / VALIDATE

Return the failing rows.Hatalı satırları döndür.

Contracts preserve violation count, evidence rows and truncation state.Sözleşmeler ihlal sayısı, evidence satırları ve truncation durumunu korur.

03 / DIFF

Explain the change.Değişimi açıkla.

Keyed comparison separates added, removed and modified records.Keyed karşılaştırma eklenen, silinen ve değişen kayıtları ayırır.

04 / SCAN

Expose unsafe fields.Güvensiz alanları aç.

PII and target-leakage checks stay in the same evidence model.PII ve target-leakage kontrolleri aynı evidence modelinde kalır.

05 / SIGN

Seal the receipt.Receipt'i mühürle.

RFC 8785 canonical JSON, BLAKE3 and Ed25519 produce a verifiable record.RFC 8785 kanonik JSON, BLAKE3 ve Ed25519 doğrulanabilir kayıt üretir.

ONE ENGINE / TWO LANGUAGE SURFACES

The Python path does not reimplement the Rust path.Python yolu Rust yolunu yeniden yazmaz.

RUST
typed structs · pure-Rust default build · forbid unsafe code
PYTHON
ABI-stable wheels for Python 3.10+
INPUTS
PyArrow · Pandas · Polars through the same native engine
OUTPUT
deterministic JSON · canonical fingerprint · signed receipt
PUBLIC BENCHMARK 7.6M

Real Bitcoin rows checked by one exact, row-level contract.Tek kesin, satır-seviyesi sözleşmeyle kontrol edilen gerçek Bitcoin satırı.

RECORDED TIME 1.742s

Published validation run for the 7.6M-row dataset.7,6 milyon satırlık veri için yayımlanan doğrulama koşusu.

Built by Emir Hüseyin İnci Systems Engineer · Bursa, Türkiye Systems that decide. Proof that stays. Work with me →