Open, content-addressed pre-payment ALLOW/DENY decisions bound to the pinned AlgoVoi substrate (agent + mandate + policy; L1 frozen)
Project description
algovoi-spend-guardrail-lite
The open, lite origination layer for AlgoVoi Spend Guardrail.
One call an agent platform makes before executing a payment: bind a categorical
ALLOW / DENY decision to the agent it was made for (agent_ref), the spend authority
it was checked against (mandate_ref), and the policy in force (policy_bound_ref) —
each imported by hash — into a deterministic, recomputable guardrail_ref. Moves no funds.
The whole pre-payment decision becomes one content address. Swap the agent, the mandate,
the policy, or the verdict and the guardrail_ref diverges — an ALLOW made under one
policy snapshot does not recompute under a rotated policy. Additive over the frozen
substrate (Apache-2.0):
guardrail_ref = "sha256:" + SHA-256(JCS({agent_ref, mandate_ref, policy_bound_ref, verdict}))
Lite vs commercial
| Lite (this package) | Spend Guardrail | |
|---|---|---|
| Licence | Apache-2.0, open | Commercial OEM |
| Decision binding | content-addressed guardrail_ref |
same, Falcon-1024 signed receipt |
| Enforcement | bring your own verdict | full Agent Passport + Payment Mandate stack |
| Verifier | recompute offline | maintained verifier |
Pin lite, anchor a vector hash, carry the NOTICE → free v0 key; upgrade for
post-quantum signing + the enforcement stack.
Install & use
pip install algovoi-spend-guardrail-lite
from algovoi_spend_guardrail_lite import guardrail_ref, verify
# each input is imported by hash: a passport_ref, a mandate_ref, and a policy_bound_ref
agent = "sha256:b3594e33998af01bd1ad208172c5c1ac586daa8c75781379f034d97e50b1a9be"
mandate = "sha256:a4f8cb5ee09b29478ac1cc2f468d66e16d3d25f7a229a31d22ad521e11d04d35"
policy = "sha256:aaee2091799f376ee8cac802ea4920feaa4eca52950488a3e047ff82e6959a21"
ref = guardrail_ref("ALLOW", agent, mandate, policy) # bind the decision
verify(ref, "ALLOW", agent, mandate, policy) # True
verify(ref, "DENY", agent, mandate, policy) # False — verdict tamper
An ALLOW bound under policy P returns a different guardrail_ref if recomputed against
the policy_bound_ref under a rotated P' — rotation is detectable. Invalid verdicts and
malformed refs are rejected, not hashed.
Conformance
conformance/spend_guardrail_lite_v1/ — 2 positives (ALLOW/DENY), 4 divergence negatives
(verdict / policy-rotation / agent / mandate tamper), 2 rejection negatives (invalid
verdict + malformed ref), and 2 invariants. Verifier imports only stdlib + rfc8785:
pip install rfc8785
python conformance/spend_guardrail_lite_v1/verify.py
Adopters
The 4-check gate is scripts/check_v0_adoption.py (dependency + canonical hash anchor
- NOTICE + version pin → ISSUE_V0_KEY). Apply: chopmob@gmail.com.
License
Apache-2.0. Copyright 2026 AlgoVoi. Preserve the NOTICE in any distribution.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file algovoi_spend_guardrail_lite-0.1.0.tar.gz.
File metadata
- Download URL: algovoi_spend_guardrail_lite-0.1.0.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae56d953058201bc200522a0f942947a0f9d3b372258ed75160f5534fff0c122
|
|
| MD5 |
fc799a97f62e530ded838ff5801a8f6d
|
|
| BLAKE2b-256 |
29fe061e1444f28b7fda51edb6afe5dc32eeec21961330ee846daf8746f3da5c
|
File details
Details for the file algovoi_spend_guardrail_lite-0.1.0-py3-none-any.whl.
File metadata
- Download URL: algovoi_spend_guardrail_lite-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e32cfad68d0d0b881b6397c3b22518958eb1396a74d83340a638f5578658a405
|
|
| MD5 |
f09c0ce0b2ef9dde11e2abc93be48c5d
|
|
| BLAKE2b-256 |
6b359d371154a0dacd9cfe828f18215d8f40ab3a66c7168df01d275e239c8d84
|