What gets proven
The ZK proof covers the verdict derivation rules: the deterministic mapping from analysis outputs to the final verdict. Specifically, the proof demonstrates:-
Category-to-severity mapping: Each concern category (e.g.,
boundary_violation,prompt_injection,value_misalignment) is mapped to the correct severity level (low,medium,high,critical) according to the protocol rules. -
Severity-to-verdict escalation: The most severe concern determines the checkpoint verdict:
- No concerns or all
lowseverity results inclear mediumseverity results inreview_neededhighorcriticalseverity results inboundary_violation
- No concerns or all
- Concerns hash integrity: The hash of the concerns array in the proof journal matches the hash in the certificate, proving the verdict was derived from the exact concerns that were reported.
- Card constraint evaluation: The verdict accounts for the agent’s declared autonomy envelope — bounded actions, forbidden actions, and escalation triggers — as specified in the Alignment Card.
What does NOT get proven
The ZK proof intentionally excludes:- LLM inference: The analysis LLM’s reasoning process is not proven. LLM inference is non-deterministic and computationally infeasible to prove inside a zkVM. The proof covers only the deterministic post-processing of the LLM’s structured output.
-
Thinking block content: The raw thinking block is never included in the proof. Only the SHA-256 hash (
thinking_block_hash) is referenced, preserving the agent’s reasoning privacy. - Analysis model selection: The choice of which LLM to use for analysis is an operational decision outside the proof scope.
Guest program
The verdict derivation logic runs inside an SP1 zkVM guest program. The guest program is a deterministic Rust binary that takes structured inputs, applies the verdict rules, and produces public outputs.Inputs (private)
These are provided to the guest program but are not revealed in the proof:Computation
The guest program executes the following deterministic steps:- Validate input structure: Verify concerns array and card summary are well-formed.
- Apply category mapping: Map each concern’s category to the protocol-defined severity rules.
- Compute verdict: Determine the final verdict from the highest severity across all concerns.
- Compute concerns hash: SHA-256 hash of the serialized concerns array (deterministic key ordering).
- Write journal: Output the verdict, concerns hash, and card ID as public commitments.
Outputs (public journal)
These are committed to the proof’s public journal and are visible to verifiers:STARK proof format
The proof is an SP1 STARK (Scalable Transparent ARgument of Knowledge), stored and transmitted in three components:
The
image_id is a content hash of the compiled guest program. It acts as a commitment to the exact computation that was proven. A verifier checks:
- The
image_idmatches the expected verdict derivation program (published in the Mnemom GitHub repository). - The
receiptis a valid STARK proof for the givenimage_idandjournal. - The
journaloutputs are consistent with the certificate’s claims.
Tiered proving strategy
Not every checkpoint receives a ZK proof. Proving has non-trivial cost and latency, so AIP uses a tiered proving strategy that distinguishes real violations from configuration errors: Every verdict type is proven stochastically — there is no verdict that is proven unconditionally by default.boundary_violation gets its own, separately configurable sampling rate rather than a higher-priority guarantee:
Deferred proofs
When the policy engine detectscard_gaps alongside a boundary_violation, the gateway creates a proof record with status: deferred instead of immediately dispatching it to the prover. This keeps a tamper-evident audit trail without generating a proof yet.
The observer’s DDR (Disagreement-Driven Review) reconciliation later classifies the violation:
This means only confirmed real violations are proven, which matters most during rapid development, when alignment cards drift often.
On-demand proving
Any checkpoint can be proven on demand viaPOST /v1/checkpoints/{checkpoint_id}/prove. This is useful when:
- An operator wants to verify a specific
review_neededverdict - An auditor requires proof for a specific checkpoint
- The stochastic sample missed a checkpoint of interest
- A deferred proof needs to be forced without waiting for DDR
404 as a missing checkpoint. If a proof already exists, the endpoint returns its current status. Each newly queued proof is charged in μ to that org’s billing account (rate card class analyze.zk-proof, see Pricing); returning an existing proof is not charged. If the billing account cannot be resolved, no proof is queued and the request fails with 503 (or 409 when the org has no billing account).
Cost and latency
Proving is asynchronous. The checkpoint verdict is returned immediately; the proof is generated in the background and attached to the certificate when complete. In most conversations it completes before the next integrity checkpoint.
Proof status and failures
PollGET /v1/checkpoints/{checkpoint_id}/proof to follow a proof. Its status is one of pending, proving, completed, or failed.
The proving inputs are stored with the proof request, so a transient failure (for example, the prover restarting) does not lose the request: it is retried automatically, with no action needed from you. A proof that still cannot be generated ends in failed. The checkpoint itself remains valid; it just lacks the additional computational integrity guarantee.
Verification
Server-side
Submit the full certificate toPOST /v1/verify. The API delegates STARK verification to the prover service and returns a structured result including checks.verdict_derivation.valid.
Local verification
Use the SP1 verifier SDK to verify locally:Checking proof status
For checkpoints where proving is in progress, query the status (authenticated):status field progresses through: pending -> proving -> completed (or failed).
For deferred proofs, the progression is: deferred -> skipped_card_gap | skipped_noise | pending (then normal flow).
See also
- Integrity Certificates — The certificate format that contains ZK proofs
- AIP Specification — Verification — Protocol-level verification specification
- SP1 Documentation — The zkVM platform used for proving