Valid8X — JSON Schema 2020-12 validator that emits a signed, replayable evidence receipt (canonical payload + SBOM + HMAC-signed provenance token) for every run.
Project description
Valid8X
JSON Schema validation that emits a signed receipt for every run.
Most Python JSON Schema validators return True or a list of errors and forget the run ever happened. That's an opinion, not evidence.
Valid8X is a deterministic JSON Schema 2020-12 validator that writes a signed, replayable receipt for every validation: canonicalized payload, full error trace, CycloneDX SBOM of the validator's own dependency closure, and an HMAC-signed provenance token. Archive it. Replay it. Defend it in an audit.
It also has a governed repair mode — bounded subprocess fixer attempts under an explicit permit file — so the LLM repair path is auditable instead of a black box.
Quickstart
pip install valid8x
validx validate --registry examples/CONTRACTS/schemas/_registry.json \
--schema-key example.person \
--input examples/person_bad.yaml \
--out-dir out
cat out/verify_report.json # your signed receipt
Naming
Valid8X follows the same "distribution name vs import name" pattern as
Pillow (PyPI Pillow, import PIL) and BeautifulSoup (PyPI beautifulsoup4,
import bs4). This is intentional.
| Surface | Name |
|---|---|
| PyPI distribution | valid8x — pip install valid8x |
| Python import / CLI binary | validx — from validx import …, validx --help |
| Canonical source | RELEASEPROOF/validx/ (monorepo) |
| Public read-only mirror | github.com/AlphaBeta-Labs/Valid8x |
| Product brand | Valid8X |
The PyPI name uses 8 because validx was unavailable on PyPI. Internal
callers (Kinetic, ReleaseProof) import validx directly from the monorepo
source. External users pip install valid8x and get the same module under
import validx.
Feature availability
| Feature | Since |
|---|---|
| Deterministic validate | 0.1 |
| HMAC-signed provenance receipt | 0.2 |
| CycloneDX SBOM emission | 0.3 |
| Subprocess fixer (repair mode) | 0.3 |
| verify-report-validate CLI | 0.4 |
| GitHub Action / pre-commit / MCP | 0.5 |
| VSCode extension | 0.5 |
| Schema inferencer | 0.6 |
| Signed release artifacts (cosign) | 0.6 |
Why
- Replayable. Re-run validation against the receipt; get a byte-identical result or a loud failure.
- Auditable. Every run carries its own SBOM and a provenance token tied to schema registry version + input bytes.
- Governed AI repair. Permit file declares exactly which mutations are allowed. Unknown fields rejected. No silent scope expansion.
- Deterministic. Canonicalization rules are documented and versioned. No "works on my machine."
Architecture Note
- Structural Integrity Membrane model:
DOCS/VALIDX_MEMBRANE.md
Installed Modes
validate: deterministic validation onlyexplain: deterministic validation + explanation object, no AIrepair: deterministic repair in v0.3 with bounded subprocess fixer attempts (v0.4 adds report validation CLI hardening and packaging artifacts)extract: deterministic extraction scaffold (permit-gated, not implemented)
CLI
validx validate --registry examples/CONTRACTS/schemas/_registry.json --schema-key example.person --input examples/person_bad.yaml --out-dir out --approved-root examples
validx explain --registry examples/CONTRACTS/schemas/_registry.json --schema-key example.person --input examples/person_bad.yaml --out-dir out --approved-root examples
validx repair --registry examples/CONTRACTS/schemas/_registry.json --schema-key example.person --input examples/person_bad.yaml --out-dir out --approved-root examples --permit-path examples/permit.json --ai-driver subprocess --ai-model-id fake-fixer-v1 --ai-cmd "python -m tests.fake_fixer_runner"
validx extract --registry examples/CONTRACTS/schemas/_registry.json --schema-key example.person --input examples/person_bad.yaml --out-dir out --approved-root examples --permit-path examples/permit.json
validx verify-report-validate \
--verify-report out/verify_report.json \
--report-schema CONTRACTS/schemas/validx/verify_report_v1.schema.json \
--out out/verify_report_validation.json
validx permit-validate \
--permit examples/permits/structural_only.json \
--permit-schema CONTRACTS/schemas/validx/permit_v1.schema.json \
--out out/permit_validation.json
validx tool-manifest-validate \
--tool-manifest path/to/validx_tool_manifest.json \
--manifest-schema CONTRACTS/schemas/validx/tool_manifest_v1.schema.json \
--out out/tool_manifest_validation.json
validx doctor
validx doctor --text
validx doctor --run-pip-check
validx doctor --run-pip-audit
validx sbom --format validx
validx sbom --format cyclonedx
validx sbom --format cyclonedx --cyclonedx-require-pin --cyclonedx-manifest CONTRACTS/tools/cyclonedx/cyclonedx_py.pin.json
validx sbom-tool-receipt
validx contract-snapshot
validx secrets-scan
validx latency-trend-refresh --metrics /tmp/validx_sweep_gate_metrics.json
validx promote-precheck
validx artifact-integrity-check
validx graph-ir-gate --graph-ir CONTRACTS/tools/provenance/graph_ir_v1.json
validx intake-check --rights-lineage CONTRACTS/tools/provenance/rights_lineage_v1.json --graph-ir CONTRACTS/tools/provenance/graph_ir_v1.json
validx provenance-check --token CONTRACTS/tools/provenance/provenance_token_v1.json --rights-lineage CONTRACTS/tools/provenance/rights_lineage_v1.json --graph-ir CONTRACTS/tools/provenance/graph_ir_v1.json --action mirror_export
validx provenance-sign --token CONTRACTS/tools/provenance/provenance_token_v1.json --key-env VALIDX_PROVENANCE_HMAC_KEY
Permit
Permit files are JSON objects with only these boolean fields:
semantic_repairextractionallow_defaultsallow_drop_fields
Unknown fields are rejected. Boolean coercion is not performed.
Packaging assets
Build locally with:
python3 scripts/package_bundle.py --out validx_v1_scaffold_bundle_v0_4_2.zip
sha256sum validx_v1_scaffold_bundle_v0_4_2.zip > validx_v1_scaffold_bundle_v0_4_2.zip.sha256
Bundles are never committed to the repository. Build artifacts are local-only.
Sweep Gate (one command)
bash scripts/sweep_gate.sh
This runs install/tests/build plus a small validator-cache performance smoke. It also emits:
- metrics JSON:
${VALIDX_GATE_METRICS_PATH:-/tmp/validx_sweep_gate_metrics.json} - gate receipt JSON:
${VALIDX_GATE_RECEIPT_PATH:-artifacts/gate_receipt.json} - deterministic SBOM JSON:
${VALIDX_GATE_SBOM_PATH:-artifacts/sbom_validx_v1.json} - deterministic SBOM hash receipt:
${VALIDX_GATE_SBOM_PATH:-artifacts/sbom_validx_v1.json}.sha256 - CycloneDX tool pin receipt:
${VALIDX_GATE_SBOM_TOOL_RECEIPT_PATH:-artifacts/sbom_tool_receipt.json} - deterministic contract snapshot JSON:
${VALIDX_GATE_CONTRACT_SNAPSHOT_PATH:-artifacts/contract_snapshot_v1.json} - deterministic contract snapshot hash receipt:
${VALIDX_GATE_CONTRACT_SNAPSHOT_PATH:-artifacts/contract_snapshot_v1.json}.sha256 - secrets scan JSON:
${VALIDX_GATE_SECRETS_SCAN_PATH:-artifacts/secrets_scan_v1.json} - secrets scan hash receipt:
${VALIDX_GATE_SECRETS_SCAN_PATH:-artifacts/secrets_scan_v1.json}.sha256 - promotion precheck JSON (promotion profile or
VALIDX_GATE_REQUIRE_PROMOTE_PRECHECK=1):${VALIDX_GATE_PROMOTE_PRECHECK_PATH:-artifacts/promote_precheck_v1.json} - artifact integrity JSON (promotion profile or
VALIDX_GATE_REQUIRE_ARTIFACT_INTEGRITY=1):${VALIDX_GATE_ARTIFACT_INTEGRITY_PATH:-artifacts/artifact_integrity_v1.json} - optional strict CycloneDX JSON (when
VALIDX_GATE_REQUIRE_CYCLONEDX=1):${VALIDX_GATE_CYCLONEDX_PATH:-artifacts/sbom_cyclonedx.json}- receipt also publishes
cyclonedx.manifest_readyandcyclonedx.manifest_reasonfor strict-pin readiness
- receipt also publishes
Two-Tier Mirror Export
ValidX runs as:
- private authoritative core (trade-secret governance membrane)
- generated public mirror (interoperability surface only)
Mirror policy and controls:
- policy:
MIRROR_POLICY.yaml - exporter:
scripts/mirror_export.sh - leak checker:
scripts/check_mirror_leak.sh - guardrail docs:
DOCS/MIRROR_POLICY.md
Defensive limits
- JSON config/schema/report documents are capped at
8 MiB. - Input payload files/bytes are capped at
16 MiB. - Subprocess fixer request payload is capped at
16 MiB. - Subprocess fixer output payload is capped at
16 MiB.
Policy overrides are supported via env vars (or optional JSON policy file via VALIDX_POLICY_FILE, or CLI --policy):
VALIDX_MAX_JSON_DOC_BYTESVALIDX_MAX_REQUEST_BYTESVALIDX_MAX_SUBPROCESS_IO_BYTESVALIDX_MAX_SCHEMA_CACHE_SIZEVALIDX_SUBPROCESS_TIMEOUT_MSVALIDX_SUBPROCESS_MAX_RETRIESVALIDX_SUBPROCESS_BACKOFF_MS
Rollback
pip install valid8x==<previous-version>
PyPI retains every published version. See SUPPORT.md for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file valid8x-0.6.0.tar.gz.
File metadata
- Download URL: valid8x-0.6.0.tar.gz
- Upload date:
- Size: 63.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f6237df98aa59c7586aa4e40bb897e0542282c453a59fb2ea94ea30f670640ae
|
|
| MD5 |
87f2cf05932da75448dd1696fbfdf907
|
|
| BLAKE2b-256 |
dea417669aaccf154c7bb6597272ec85b6529f0cd8df9ad7f860b51b36e4d3a1
|
Provenance
The following attestation bundles were made for valid8x-0.6.0.tar.gz:
Publisher:
release.yml on AlphaBeta-Labs/Valid8x
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
valid8x-0.6.0.tar.gz -
Subject digest:
f6237df98aa59c7586aa4e40bb897e0542282c453a59fb2ea94ea30f670640ae - Sigstore transparency entry: 1544788604
- Sigstore integration time:
-
Permalink:
AlphaBeta-Labs/Valid8x@77fc5d130e7e8a976dc6c9708c601e1f1a9096fb -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/AlphaBeta-Labs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@77fc5d130e7e8a976dc6c9708c601e1f1a9096fb -
Trigger Event:
push
-
Statement type:
File details
Details for the file valid8x-0.6.0-py3-none-any.whl.
File metadata
- Download URL: valid8x-0.6.0-py3-none-any.whl
- Upload date:
- Size: 55.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d370eb5489f31d7ad19f0abec572eb3d0619584d9284e0bece19cac6fb7a3271
|
|
| MD5 |
dcaf1138757ac1acbf375797095b532a
|
|
| BLAKE2b-256 |
dd341a1dece4a3ea6ebf170138399c5e25a1ffa8084d20c01661c9367d3819f1
|
Provenance
The following attestation bundles were made for valid8x-0.6.0-py3-none-any.whl:
Publisher:
release.yml on AlphaBeta-Labs/Valid8x
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
valid8x-0.6.0-py3-none-any.whl -
Subject digest:
d370eb5489f31d7ad19f0abec572eb3d0619584d9284e0bece19cac6fb7a3271 - Sigstore transparency entry: 1544788784
- Sigstore integration time:
-
Permalink:
AlphaBeta-Labs/Valid8x@77fc5d130e7e8a976dc6c9708c601e1f1a9096fb -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/AlphaBeta-Labs
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@77fc5d130e7e8a976dc6c9708c601e1f1a9096fb -
Trigger Event:
push
-
Statement type: