What the keystone proves
For each of the three inputs, the proof does three things, offline:- Recompute the reference from its raw fields with RFC 8785 JCS + SHA-256.
- Show it equals the published output of that input’s own lite conformance set.
- Show it is exactly the reference the Spend Guardrail decision binds.
guardrail_ref from the three composed references plus the verdict and matches the published spend_guardrail_lite_v1 reference byte-for-byte, for both ALLOW and DENY. Change any raw field and the affected reference, and every reference downstream of it, diverges, so a decision made for one agent, authority, or policy cannot be silently re-attributed to another.
It introduces no new vectors and no new hashing primitive. Every value it asserts is an existing published expected_* output. The keystone is the composition itself.
The canonical chain
| Step | Reference | From raw inputs | Value |
|---|---|---|---|
| Identity | passport_ref | agent-001 / did:algo:issuer / payments / window | sha256:b3594e33… |
| Authority | mandate_ref | payer / cap 1000 / monthly / active | sha256:a4f8cb5e… |
| Policy | policy_bound_ref | policy P over a settlement subject | sha256:aaee2091… |
| Decision (ALLOW) | guardrail_ref | the three above + ALLOW | sha256:2a444c62… |
| Decision (DENY) | guardrail_ref | the three above + DENY | sha256:792a5b43… |
Verify it yourself
The keystone is published in the public corpus, chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners. It is also part of the single-command corpus check (composition/verify_corpus.py).