Post Oak Labs · Interactive Tool

Touch the hash. Watch it break.

The explainer shows you how OpenChainGraph works. This sandbox lets you feel it. Edit any field in a live OCG v0.3 artifact and the execution_hash recomputes in your browser — using the real WebCrypto SHA-256 algorithm, the same way a conformant tool does it. Then deliberately tamper with data and see exactly how the fingerprint fails.

WebCrypto SHA-256 Zero server — fully client-side Real OCG v0.3 preimage construction No PII
Edit any field in a live OCG artifact. The execution_hash recomputes after every keystroke using the real preimage construction — sorted-key JSON → UTF-8 → WebCrypto SHA-256. The Tamper buttons introduce deliberate corruption so you can see exactly what fails.
New here? Start in 30 seconds
Three things to try in this sandbox
  1. Artifact Editor — change any field on the left and watch the hash on the right recompute live. Start with var_10d_99.
  2. Tamper controls — hit "Flip an output digit" to corrupt the artifact. The red verdict tells you exactly which characters broke.
  3. Hash Playground (top tab) — type your own text and see SHA-256 recompute in real time. Change one character to trigger the avalanche effect.
Need more context? → Explainer
Artifact fields — edit any value
Identity
tool_id
mandate_type
policy_parameters (inputs — these get hashed)
confidence_level
holding_period_days
portfolio_id
output_payload (results — these get hashed too)
var_10d_99
es_97_5
breaches_250d
⚠ Tamper controls — introduce deliberate corruption
Verification result
Hash verified
The stored execution_hash matches the freshly computed SHA-256 of the canonical preimage. This artifact has not been tampered with.
Character-level diff — stored vs live
1
Extract fields for hashing
policy_parameters + output_payload selected
2
Sort keys recursively
Keys sorted: breaches_250d, confidence_level, es_97_5, holding_period_days, portfolio_id, var_10d_99
3
JSON.stringify + UTF-8 encode
— bytes
4
WebCrypto SHA-256
crypto.subtle.digest("SHA-256", bytes)
5
Compare to stored hash
Hash preimage (canonical JSON)
Why tool_id and mandate_type aren't hashed

Only policy_parameters and output_payload enter the preimage. Metadata like tool_id and chain describe the artifact but don't affect the decision's mathematical content — hashing them would make the hash change when you rename a tool without changing any computed values. The hash is a fingerprint of the decision, not the packaging.

Quick Check