veridata-recon
Verifiable Reconciliation Proofs for Python - powered by Rust.
This is not the
veridatapandas-cleaning package. This library provides cryptographic data pipeline reconciliation using Merkle trees, Ed25519 signatures, and the VRP (Verifiable Reconciliation Proof) format.
What It Does
veridata-recon lets you mathematically prove that data made it from a source
system to a sink system without:
- Drops - records lost in transit
- Mutations - records altered during transfer
- Duplicates - records replicated unexpectedly
It generates cryptographic proofs (VRP documents) that can be verified offline by any party with the public key - no access to the original data required.
Installation
pip install veridata-recon
Current version on PyPI: 0.1.1.
Quick Start
import veridata_recon as vr
# Generate a random salt for this reconciliation run
salt = vr.generate_salt()
# Your source and sink records (e.g., from Kafka topic and Iceberg table)
source = [
{"order_id": "1001", "item": "widget", "qty": "5", "status": "shipped"},
{"order_id": "1002", "item": "gadget", "qty": "3", "status": "pending"},
{"order_id": "1003", "item": "gizmo", "qty": "1", "status": "shipped"},
]
sink = [
{"order_id": "1001", "item": "widget", "qty": "5", "status": "shipped"},
{"order_id": "1002", "item": "gadget", "qty": "3", "status": "pending"},
{"order_id": "1003", "item": "gizmo", "qty": "1", "status": "shipped"},
]
# Reconcile with cryptographic proof
result = vr.reconcile(
source=source,
sink=sink,
identity_rule="composite:[order_id]",
content_fields=["order_id", "item", "qty", "status"],
salt=salt,
)
print(result["verdict"]) # "PASS"
print(result["matched_count"]) # 3
Detecting Issues
# Source has 3 records, sink is missing one
sink_missing = source[:2]
result = vr.reconcile(
source=source,
sink=sink_missing,
identity_rule="composite:[order_id]",
content_fields=["order_id", "item", "qty", "status"],
salt=salt,
)
print(result["verdict"]) # "FAIL"
print(len(result["missing"])) # 1 - order_id 1003 dropped
Key Features
Hashing
# SHA-256 (default) or BLAKE3
digest = vr.hash_bytes(b"hello world")
digest_b3 = vr.hash_bytes(b"hello world", algorithm="blake3")
Fingerprinting
fp = vr.fingerprint(
record={"order_id": "1001", "amount": "99.99"},
identity_rule="composite:[order_id]",
content_fields=["order_id", "amount"],
salt=salt,
)
# Returns: {"id_hash": "ab12...", "content_hash": "cd34...", "fingerprint": "ef56..."}
Key Management
# Generate a new Ed25519 key pair
keys = vr.generate_keypair()
print(keys["public_key"]) # base64-encoded
print(keys["private_key"]) # base64-encoded - keep secret!
# Reload from private key
keys2 = vr.keypair_from_private(keys["private_key"])
assert keys2["public_key"] == keys["public_key"]
Proof Verification
# Verify a .vrp.json proof file offline
outcome = vr.verify_proof("path/to/proof.vrp.json", public_key_b64)
# Returns: "PASS", "FAIL", or "UNVERIFIED"
Use Cases
- Data Pipeline Integrity: Prove Kafka->Iceberg pipelines don't lose data
- Regulatory Compliance: Cryptographic evidence of data completeness
- CI/CD Gates: Fail builds if reconciliation doesn't pass
- Cross-Team Trust: Share proofs without sharing raw data
- Audit Trails: Chain proofs for continuous monitoring
How It Works
- Fingerprint each record using salted, domain-separated hashing
- Reconcile source vs sink fingerprint sets
- Produce a verdict: PASS, FAIL, or UNVERIFIED
- Generate Merkle proofs for missing records (offline verifiable)
- Sign the entire proof with Ed25519
Performance
Built on Rust with zero-copy where possible. Handles millions of records
efficiently thanks to the underlying veridata-core engine.
License
Apache-2.0
Metadata
Release files for veridata-recon 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| veridata_recon-0.1.1.tar.gz | 59.0 kB | With provenance | Details for veridata_recon-0.1.1.tar.gz |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| veridata_recon-0.1.1-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details for veridata_recon-0.1.1-cp312-cp312-win_amd64.whl |
| veridata_recon-0.1.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 | Details for veridata_recon-0.1.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
| veridata_recon-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.17+ x86-64 | Details for veridata_recon-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
Total release size: 2.4 MB
Release files / veridata_recon-0.1.1.tar.gz
| Download URL | veridata_recon-0.1.1.tar.gz |
|---|---|
| Size | 59.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d665b24d8eaa56e472710bb16c5ebdf985e76c548bafc120afd3b6ee0b1aff3d
|
|
BLAKE2b-256 checksum How to use checksums |
fa15376cf00beae78c05276eccd0c589c71ffb03f63511e2126b85e1336a7419
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / veridata_recon-0.1.1-cp312-cp312-win_amd64.whl
| Download URL | veridata_recon-0.1.1-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 507.9 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
2f0d5b30fa565b1f6257d6d1668717ed84eb88852c9746e13f486a3ad66fe0bc
|
|
BLAKE2b-256 checksum How to use checksums |
452f2c341fa653ad2c12efa517d27ab19f5c22c26df16ec82acc11b6d2b83436
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / veridata_recon-0.1.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | veridata_recon-0.1.1-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6c58704cd856b8074bfbb72b1d0df08aa34f258f386db5845f0413d4b423b0de
|
|
BLAKE2b-256 checksum How to use checksums |
098ccb44ac53022031de1210fe3532120b961103ffc3d8e15248f3c7fbf071c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logRelease files / veridata_recon-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | veridata_recon-0.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 666.8 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
e7fe05b39e899f6f8060a1fb11345012cf860504ddd1704d2e9efb6b5f8539e3
|
|
BLAKE2b-256 checksum How to use checksums |
1abc49fa58eab6c1ffa42be7e1d955dc0fad1a7bd6b301cc8a7ee45237e9cd34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logSecurity for veridata-recon 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 4 files in this release have been uploaded with provenance metadata.
Attestation for veridata_recon-0.1.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 26, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.