Specification · v1.0 · 2026-06-10

PQ-Verified Artifact v1 — one package, one verifier command, one outcome.

The customer-facing format for H33-PQ Verified. The pillars are for auditors. The artifact is for customers.

Why this exists

Customers don't ask for five separate bundles. They ask: "Give me the proof package." The PQ-Verified Artifact is that package — a single self-contained JSON file carrying the artifact manifest, five inline pillar attestations, and triple-family PQ signatures over the manifest. One drag-and-drop. One verifier command. One verdict.

Structure

PQ-Verified Artifact v1 ├── schema_version "h33-pq-verified-artifact/v1" ├── artifact_id "h33pqv-2026-Q2-001-{16hex}" ├── cycle_id "2026-Q2-001" ├── issued_at "2026-06-10T..." ├── issuer { name, principal } ├── subject { name, category, [description], [product] } ├── human_summary ← answers ONE question in 5 seconds │ ├── claim "AI classification decision followed approved policy." │ ├── verdict VERIFIED · VERIFIED_PENDING_SIGNATURES · FAILED │ ├── evidence_summary "Governance, Privacy, and Verification attestations validated." │ ├── load_bearing_pillars[] │ └── additional_assurances[] ├── attestations │ ├── cryptography_attestation (full Pillar 1 bundle inline) │ ├── evidence_attestation (full Pillar 2 bundle inline) │ ├── governance_attestation (full Pillar 3 bundle inline) │ ├── privacy_attestation (full Pillar 4 bundle inline) │ └── verification_attestation (full Pillar 5 bundle inline) ├── attestation_hashes (SHA3-384 over each canonical attestation) ├── manifest_hash SHA3-384 over (cycle, issuer, subject, hashes) ├── signatures { ml_dsa_87, slh_dsa_256s, falcon_1024 } ├── verifier_command "h33-pq-verify artifact --file ..." ├── verifier_url "https://h33.ai/.../verify/" └── publishing_rule (locked const text)

File format

PropertyValue
Schema IDh33-pq-verified-artifact/v1
File extension.h33pqv.json
EncodingUTF-8 JSON, pretty-printed (2-space indent)
Typical size~30–50 KB self-attestation; varies with subject
CanonicalizationObject keys sorted lexicographically; minimized for hashing
Hash algorithmSHA3-384 throughout (96 hex chars)
SignaturesTriple-family PQ: ML-DSA-87 · SLH-DSA-256s · FALCON-1024 (base64)

What gets verified

CheckHow
Schema versionMust equal h33-pq-verified-artifact/v1
Top-level fields11 required: schema_version, artifact_id, cycle_id, issued_at, issuer, subject, attestations, manifest_hash, signatures, verifier_command, publishing_rule
Each embedded attestationVerified against its own pillar schema (required fields, publishing_rule const, fingerprint regex, result enum)
attestation_hashesRecomputed canonical SHA3-384 over each attestation; mismatch → FAILED
manifest_hashRecomputed canonical SHA3-384 over (cycle, issuer, subject, hashes); mismatch → FAILED
SignaturesPRESENT (all 3 PQ sigs valid) · PENDING_CEREMONY (3× PENDING markers) · PARTIAL · MISSING
Cycle consistencyEvery embedded attestation's cycle_id matches the artifact's

Verdicts

VerdictMeaning
VERIFIEDAll structural + hash + signature checks pass. Triple-family signatures present and valid.
VERIFIED_PENDING_SIGNATURESStructure and hashes valid. Signatures pending (pre-ceremony state). Treat as "the math is right, but the production keys haven't signed yet."
FAILEDAny check failed. The why list enumerates exactly what.

Verify any artifact

Drag-and-drop (zero install):

https://h33.ai/pq-verified/verify/ — runs entirely in your browser. Files never leave the page.

CLI:

$ curl -sSL https://h33.ai/verifier-cli/install.sh | bash $ h33-pq-verify artifact --file your-artifact.h33pqv.json

Exit code 0 = VERIFIED · 1 = FAILED · 2 = ERROR. Output is structured JSON.

Schema

pq-verified-artifact-v1.schema.json · JSON Schema draft-07.

Where to use it

SurfaceOutcome
Every H33 demo (Solana Privacy · Zcash · HATS · Agent Zero · Governance Replay · Commerce)Ends with "Download PQ-Verified Artifact" CTA
Every H33 releaseBundled alongside the release manifest
Every customer self-attestationCustomer publishes their .h33pqv.json at their own attestation URL
Regulatory submissionsAttach the artifact to the submission package
Audit evidenceAuditor receives ONE file instead of a folder of bundles