Skip to content

Repository files navigation

Neuruh Authorization Consumption Ledger

ci

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-execution execution_intent_digest; or
  • voided — retired without execution and bound to an explicit reason.

The ledger rejects duplicate authorization IDs and duplicate authorization digests across its full history.

Critical boundary

This ledger is consumption evidence, not deployment authority. Every entry hard-codes:

  • authority_retired=true
  • deployment_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.

Install

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"

Sixty-second example

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.jsonl

Expected 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.

API

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.

Test

python -m unittest discover -s tests -v

Safety boundary

This 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.

License

Apache License 2.0. See LICENSE and NOTICE.

About

Append-only tamper-evident ledger that retires single-use deployment authorizations exactly once.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages