source
Delegation Grant (DG) Profile of Attenuating Authorization Tokens (AAT) v0.1
This document defines version `v0.1` of the Delegation Grant (DG) profile for
Public-import note. This document was authored against the private research repo’s
docs/spec/layout. In the public ardur tree, migrated specs live underdocs/specs/. Anydocs/spec/...path reference in the body of this document refers to the original private layout; the public-tree mapping is indocs/specs/README.md. Some companion specs have not yet been imported. References to private implementation source paths (e.g.vibap-prototype/vibap/passport.py) point at the private research repo; the corresponding public Python package lands with Phase 1 perdocs/public-import-plan.md.
Status
This document defines version v0.1 of the Delegation Grant (DG) profile for
the MCEP (Mission-Controlled Execution Protocol) mission-and-evidence layer.
The DG wire format is the Attenuating Authorization Token (AAT) defined by
draft-niyikiza-oauth-attenuating-agent-tokens-00.
This profile is intentionally narrow:
- it adopts AAT token structure, derivation, and verification unchanged;
- it adds one top-level JWT claim,
mission_ref, to bind an AAT chain to a Mission Declaration (MD); and - it defines how MD lineage-budget semantics align with profiled AAT chains without changing AAT’s attenuation semantics.
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119 and RFC 8174 when, and only when, they appear in all capitals.
1. Introduction
The MCEP protocol family separates three artifacts:
- Mission Declaration (MD) — issuer-signed mission policy envelope
- Delegation Grant (DG) — the delegated capability artifact
- Execution Receipt (ER) — per-hop signed execution evidence
This document specifies the DG artifact only.
The DG artifact is an AAT. This profile does not define a parallel delegation format. Instead, it composes on top of the AAT draft’s common claims, token types, derivation model, six attenuation invariants, proof-of-possession structure, and chain-verification algorithm (AAT Sections 3 through 7).
This profile exists because AAT Section 8.1.2 explicitly leaves cumulative budgets, rate-limit and audit controls, and cross-trace behavior outside AAT’s security scope. The MD and ER companion artifacts cover that space. The only new DG-level binding needed for that composition is a mission pointer.
2. Normative Basis and Compatibility
2.1. AAT as the DG Wire Format
Every DG that claims conformance to this profile:
- MUST be a valid AAT under
draft-niyikiza-oauth-attenuating-agent-tokens-00; - MUST satisfy all AAT common-claim requirements from AAT Section 3.2;
- MUST use AAT token typing from AAT Section 3.1;
- MUST satisfy AAT derivation rules from AAT Section 6; and
- MUST pass the unmodified AAT chain-verification algorithm from AAT Section 7 before any profile-specific checks are applied.
If a deployment uses the AAT CBOR/CWT profile from AAT Appendix D, this
profile applies unchanged. mission_ref remains an additional DG claim and
does not redefine the Appendix D transport mapping.
An implementation claiming this profile MUST NOT fork, weaken, or replace the AAT Section 7 algorithm. Profile validation is strictly an additional layer that runs after AAT verification succeeds.
2.2. Backward Compatibility
AAT Section 3.4 requires enforcement points to ignore unrecognized top-level
JWT claims. mission_ref therefore does not break AAT interoperability.
A deployment that understands AAT but ignores mission_ref remains
AAT-conformant. It is, however, less capable than a deployment that enforces
this profile because it cannot bind the AAT chain to an MD or apply mission-
scoped lineage-budget and evidence semantics.
2.3. No New Cryptographic Mechanisms
This profile introduces no new signature scheme, proof-of-possession scheme, or token-binding mechanism.
Implementations MUST reuse AAT’s existing JOSE and PoP machinery, including:
- AAT token signatures per AAT Section 3.2 and Section 8.14;
- PoP JWT semantics per AAT Section 5; and
par_hashchain linkage per AAT Section 4.6 and Section 7.
The optional mission_digest member defined by this profile reuses SHA-256
and RFC 8785 JSON Canonicalization Scheme (JCS). It does not add a new
cryptographic primitive.
2.4. AAT Sections Used by This Profile
This profile normatively depends on the following parts of the AAT draft:
- Section 3.1 for token types;
- Section 3.2 for common claims and signing support requirements;
- Section 3.4 for top-level-claim compatibility and fail-closed constraint behavior;
- Section 3.5 and Section 9.3 for the OPTIONAL
lineage_budget_shareextension-constraint path; - Section 4 for invariants I1 through I6;
- Section 5 for PoP semantics;
- Section 6 for derivation semantics;
- Section 7 for chain verification;
- Section 8.1.2 for the threat space AAT explicitly leaves to companion controls;
- Section 8.14 for algorithm-confusion defenses;
- Section 9.1 for the JWT-claims registration template; and
- Appendix D for unchanged CWT/CBOR carriage.
3. The mission_ref Claim
3.1. Purpose
mission_ref is a top-level JWT claim carried by a profiled DG. It identifies
the governing MD under which the AAT chain was issued.
mission_ref is an external cross-reference only. It does not grant
authority, narrow authority, or alter AAT constraint evaluation.
3.2. Claim Value Forms
The mission_ref claim value MUST use one of the following encodings:
- String form:
- a URI; or
- a JWK Thumbprint URI using the syntax defined by RFC 9278.
- Object form:
uri(string, REQUIRED): a URI or JWK Thumbprint URI identifying the governing MD; andmission_digest(string, OPTIONAL): SHA-256 over the RFC 8785 canonical form of the MD payload object.
Profile consumers MUST accept both encodings.
Profile producers SHOULD use object form when they need digest binding. Profile producers MAY use string form when the MD identifier alone is sufficient.
If object form is used:
uriMUST be non-empty;mission_digest, when present, MUST be encoded assha-256:followed by exactly 64 lowercase hexadecimal characters; andmission_digestMUST be computed over the JCS-canonical MD payload object, not over compact-JWS bytes, detached JSON text, or implementation-specific serializer output.
3.3. Issuance and Derivation Rules
For this profile:
- Every root AAT MUST carry
mission_ref. - Every derived AAT MUST preserve the parent’s
mission_ref. - A derived AAT MUST NOT remove
mission_ref. - A derived AAT MUST NOT replace
mission_refwith a different MD reference. - A derived AAT MUST NOT widen
mission_refby replacing a more specific reference with a less specific one.
Preservation is defined as follows:
- if the parent uses string form, the child MUST carry the identical string;
- if the parent uses object form, the child MUST carry the identical
urivalue and, when present, the identicalmission_digestvalue; and - a child MUST NOT change between string form and object form.
Changing the governing MD requires issuance of a new root AAT. It MUST NOT be done by derivation.
3.4. Resolution Semantics
mission_ref MAY be dereferenceable, cache-resolved, or deployment-mapped.
This profile does not require online lookup during evaluation.
A verifier that operates offline MAY resolve mission_ref from local cache.
A verifier that resolves from cache SHOULD verify mission_digest when it is
present.
When a JWK Thumbprint URI is used, deployments MUST define how that URI maps to the cached or retrieved MD object. The thumbprint URI is an identifier, not an HTTP dereference requirement.
4. Processing Model
A verifier enforcing this profile MUST process a DG chain in the following order:
- verify the AAT chain exactly as specified by AAT Section 7;
- only after AAT verification succeeds, parse and validate
mission_ref; - resolve the referenced MD from cache, dereference, or deployment-local mapping;
- if
mission_digestis present, recompute the MD payload digest and compare it; and - apply any mission-layer policy, lineage-budget, and evidence rules defined by the deployment’s conformance profile.
Failure of steps 2 through 5 is a profile-layer failure. It does not alter the fact that the underlying AAT chain may still be AAT-valid.
5. Interaction with AAT Invariants
5.1. Preservation of I1 through I6
This profile preserves the AAT attenuation invariants from AAT Section 4:
- I1 — Delegation Authority
- I2 — Depth Monotonicity
- I3 — TTL Monotonicity
- I4 — Capability Monotonicity
- I5 — Cryptographic Linkage
- I6 — Proof of Possession
mission_ref is not part of authorization_details, is not part of the AAT
constraint algebra, and is not an input to AAT Section 4.5 subsumption.
Accordingly:
mission_refdoes not narrow or widen the tool set;mission_refdoes not alter closed-world argument semantics from AAT Section 3.3;mission_refdoes not alterpar_hashsemantics;mission_refdoes not changedel_depthordel_max_depth; andmission_refdoes not modify PoP JWT construction or verification.
5.2. Verification Compatibility Requirement
Any profiled DG chain that is otherwise valid MUST verify successfully under
an AAT verifier that is unaware of mission_ref.
Implementations claiming this profile SHOULD include a conformance test that demonstrates:
- the same DG chain passes AAT Section 7 verification before and after
mission_refis added; and - profile validation then enforces
mission_refconsistency as an additional check.
6. Escrow-Rights Alignment
6.1. Scope Boundary
AAT Section 8.1.2 explicitly states that AAT does not constrain which authorized invocations occur, in what order, or how many times.
This profile preserves that boundary. Mission-scoped lineage budgets are authorized by the MD, not by native AAT attenuation semantics.
6.2. reserved_budget_share Claim
Deployments operating at a MIC-State or stronger conformance profile MUST
enforce lineage-wide budget conservation in verifier or application state.
They MAY serialize the reserved child share into a top-level
reserved_budget_share claim on a derived AAT for audit, replay, or
interoperability within a deployment profile.
For this profile:
reserved_budget_share, when present, MUST be a non-negative integer;reserved_budget_share, when present, denotes the share reserved for the child at derivation time under the verifier ledger;- root AATs SHOULD omit
reserved_budget_share; and - derived AATs MUST NOT rely on
reserved_budget_shareto replace AAT Section 7 verification.
This document does not register reserved_budget_share in the JWT Claims
Registry. In v0.1 it is a profile-private companion claim used for escrow
audits.
6.3. Conservation Rule
The MD’s lineage_budgets claim authorizes the ceiling.
Verifier-side lineage state records per-child reservations and enforces
conservation. reserved_budget_share, when carried, is only a signed
serialization of that state for audit or replay.
For a given root mission and budget bucket:
- the sum of descendant reservations plus consumed budget charged to a root authorization MUST NOT exceed the corresponding MD ceiling; and
- a verifier or auditor claiming MIC-State or stronger conformance MUST
detect and report a conservation violation from ledger state, even if no
reserved_budget_shareclaim was serialized.
This conservation check is intentionally outside the AAT chain verifier. It is a mission-layer audit over otherwise valid AAT chains.
7. Optional AAT Extension Constraint Type: lineage_budget_share
7.1. Status
This section is OPTIONAL and not required for v0.1 DG interoperability.
It exists for deployments that choose to model delegation itself as an AAT-governed operation with an explicit numeric derivation parameter for the reserved child budget share.
The default and RECOMMENDED mechanism in this profile remains:
- MD
lineage_budgetsas the authorization source; - verifier/application lineage state as the conservation mechanism; plus
- optional top-level
reserved_budget_shareas a signed audit carrier.
7.2. Applicability Note
AAT Section 3.5 is designed for argument constraints carried in
authorization_details.
lineage_budget_share therefore fits only when the deployment exposes
delegation as an operation with a numeric argument representing the child’s
reserved budget share.
Deployments that do not model delegation that way SHOULD NOT use this extension type.
7.3. Proposed Registration Template
If a stable public specification is later published for this extension, the following template satisfies the AAT Section 9.3.2 structure.
Type name:
lineage_budget_share
Additional members:
bucket(string, required): identifier of the MD lineage-budget bucket to which the reservation applies.max_share(integer, required): maximum non-negative share that may be reserved into the child grant for the named bucket.unit(string, optional, default"calls"): accounting unit for the bucket. The unit MUST match the governing MD bucket definition.
Check predicate:
Given a candidate reserved-share value v:
vMUST be an integer;vMUST be greater than or equal to zero;vMUST be less than or equal tomax_share; and- the surrounding delegation context MUST bind the argument position to the
same MD lineage-budget bucket named by
bucket.
Subsumes verification procedure:
subsumes(C_parent, C_child) is true if and only if:
C_parent.bucket == C_child.bucket;C_parent.unit == C_child.unitafter defaulting absentunitto"calls"; andC_child.max_share <= C_parent.max_share.
This procedure is decidable, deterministic, and sound because every value
accepted by C_child is also accepted by C_parent.
Cross-type subsumption rules:
(lineage_budget_share, lineage_budget_share)is valid under the subsumption rule above.(lineage_budget_share, exact)is valid if theexactvalue is a non-negative integer andexact <= parent.max_share.(exact, lineage_budget_share)is invalid.- All other pairs involving
pattern,range,one_of,not_one_of,contains,subset,regex,cel,wildcard,all,any, ornotare invalid.
Security considerations:
- this constraint limits a requested reservation ceiling; it does not prove conservation across sibling branches by itself;
- deployments using this type MUST still perform lineage-wide conservation audit against the governing MD; and
- enforcement points that do not recognize this type MUST deny authorization, per AAT Section 3.5.2.
Reference: This document, upon stable public publication.
8. IANA Considerations
8.1. JWT Claims Registry
If published in an appropriate standards-track venue, this document requests registration of the following claim in the IANA JSON Web Token Claims Registry, using the same template shape as AAT Section 9.1:
| Claim Name | Claim Description | Change Controller | Reference |
|---|---|---|---|
mission_ref | Reference to the governing Mission Declaration. The claim value is either a URI/JWK Thumbprint URI or an object containing uri and optional mission_digest. | IETF | This document |
8.2. No Required AAT Constraint Registry Action in v0.1
This version does not require IANA registration of lineage_budget_share.
Section 7 defines a proposed template only.
9. Security Considerations
This profile inherits the security considerations of AAT, especially:
- threat-model scoping from AAT Section 8.1;
- replay considerations from AAT Section 8.6;
- unknown-constraint fail-closed behavior from AAT Section 8.9; and
- algorithm-confusion defenses from AAT Section 8.14.
The following profile-specific considerations also apply:
mission_refis integrity protected only because it is signed as part of the AAT JWT. Implementations MUST verify the AAT signature before trustingmission_ref.mission_digestbinds the MD payload object, not the JOSE wrapper around it. Implementations MUST hash the canonicalized payload object only.- A verifier that ignores
mission_refis still AAT-conformant but loses the ability to bind the chain to a specific mission policy root. reserved_budget_sharedoes not by itself stop over-delegation. The security property comes from lineage-wide conservation audit against the MD ceiling.- This profile does not mitigate malicious root issuers, compromised enforcement points, or model-layer compromise beyond the protections already scoped by AAT Section 8.1.2.
10. References
10.1. Normative References
draft-niyikiza-oauth-attenuating-agent-tokens-00- RFC 2119
- RFC 8174
- RFC 8785
- RFC 9278
10.2. Informative References
docs/spec/mission-declaration-v0.1.mddocs/spec/execution-receipt-v0.1.mddocs/session-2026-04-14/05-cpo-call-prep/unified-steps-final.mdvibap-prototype/vibap/passport.py