Paste any OpenChainGraph artifact JSON below. The verifier recomputes the SHA-256 execution hash client-side and tells you whether it matches the stored value. No data leaves your browser.
✓ Zero network requests on this page, enforced by a CI gate (connect-src 'none' plus a static scan for fetch/XHR/WebSocket) that fails the build if this claim ever stops being true. Scope note: this covers the verifier only, not the separate anchor/timestamping tool, which makes outbound calls to anchor a proof.
Paste {"artifact":{...}, "gate":{"gate_policy":"dual_control","gate_threshold":{"role":"approver","threshold":2},"chain_declaration":{"chain":"<chain name>","step_id":"<step id>","gate_sha256":"sha256:<hex>"}}, "records":[...]}: a chain step's declared gate alongside the artifact it guards and any §27.2 records already collected. Only artifact is required. Loading a bundle runs the same hash verification as above, then evaluates the declared gate automatically. This is an evidence recorder, never a blocker; nothing below disables verification or export.
Optional SO #34 declaration cross-check: paste your locally-held chaingraph.json (or a single chain shard object). This page never fetches it, zero network. When the bundle's gate carries a chain_declaration {chain, step_id, gate_sha256}, the declaring gate is resolved from YOUR copy, never from the bundle, and a bundle whose declared policy differs from its shard renders DECLARATION_MISMATCH (red, evaluated against the shard's value). Without a resolvable declaration the gate renders NOT EVALUABLE, never counted as satisfied, and stamped into the exported bundle as such. gate_sha256 is sha256: over the RFC 8785/JCS canonicalization of the declaring step's gate object, exactly what this page recomputes locally.
Paste a JSON array of head-commits for one stream, oldest (genesis, seq:0) first. This checks the §HEAD-1.2 verification laws (strictly-increasing seq, prev_head_hash chaining to the prior head's own hash, signer continuity, or an explicit rotates_to rotation head), and, when every signer is a resolvable did:key, the eddsa-jcs-2022 proof on each head. Nothing is fetched; you supply the whole chain.
Sign an approval/rejection/override record for this artifact, evaluate whether its haGatePolicy precondition is currently satisfied, and assemble a §27.6 evidence bundle. Everything below runs client-side, and no data leaves your browser.
Assembles a haEvidenceBundle from the artifact above and the records pasted into step 2. This page ships the mandatory Tier 1 JSON export; the SD-JWT Disclosure Workbench's Evidence Bundle tab reuses the same shipped §13.12 exporter to issue this bundle as a selective-disclosure JWT.
Paste a compute_proof receipt (or a full artifact containing one) below. This panel runs a clean-room second implementation of the risc0 Groth16/BN254 receipt check, entirely in your browser: it re-derives the RFC 8785 (JCS) canonical journal bytes, the SHA-256 journal digest, the ReceiptClaim digest, the five Groth16 public inputs, and the BN254 pairing equation, using only the estate's vendored, digest-gated @noble/curves + @noble/hashes bundle (v2.2.0, MIT). No wasm, no server, nothing fetched.
The guest-identity leg binds against the compute_images[] identities published in chaingraph.json: pick the published image id the receipt is supposed to carry, and verification fails unless the receipt's imageId matches it exactly.
Honest scope: this verifier and the risc0 3.0.5 reference verifier agree on every published test case, including deliberately tampered ones. In the 2026-09-03 corpus sweep, all 312 estate receipts plus the fixture and mutation cases verified under both implementations with zero disagreements: every receipt tested, which is not a claim about untested bytes. A passing receipt proves the named guest program committed this journal; it says nothing about the truth of the journal's inputs. The JCS canonicalizer is fail-closed: journal numbers sitting on the RFC 8785 edge cases this corpus never exercises (negative zero, exponent notation) are rejected with a named error, never guessed.