Sample evidence package · v1.0.0 · May 2026
Run the verifier on your laptop. Verify the receipt yourself, without trusting us.
A buyer-runnable sample of an Evidence Fabric package. Synthetic healthcare scenario. Real Ed25519 cryptography. Offline verifier with no vendor dependency. Download, install one Python package, run the verifier. PASS means the signatures and hashes verify against the published public key.
Individual files are browsable at verticaledgeai.ai/sample-package/. The methodology behind the package is published here.
What is in the package
Eleven files, all readable in any text editor. The package uses real Ed25519 cryptography against synthetic data. The eight files below ship with three more — public_key.json (required by the verify command), verifier_transcript.txt (the recorded verifier run, every mode), and the MIT LICENSE.
| File | Purpose | Approx size |
|---|---|---|
receipt.json |
One fully-signed receipt for a synthetic healthcare workflow (chart summarization for referral letter). Records inputs, classification, policy decision, provider routing, response, signature. | 2.2 KB |
manifest.json |
Lists ten signed-package artifacts with SHA-256 hashes and an audit period — every file in the package except the manifest itself, which cannot carry its own hash. The recorded transcript is deterministic and is hashed here like the rest. | 3.3 KB |
framework_mapping.md |
Illustrative topic crosswalk for NIST AI RMF and EU AI Act topics. HIPAA and Reg S-P control mappings are excluded; the table makes no control-satisfaction claim. Two rows carry footnotes marking what the sample does not stand behind. | 4.2 KB |
README.md |
Package overview, verification instructions, sanitization notes, intended use. | 19.4 KB |
verifier_cli.py |
Standalone Python 3 verifier. Single file, five modes: single receipt, manifest, chain walk, whole session export, and an offline self-test. Depends on two packages, cryptography and rfc8785. No vendor SDK, no phone-home, no version pinning beyond Python 3.9+. |
138 KB |
sign_and_verify.py |
One-shot build script: derives the synthetic keypairs, signs the receipt, the session export and the manifest, runs the verifier in every mode, captures the transcript. Reproducible from scratch by anyone with Python 3. | 22 KB |
session_export.json |
A synthetic session export: a three-event hash-linked chain signed under RFC 8785 JCS, the legacy-canonicalized receipt, and a chain-tip anchor, all inside one signed envelope. This is what --chain and --session-export run against. |
6.3 KB |
public_keyring.json |
Public-only keyring: one active key and one retired key, so verification across a signing-key rotation can be run against the sample rather than described. | 0.6 KB |
The topic crosswalk and methodology are published as markdown; HIPAA and Reg S-P control mappings are excluded and no control-satisfaction claim is made.
How to verify (3 steps)
Run time depends on the local Python environment; no completion-time benchmark is claimed.
-
Download the package. Download the ZIP (225 KB; SHA-256
35ab06cf906b05965ad8962e5e80fb98a744d4990ba3ee41b314e210c259e868), or pull the individual files fromsample-package/. -
Install the dependencies.
Those are the only Python packages the verifier requires.pip install cryptography rfc8785cryptographydoes Ed25519;rfc8785does the JSON canonicalization used by artifacts stampedrfc8785-jcs-v1. Requires Python 3.9+; developed and verified on Python 3.12 withcryptography46.x andrfc87850.1.x. -
Run the verifier.
Expected output:python verifier_cli.py --receipt receipt.json --public-key-file public_key.json
The verifier exits with code 0 on PASS, 1 on FAIL, 2 on an argument or environment error.== VeilEngine Receipt Verifier == Loading receipt: receipt.json Receipt: VERIFIED receipt rcpt_2026-05-18T14:32:11Z_a1b2c3d4: signature verified [ve-canonical-json-v1]; declares key id vke_synthetic_2026-05 Overall: PASS -
Walk the chain. The session export carries three hash-linked events. This replays the links and each event’s signature, stopping at the first break:
Recorded output:python verifier_cli.py --chain session_export.json --public-key-file public_key.json== VeilEngine Receipt Verifier == Loading chain: session_export.json event[0] sequence=0: PASS (metadata hash + chain link + signature) event[1] sequence=1: PASS (metadata hash + chain link + signature) event[2] sequence=2: PASS (metadata hash + chain link + signature) Chain: VERIFIED (3 events); declares key id vke_synthetic_2026-05 Overall: PASS -
Verify the export whole. One command checks the envelope signature, the chain, every receipt under its own canonicalization, the manifest hashes, the binding that holds the bundle, the chain wrapper, every event and every receipt to one session and one tenant — each of those layers has to declare both, and a receipt that declares its identity at two paths has to declare it the same way at both — and the recomputed chain-tip anchor:
Recorded output:python verifier_cli.py --session-export session_export.json --public-key-file public_key.json== VeilEngine Receipt Verifier == Loading session export: session_export.json [PASS] envelope signature verified [rfc8785-jcs-v1]; declares key id vke_synthetic_2026-05 [PASS] chain 3 events; prev_event_hash links + per-event signatures; declares key id vke_synthetic_2026-05 [PASS] receipts 1 receipt(s) verified under their own canonicalization; declares key id vke_synthetic_2026-05 [PASS] manifest signature verified [ve-canonical-json-v1]; 10 artifact hashes match; declares key id vke_synthetic_2026-05 [PASS] binding bundle, chain wrapper, 3 event(s) and 1 receipt(s) all declare session sess_synthetic_clinic_001 and tenant tenant_synthetic_demo [PASS] anchor chain tip recomputed: 3 events, sha256-rfc8785-jcs-v1 Session export: VERIFIED Overall: PASS
To verify the manifest and its artifact hashes on their own, point the verifier at the manifest: python verifier_cli.py --manifest manifest.json --public-key-file public_key.json. To verify against the pinned keyring instead of a single key — the path that survives a signing-key rotation — swap the key flag: python verifier_cli.py --session-export session_export.json --public-keyring-file public_keyring.json. Keyring verification also requires the chain-tip anchor, so a truncated export cannot pass it. To check the verifier before trusting its verdict, run python verifier_cli.py --self-test: it signs a payload that canonicalizes differently under each supported scheme and confirms the tool rejects a modified payload, a wrong key, a signature made under the wrong canonicalization, an unrecognized canonicalization identifier, a receipt spliced in from another session, a receipt carrying a different tenant, a bundle or chain wrapper that declares no tenant, a receipt that declares conflicting identities at its nested and top-level paths, an identity declared at a present path as anything but a non-empty string, conflicting key ids at an object’s two key-id paths, a wrong root shape for any mode, a manifest descriptor that is empty, untyped or escaping the package directory, a JSON object that names one key twice, an event declaring a false hash of itself, unsigned fields beside the signed export in its wrapper, an artifact dated outside its key’s validity window, a missing or stale chain anchor, and a keyring whose key descriptors are malformed, duplicated, aliased or carrying private-key material.
What the package demonstrates (and what it does not)
The package demonstrates
- The Evidence Fabric methodology produces real, structured, cryptographically-signed artifacts
- The verifier runs without vendor dependencies (only
cryptographyandrfc8785+ Python 3) - An auditor with the public key can verify a receipt’s signature, the hash-linked event chain, and the manifest’s artifact hashes, without trusting Vertical Edge AI
- The hash-linked chain-of-receipts pattern ships in the verifier, not only in the schema:
--chainreplays the links,--session-exportchecks the whole export. The cross-session transparency log and its inclusion evidence stay on the roadmap, and the receipt says so in its owntransparency_log_inclusion_proof_statusfield - The signing path is documented and byte-for-byte reproducible (see
sign_and_verify.py)
The package does not demonstrate
- That Vertical Edge AI has deployed VeilEngine in production with customers. The separate production field note does not establish VeilEngine use.
- That the methodology is correct for your specific regulatory framework (your auditor and counsel interpret)
- That the AI providers in the routing example (Claude, GPT, Gemini) retained or did not retain the data (vendor-side claim; this package records what the operator did, not what the provider then did)
- That the policy versioning in your environment is equivalent to the sample (your operator configures policy; the Evidence Fabric records what was in force)
Synthetic-data notice
The receipt records a hypothetical workflow at a fictional mid-market healthcare clinic. The patient name, MRN, DOB, diagnosis codes, and clinician identity are entirely synthetic and are labeled "synthetic": true in the receipt metadata. No real clinical data appears in any artifact.
The signer key (vke_synthetic_2026-05) is a synthetic Ed25519 keypair generated solely for the sample. The private key is intentionally exposed in sign_and_verify.py so anyone can regenerate the signatures and confirm the verification path. The sample does not establish any production signing arrangement.
The package uses Ed25519 signatures, SHA-256 hashes, and JSON canonicalization against synthetic artifacts. It establishes only the behavior a buyer can reproduce with this sample and verifier.
Next steps
If the package verifies cleanly on your laptop and the methodology aligns with how your auditors think about evidence, the next step is a scoped conversation on your specific regulatory perimeter.
Vertical Edge AI is not an audit firm. The package is published to demonstrate the Evidence Fabric methodology, not to substitute for an audit opinion.