Show your work
Don't take our word for it.
Below is a signed decision record. The hash and the signature are real, and your browser is checking them, not our server. Change anything in it and the proof breaks in front of you.
Decision record
vaidr.decision-record/v1
The four fields below are editable. Everything else is fixed so you can see the rest of the record stay still while the proof collapses.
What the policy did about this action.
Which version of the rule was in force.
Who the action was authorized under.
A number no one would think to check.
- Record ID
- rec_20260625T140922Z_a1b2c3d4
- Timestamp
- 2026-06-25T14:09:22.481Z
- Agent
- claims-triage · v3.2.0
- Policy rule
- claims.payout.threshold
- Model
- anthropic · claude-opus-4
- Request hash
- sha256:9f2c4e1a77b3d8e05c6a1f4b92e7d3a8c05b1e6f4a29d7c3b8e0f5a1c6d2b9e4
- Response hash
- sha256:3a7d1f9c2b8e64a05d3c7f1b9e2a6d4c8f0b3e7a1d5c9f2b6e4a8d0c3f7b1e5a
Tamper with it
Verification
Checking
Running in your browser.
- Check 1 · Canonical hash
-
Witnessed at signing time:
ca2545183cab849f57050d555f0acaae7307d5dd9446a80c8d4e2240815c391e
- Check 2 · Ed25519 signature
-
Verified against the public key below, over the hash above.
key 29183bdc8945f9f84dd3331ef58401ba
No network request is made. View source if you want to check that, which is rather the point.
What actually gets hashed
Canonical JSON
Keys sorted at every level, no insignificant whitespace. Two systems that order their JSON differently still produce the same bytes, so the hash depends on the values and nothing else.
Scope
What this page proves, and what it doesn't.
We would rather be precise than impressive. A demo that overclaims is exactly the thing this company exists to argue against.
It proves the record is unaltered.
The hash covers every value in the record. The signature covers the hash. Change one digit in a token count and both checks fail, which is what you just did.
It proves it without us.
The verification ran in your browser against a public key. Stones AI was not contacted and could not have influenced the result. Anyone you hand a record to can do the same.
It does not prove when it happened.
A signature alone cannot establish that a record existed at the time it claims. That comes from witnessing: the hash is published to an append only transparency log within seconds, and the inclusion proof is what a third party checks. This page does not query that log. The verifier does.
This record is illustrative.
It is a sample we signed to show the mechanism, not a captured customer record. The keypair was generated for this page and the private key was discarded.
The full check
What an auditor runs.
The complete verification adds two things this page leaves out: the second signature in the hybrid pair, and the proof that the record was witnessed when it says it was.
- 01
Hybrid signature
Records carry an Ed25519 signature alongside an ML-DSA-65 signature. Ed25519 is what browsers can check today. ML-DSA-65 is the NIST standardized lattice scheme, there so a record signed now still verifies against a future where the classical curve does not hold.
- 02
Witness inclusion
The hash goes to Sigstore Rekor, a public append only log, and to a Stones AI witnessed log built as an RFC 6962 Merkle tree with periodic signed checkpoints and public read endpoints. Two independent witnesses, and disagreement between them is itself the tamper signal.
Verifier
Design partners get the verifier as a standalone CLI. It takes a record and a public key and needs nothing from us.
$ vadr-verify record.json --key operator.pub The key belongs to the operator who signed the record, not to Stones AI. We could not forge one of these if we wanted to, and that property is the product.
Design partners
Run this against your own AI.
If your agents are taking real action in a regulated environment and you cannot yet answer for what they did, that is the conversation we want to have.