Charge Authority v1 freeze
Status: Feature-frozen, claim-frozen, adversarially exercised, ready for independent review.
Not claimed: audited, formally verified, or Halborn-complete.
Freeze label: charge-authority-v1-freeze
Date: 2026-08-20
Verdict
Charge Authority v1 is ready for a serious third party to try to break. Claims 1–3 each surfaced real bugs before freeze. Claim 4 pinned the overclaim boundary where “historically valid” must not become “was allowed to execute.”
Claim set (frozen)
| # | Claim |
|---|---|
| 1 | Signed authority bound to fingerprint-committed identity and execution intent |
| 2 | Fingerprint-committed charge satisfies authority constraints |
| 3 | Consumption PASS only from a trusted evidence channel for this authority + event + intent |
| 4 | Request-path enforcement is an integrator non-claim; no post-facto MAY_EXECUTE |
Anything new (signed ConsumptionEvidence, reservation/release, multi-use grants, in-circuit intent binding) belongs in v1.1 / v2, never in frozen v1 semantics.
Artifact digests (SHA-256, exact UTF-8 file bytes)
Specs
| File | SHA-256 |
|---|---|
protocol/docs/charge-authority.md | cca3cba52b668a4a565684f41db48f004522df7408f28a18dcaf0d34514524b7 |
protocol/docs/qzr-1.md | 00fca3df1faeb4170a1b689d24f09b380bda00977993fbadf406a7ca35f5e724 |
protocol/docs/qzr-1-section-4-4-freeze.md | 60de678ea0b0256a5b2faba8f3acff88aaa206f13fb007f118d0fa79654aad17 |
protocol/docs/charge-authority-v1-reviewer-map.md | 32e9cdca99c6f4025d04b3848f6066658719207b12fa98f92b44b66ec0ee324c |
Language-neutral §4.4 artifacts
| File | SHA-256 |
|---|---|
protocol/conformance/qzr-1/authoritative-field-registry.json | 1a2e01b8e2a89bf530da4ad87fc185b29f5915882a6fefa9e5dde41c4a762676 |
protocol/conformance/qzr-1/committed-value-vectors.json | 138b56b72f2874c869cd44b0ba46c70c6be99b09a48bb47c2f85a954b8973dbb |
Claim suites
| File | SHA-256 |
|---|---|
protocol/test/committed-values.test.js | 25cf62640770ef53cc8f04a0b1961ee08ebc121644514a3cbb110cb452b1627d |
protocol/test/authority-intent-binding.test.js | 4aa09f7cb939165d0dd9dd923a2c857da662905fb25cd9f55d3b2b04e198e210 |
protocol/test/claim2-charge-constraints.test.js | 79ade65beb7ec072cdb7afe58f35689518cd2a125c8fc77fe4ff1cc450e1d91a |
protocol/test/claim3-consumption-evidence.test.js | 62058f216ebc09082a60cf18873f25fd6230ff075d87b468d19cbe86b10fc2c3 |
protocol/test/claim4-path-enforcement.test.js | d2c824d88341495289b5168957dd162223c3cdf3a6bc3fa5d207e06404d8fc0b |
Reference evaluators (supporting TCB)
| File | SHA-256 |
|---|---|
protocol/packages/sdk/committedValues.js | 26e6ab84f450922808e06e80efbcfb856886f0251c5ecacbdcaebbaff61e8884 |
protocol/packages/sdk/evaluate.js | eeee8d90d446d0ad01214254acfa6b697049c0269fb910d8f8b32276d8ee0fe8 |
protocol/packages/vdi-billing/chargeAuthority.js | 5ef5b04394f5f8184c3bde5d6705a02912ed607f38645c1b7797c676d4600f3f |
protocol/packages/vdi-billing/authorityConsumption.js | 9e75a8cb798b3ca86b5b8fa18702a56e3cc8a283b7d92ba1634a536fdc882396 |
protocol/conformance/qzr-1/committed_values.py | 7987821547f84feb014bf66d8f181dc6e141b13933792ab947baba7b1a1ebf01 |
Digests are SHA-256(exact UTF-8 file bytes), not JCS. One-byte edits change the pin.
Git tag procedure
Working trees may contain unrelated dirty files. Tag only a commit that contains this freeze package and the hashed artifacts above.
# After a focused commit that lands the freeze package:
git tag -a charge-authority-v1-freeze -m "Charge Authority v1: claim-frozen, adversarially exercised"
git rev-parse charge-authority-v1-freeze^{}
# Record that commit SHA in the reviewer packet.2
3
4
Base HEAD at freeze-doc authoring time (may predate this file’s commit): 2412b3ba4f9001db427a2a35acd057b73c7128fe.
Reproduce
cd protocol
npm run test:sdk
npm run test:committed-values
npm run test:qzr1
# Claim suites are included in test:sdk:
# committed-values, authority-intent-binding,
# claim2-charge-constraints, claim3-consumption-evidence,
# claim4-path-enforcement2
3
4
5
6
7
8
Verify pins:
cd protocol
shasum -a 256 \
docs/charge-authority.md \
docs/qzr-1.md \
docs/qzr-1-section-4-4-freeze.md \
docs/charge-authority-v1-freeze.md \
docs/charge-authority-v1-reviewer-map.md \
conformance/qzr-1/authoritative-field-registry.json \
conformance/qzr-1/committed-value-vectors.json \
test/committed-values.test.js \
test/authority-intent-binding.test.js \
test/claim2-charge-constraints.test.js \
test/claim3-consumption-evidence.test.js \
test/claim4-path-enforcement.test.js2
3
4
5
6
7
8
9
10
11
12
13
14
This freeze document’s own digest is not self-pinned (embedding it would change the bytes). Recompute docs/charge-authority-v1-freeze.md after checkout and record it in the review engagement notes.
Reviewer entry points
| Document | Role |
|---|---|
| charge-authority-v1-reviewer-map.md | Claim → text / fields / controls / tests / non-claims |
| charge-authority.md | Normative claims and freeze boundary |
| qzr-1-section-4-4-freeze.md | §4.4 registry/vector freeze evidence |
| independent-review-prep.md | Broader engagement packet outline |
Out of v1 (deliberate)
- Signed portable
ConsumptionEvidenceenvelope (v1.1 candidate) reserve → authorize → execute → settle → release- Multi-use / cumulative grants
- In-circuit
execution_intent_digestbinding - Cryptographic proof of gateway path enforcement
