AlgoVoi open Decision chain (Apache-2.0): Passport + Mandate + Policy + Gate + Guardrail + Cancellation + Refund + Trust query — verifiable agentic-payment primitives #1961
chopmob-cloud
started this conversation in
Show and tell
Replies: 2 comments
-
|
Thanks @geneknit, that is completely fair and appreciated. Consolidating here on this thread, with the Agent Trust Bench updates staying on #1855. All future updates (new packages, version bumps, conformance changes) will go here as edits or comments rather than new discussions. Thanks for the steer, and for the kind words. |
Beta Was this translation helpful? Give feedback.
0 replies
-
|
Notice: Major upgrades coming to the OpenSource Substrate. The Keystone was the first step. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Following the policy binding post, we've published Compliance Gate (lite), an open way to record a compliance decision and bind it to the policy it was made under, with no personal data in the record.
You bring a categorical screening verdict (ALLOW, REFER, or DENY) from your own sanctions, PEP, or AML provider. The package binds it to a no PII payer reference and a pinned subject reference:
subject_refis imported by hash, so it can be apolicy_bound_ref, a settlement actionbinding_ref, or aretention_chain_ref. Because the verdict is bound to the subject, a decision made under one policy snapshot does not recompute under a rotated policy. It is provably tied to the policy that was in force. No new cryptography is involved: the same RFC 8785 JCS and SHA-256 used across the substrate.Install
Apache 2.0. Python and TypeScript produce identical bytes on the same input.
Conformance: the
compliance_gate_lite_v1vector set (12 vectors) is in the public corpus, chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners you can run yourself.Spec: sections 7.8 and 8.11 of draft-hopley-x402-retention-chain (revision 05).
Docs: https://docs.algovoi.co.uk/compliance-gate-lite
The lite tier is content addressed, with no signature. A commercial tier adds post quantum (Falcon 1024) signing and a zero knowledge proof layer.
Feedback welcome.
Update: Spend Guardrail (lite) is now live too.
The pre-payment decision an agent platform makes before executing a payment. It binds a categorical ALLOW or DENY to the agent it was made for, the spend authority it was checked against, and the policy in force, each imported by hash, into one recomputable reference. It moves no funds.
An ALLOW made under one policy does not recompute under a rotated policy, and swapping the agent, the mandate, or the verdict diverges the reference.
policy_bound_refis the policy binding above, so the whole pre-payment decision composes into one content address.Install
Apache 2.0. Python and TypeScript produce identical bytes on the same input.
Conformance: the
spend_guardrail_lite_v1vector set (10 vectors) is in the same public corpus, with Python and Node runners.It is an instance of the same binding framework as sections 7.6 to 7.8 of draft-hopley-x402-retention-chain; the published conformance set is the byte level artifact.
Docs: https://docs.algovoi.co.uk/spend-guardrail-lite
Lite is content addressed, no signature. A commercial tier adds Falcon 1024 signing on the decision receipt and the full Agent Passport and Payment Mandate enforcement stack.
Update: Substrate Guard (lite) is now live.
A deterministic input bounds gate that runs before canonicalization. A payload can be perfectly valid JSON and still be hostile by resource: very large, nested thousands deep, millions of keys, an oversized string, a number outside the safe integer range. Those pass "is it well formed?" and land in the canonicalizer and hasher, which is where a cheap denial of service lives. This gate is the front door: it accepts, or rejects with a named code (REJECT_OVER_DEPTH, REJECT_TOO_MANY_KEYS, REJECT_OVER_SIZE, and so on), before any JCS or SHA-256 work touches the payload. It never truncates and never repairs.
The limits in force are content addressed, so a record can carry the
profile_refit was admitted under and an auditor can prove which bounds were enforced, not just that some validation happened. The default profileguard-receipt-v1(max bytes 65536, depth 32, object keys 256, array length 1024, string length 8192, total nodes 4096, number safety on) addresses tosha256:a4791b13c67a16109b85ef67fc65700ea902b6ad40dad44d8556632c3d5524a6. Pin it, or content address your own.Every bound is a pure structural property of the parsed value (depth, count, length), so independent implementations enforce it identically. It changes no hash and adds no crypto primitive, so everything already built on the canonicalization base gets the protection by adding one line:
guard(value)before your existing reference construction.Install
Apache 2.0. Python and TypeScript reject the same hostile inputs with the same code and compute the same
profile_ref, byte for byte.Conformance: the
substrate_guard_v1vector set (15 vectors) is in the public corpus, chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners you can run yourself.Honest scope: a deterministic structural validator plus a content addressed profile, not cryptography, and not rate limiting or replay windows (those stay in the runtime layer).
Docs: https://docs.algovoi.co.uk/substrate-guard
The open roadmap is progressing steadily. Substrate Guard is the first of the native security and hardening layers we are building directly on the canonicalization base. More are on the way, alongside open agent identity and payment mandate references that compose with the Spend Guardrail above.
Adopting any of these, and a free v0 key.
All of these lite packages are free under Apache 2.0. If you build on one and pin it, you also qualify for a free v0 licence key for
algovoi-mandate-auditor. The check is the same for every package in this post:Depend on the package, so it appears in your lockfile or manifest.
Run the conformance vectors yourself and keep a canonical hash anchor from the set in your project.
Preserve the NOTICE file in your distribution.
Pin the version (for example
algovoi-substrate-guard==0.1.0).Send those (your import by hash evidence and a copy of the NOTICE) to chopmob@gmail.com and we issue the key. The point is structural: the thing you pin is one of our content addresses, so the adoption is provable on both sides.
Verify it yourself, live. Substrate Guard now has a runnable test surface on the open Agent Trust Bench (
agent-trust-bench.algovoi.co.uk, free, no account, works with any x402 facilitator): a resource-bounds profile family generated one to one from the publishedsubstrate_guard_v1vectors, one challenge per named reject code. Point an agent at it and it accepts the in-bounds control and rejects each resource-hostile payload with the same code the package enforces, on a live endpoint.The bench also exposes a reputation result as OpenTelemetry GenAI trust telemetry:
agent.trust_scorewith a producer-scoped.methodtoken (the bench methodology version), so a score travels with the exact methodology and profile set it was computed under. This tracks the agentic-authorization SemConv work inopen-telemetry/semantic-conventions-genai#180.Feedback welcome.
Update: Agent Passport (lite) is now live.
A content addressed reference to an agent's identity claim: who the agent is, who issued it, the scope, and the validity window. It is exactly the
agent_refthe Spend Guardrail decision binds, so identity composes straight into the pre-payment decision. It asserts no authority by itself; it is a recomputable handle to the identity claim.All four fields are load bearing: change the agent, the issuer, the scope, or the window and the reference diverges, and an empty field is rejected. Because
passport_refis the sameagent_refthe Spend Guardrail binds, agent identity, spend authority, and policy in force chain into one recomputable pre-payment decision.Install
Apache 2.0. Python and TypeScript produce identical bytes on the same input.
Conformance: the
agent_passport_lite_v1vector set (11 vectors) is in the public corpus, chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners you can run yourself.Docs: https://docs.algovoi.co.uk/agent-passport-lite
Pinned edition for adopters, with a free key. Depend on it, pin
algovoi-agent-passport-lite==0.1.0, anchor apassport_refvector hash from the corpus, and keep theNOTICE. That four check gate earns a free v0 licence key foralgovoi-mandate-auditor: email chopmob@gmail.com with your import by hash evidence and a copy of the NOTICE.Lite is content addressed, no signature. A commercial tier adds Falcon 1024 signing and full enforcement (issuer trust lists, revocation, validity window).
Update: Payment Mandate (lite) is now live. This completes the open pre-payment decision triad.
A content addressed reference to the terms of a spend authority: who authorised it, the per-period cap, the period, and whether it is still live. It is exactly the
mandate_refthe Spend Guardrail decision binds, so a spend authority composes straight into the pre-payment decision. It authorises no charge by itself; it is a recomputable handle to the terms.All four fields are load bearing: change the payer, the cap, the period, or the revocation state and the reference diverges, and an empty field is rejected. With this, the three inputs the Spend Guardrail binds are all open and pinnable:
passport_ref(the agent),mandate_ref(the spend authority), andpolicy_bound_ref(the policy in force) compose into one recomputableguardrail_refdecision.Install
Apache 2.0. Python and TypeScript produce identical bytes on the same input.
Conformance: the
payment_mandate_lite_v1vector set (11 vectors) is in the public corpus, chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners you can run yourself.mandate_1andmandate_2equal themandate_refin thespend_guardrail_lite_v1set, so the chain composes byte for byte.Docs: https://docs.algovoi.co.uk/payment-mandate-lite
Pinned edition for adopters, with a free key. Depend on it, pin
algovoi-payment-mandate-lite==0.1.0, anchor amandate_refvector hash from the corpus, and keep theNOTICE. That four check gate earns a free v0 licence key foralgovoi-mandate-auditor: email chopmob@gmail.com with your import by hash evidence and a copy of the NOTICE.Lite is content addressed, no signature. A commercial tier adds Falcon 1024 signing and the full authorise-charge engine (per-period cap checks, revocation).
Update: the open pre-payment decision chain is now provable end to end.
The three lite inputs a Spend Guardrail decision binds, the agent (
passport_ref), the spend authority (mandate_ref), and the policy in force (policy_bound_ref), now compose into one recomputableguardrail_ref, proven byte for byte for both ALLOW and DENY.A new composition keystone in the public corpus recomputes each reference from its raw fields, shows each equals the published output of its own lite set and is exactly the reference the decision binds, then recomputes
guardrail_reffrom the three and matches the published reference. No new vectors and no new hashing primitive: it is the composition itself.Conformance: the
spend_decision_chain_v1keystone in chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners. It is part of the single command corpus check (verify_corpus.py).Verify it yourself:
pip install rfc8785 ; python verify_chain.pyandnode verify_chain.mjs. Both reproduce every value byte for byte, so Python and a Node reimplementation agree on the whole chain.Docs: https://docs.algovoi.co.uk/spend-decision-chain
It fits the existing
draft-hopley-x402-retention-chainbinding framework (sections 7.6 to 7.8, plus the section 7.1 reference construction); no new section. Apache 2.0, no signature; the commercial tiers add Falcon 1024 signing and enforcement on each link.Update: Cancellation Receipt (lite) is now live. The open lifecycle now closes on the authority side.
A content addressed reference to the cancellation of a spend authority: which authority was cancelled (the
mandate_ref, by hash) and why (a closed enum: USER_REQUESTED, MERCHANT_REQUESTED, COMPLIANCE_TERMINATED, EXPIRED).Because it binds the same
mandate_refthe pre-payment decision was checked against, a cancellation composes onto the decision chain and cannot be re-pointed to another authority. The keystone now proves the chain end to end through cancellation.Install
cancellation_receipt_lite_v1vector set (10 vectors) in chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners.cn-001/002/003cancel themandate_refSpend Guardrail binds, and the line is folded into thespend_decision_chain_v1keystone (now 6/6, byte for byte).algovoi-cancellation-receipt-lite==0.1.0, anchor acancellation_refvector hash, and keep theNOTICE; that four check gate earns a free v0 licence key foralgovoi-mandate-auditor(email chopmob@gmail.com with your import by hash evidence and the NOTICE).Update: Refund Receipt (lite) is now live. The open lifecycle now closes after settlement too.
A content addressed reference to the refund of a prior payment: which payment was refunded (the
subject_ref, by hash), the outcome (a closed enum: FULL, PARTIAL, REJECTED), and the amount.Its
subject_refis the sameguardrail_refthe pre-payment decision produced, so a refund composes onto the decision chain and cannot be re-pointed to another payment. Where cancellation closes the authority before payment, refund closes the authorized payment after it.Install
refund_receipt_lite_v1vector set (11 vectors) in chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners.rf-001/002/003refund the ALLOWguardrail_refSpend Guardrail produced, and the line is folded into thespend_decision_chain_v1keystone (now 7/7, byte for byte).algovoi-refund-receipt-lite==0.1.0, anchor arefund_refvector hash, and keep theNOTICE; that four check gate earns a free v0 licence key foralgovoi-mandate-auditor(email chopmob@gmail.com with your import by hash evidence and the NOTICE).Update: Composite Trust Query (lite) is now live. The open lifecycle is complete.
A content addressed reference to a trust verdict over an ordered set of pinned references: which references were assessed (
subject_refs, each by hash, order and membership load-bearing) and the outcome (a closed enum: TRUSTED, PROVISIONAL, INSUFFICIENT_EVIDENCE, UNTRUSTED).Its
subject_refscan be the exact references the chain produced (passport_ref,mandate_ref,policy_bound_ref,guardrail_ref), so one verdict caps the whole chain and cannot silently drop a reference it claimed to assess. The lite tier binds only; the scoring that produces the verdict stays commercial.Install
composite_trust_query_lite_v1vector set (12 vectors) in chopmob-cloud/algovoi-jcs-conformance-vectors, with Python and Node runners.tq-001/002/003assess the full chain[passport_ref, mandate_ref, policy_bound_ref, guardrail_ref(ALLOW)], and the line caps thespend_decision_chain_v1keystone (now 8/8, byte for byte).algovoi-composite-trust-query-lite==0.1.0, anchor atrust_query_refvector hash, and keep theNOTICE; that four check gate earns a free v0 licence key foralgovoi-mandate-auditor(email chopmob@gmail.com with your import by hash evidence and the NOTICE).With this, the open chain runs end to end: identity, authority, policy, decision, cancellation, refund, and composite verdict, every reference recomputable byte for byte.
Beta Was this translation helpful? Give feedback.
All reactions