Public Commons Release 025.
An append-only, tamper-evident custody ledger for retiring single-use deployment authorizations exactly once.
Release 023 establishes a narrow authorization with deployment_authority=true and max_uses=1. Release 025 closes the replay gap by recording that exact authorization digest as either:
consumed— bound to a pre-executionexecution_intent_digest; orvoided— retired without execution and bound to an explicit reason.
The ledger rejects duplicate authorization IDs and duplicate authorization digests across its full history.
This ledger is consumption evidence, not deployment authority. Every entry hard-codes:
authority_retired=truedeployment_authority=false
It contains no deploy command, shell, network, credential, connector, production lock service, or concurrency primitive. A production executor must enforce atomic consumption against its authoritative store before performing the governed action.
git clone https://github.com/NeuruhAI/neuruh-authorization-consumption-ledger.git
cd neuruh-authorization-consumption-ledger
python -m venv .venv
source .venv/bin/activate
pip install .Or install a pinned release directly:
pip install "neuruh-authorization-consumption-ledger @ git+https://github.com/NeuruhAI/neuruh-authorization-consumption-ledger.git@v0.1.1-alpha"The repository ships synthetic fixtures. Check one with the installed CLI:
neuruh-authorization-consumption-ledger verify examples/consumption.synthetic.jsonl
neuruh-authorization-consumption-ledger digest examples/consumption.synthetic.jsonlExpected output:
{"length": 1, "ok": true, "tip": "ccdac88055bba819a6742fa7f7d2bcfd36ed6e6e2f35735e263d6654cd5a7ffb"}
sha256:e490d8e089b08688b402645f66e3c2aacd4d3d7a2f7e10224f544e0509ae1c56
inspect prints the full parsed object as indented JSON.
examples/build_synthetic.py regenerates the fixtures from scratch, so the construction path can be read end to end.
Bad input is reported, never raised as a traceback: a missing file, unreadable JSON, or a rejected object prints error: ... on stderr and exits 2.
| Name | Notes |
|---|---|
DISPOSITIONS |
Declared vocabulary. |
SCHEMA_VERSION |
Declared vocabulary. |
AuthorizationConsumption |
Fields: ledger_id, consumption_id, sequence, authorization_id, authorization_digest, run_id… |
ConsumptionLedger |
Fields: entries |
ConsumptionValidationError |
Raised for every rejection. |
canonical_json(value) |
|
consume_authorization(ledger, consumption_id, authorization_id, authorization_digest, run_id, a… |
|
sha256_ref(value) |
|
verify_available(ledger, authorization_id, authorization_digest) |
|
verify_ledger(entries, expected_tip) |
|
void_authorization(ledger, consumption_id, authorization_id, authorization_digest, run_id, acti… |
The published schema is schema/authorization-consumption.v0.1.schema.json.
python -m unittest discover -s tests -vThis package validates, records, and reports. It holds no credentials, performs no network I/O, and grants no authority. A valid object means the claims inside it are internally consistent and content-bound — not that the underlying action was correct, permitted, or actually happened. Digests and hash links are tamper evidence, not signatures: they detect modification, they do not establish who wrote an entry.
Only synthetic fixtures ship here: no production data, endpoints, policies, or topology. See
ARCHITECTURE.md, PUBLIC_PRIVATE_BOUNDARY.md, SECURITY.md, and the
Neuruh Public Commons boundary.