Skip to main content
The open lite packages each content-address one part of a pre-payment decision: Agent Passport (lite) the agent identity, Payment Mandate (lite) the spend authority, Policy Binding the policy in force, and Spend Guardrail (lite) the ALLOW or DENY decision that binds all three. The keystone proves they compose into one recomputable chain.
identity   passport_ref      binds as  agent_ref
authority  mandate_ref       binds as  mandate_ref
policy     policy_bound_ref  binds as  policy_bound_ref
   -> decision  guardrail_ref = sha256: + SHA-256(JCS({ agent_ref, mandate_ref, policy_bound_ref, verdict }))

What the keystone proves

For each of the three inputs, the proof does three things, offline:
  1. Recompute the reference from its raw fields with RFC 8785 JCS + SHA-256.
  2. Show it equals the published output of that input’s own lite conformance set.
  3. Show it is exactly the reference the Spend Guardrail decision binds.
Then it recomputes 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

StepReferenceFrom raw inputsValue
Identitypassport_refagent-001 / did:algo:issuer / payments / windowsha256:b3594e33…
Authoritymandate_refpayer / cap 1000 / monthly / activesha256:a4f8cb5e…
Policypolicy_bound_refpolicy P over a settlement subjectsha256:aaee2091…
Decision (ALLOW)guardrail_refthe three above + ALLOWsha256:2a444c62…
Decision (DENY)guardrail_refthe three above + DENYsha256: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).
pip install rfc8785 ; python verify_chain.py
node verify_chain.mjs
Both reproduce every value byte-for-byte, so Python and a Node reimplementation agree on the whole chain. No issuer call, no registry lookup, no AlgoVoi service: RFC 8785 JCS, SHA-256, and a JSON parser are the entire dependency.

Relationship to the open substrate

The decision chain sits on top of the open JCS Canonicalisation Substrate. Each link is one of the lite packages, all Apache-2.0 and content-addressed; the keystone adds no construction of its own. The commercial tiers add Falcon-1024 (post-quantum) signing and enforcement on each link, but the open chain already recomputes the same decision address offline. Additive over the frozen canonicalisation substrate, sole AlgoVoi authorship.