Internet-Draft OAuth Mission Template August 2026
McGuinness Expires 22 February 2027 [Page]
Workgroup:
Web Authorization Protocol
Internet-Draft:
draft-mcguinness-oauth-mission-template-latest
Published:
Intended Status:
Experimental
Expires:
Author:
K. McGuinness
Independent

Mission Template for OAuth 2.0

Abstract

An agent that dispatches work at machine speed cannot pause for a fresh human approval at every run, and a standing Mission broad enough to cover every run over-provisions authority the agent holds the whole time. This document defines an experimental option between those two: the Mission Template. A human consents once to a task template, a ceiling of resources, actions, and constraints, a dispatch policy, and a set of bounds. Each dispatch then instantiates an ordinary Mission from the template by policy, at machine speed, with no fresh human approval. The instance is an ordinary Mission: it is bounded by its own freshly derived Authority Set, is independently gated and revocable, and never exceeds the template ceiling. High-consequence authority classes are never dispatched by policy: they stay on a fresh human decision. Consent is given once, to the ceiling; dispatch draws within it deterministically.

About This Document

This note is to be removed before publishing as an RFC.

The latest revision of this draft can be found at https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-template.html. Status information for this document may be found at https://datatracker.ietf.org/doc/draft-mcguinness-oauth-mission-template/.

Source for this draft and an issue tracker can be found at https://github.com/mcguinness/mission-bound-authorization.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 22 February 2027.

Table of Contents

1. Introduction

An agent that runs a recurring task dispatches it many times: once per ticket, per document, per scheduled window. Mission-Bound Authorization for OAuth 2.0 [I-D.draft-mcguinness-oauth-mission] (the "issuance profile") commits a Mission's authority at a single human approval event. Requiring that event at every dispatch does not scale to machine speed, and the alternative, a single standing Mission broad enough to cover every dispatch, over-provisions: the agent holds the full breadth the whole time, and a fresh approval per run is what the deployment was trying to avoid.

This document defines an experimental third option: the Mission Template. A human consents once to a template, which fixes a ceiling of resources, actions, and constraints, names a dispatch policy, and publishes a set of bounds. Each dispatch then instantiates an ordinary Mission from the template by that policy, at machine speed, with no fresh human approval. Consent is given once, to the ceiling; each instance draws within it deterministically.

This concretizes the blessed semantics the architecture's Approve verb states: a deterministic, versioned policy can approve at machine speed within a ceiling a human consented to, because the policy approves the instance and a human approved the policy, with a policy version keeping that chain re-checkable ([I-D.draft-mcguinness-mission-architecture]). The accountable principal for every dispatched Mission is the human who approved the template. The high-consequence classes stay on a fresh human decision, exactly as that verb requires (Section 8).

2. Status: An Experimental Extension

This document is optional and experimental: adopt it for evaluation, not as a stable interface. It removes the per-dispatch human from a consented template, which is a high-consequence capability. This document therefore conditions the capability on the ceiling, the bounds, the prohibited-class rule, and the audit linkage it requires, and an ordinary human-approved Mission ([I-D.draft-mcguinness-oauth-mission]) remains the better fit where each run can carry its own approval. No Standards-Track document depends on this one.

A Mission Issuer that does not implement this document creates every Mission through a fresh human approval and is a fully conforming issuance-profile Mission Issuer ([I-D.draft-mcguinness-oauth-mission]). Nothing here places a new requirement back on the issuance profile.

3. Relationship to Other Profiles

This document depends normatively on the issuance profile [I-D.draft-mcguinness-oauth-mission] and on the Consent Evidence profile [I-D.draft-mcguinness-oauth-mission-consent-evidence], and is not implementable alone. It reuses, without restating, the issuance profile's approval event, integrity-anchor envelope, subset rule, Authority Set derivation, Mission record, and active/revoked/expired lifecycle; and the Consent Evidence profile's rule that a consented object's disclosure is committed. It uses Agent, Subject, Approver, Mission Issuer, Mission Intent, Authority Set, and Mission as the issuance profile defines them.

The runtime enforcement profile [I-D.draft-mcguinness-mission-runtime] is a normative dependency for its action classes, which the prohibited-class rule tests against (Section 8).

Progressive authorization ([I-D.draft-mcguinness-oauth-mission-progressive]) and expansion ([I-D.draft-mcguinness-oauth-mission-expansion]) are informative siblings. Progressive removes the per-expansion human from a consented authority ceiling on a single evolving Mission; this document removes the per-dispatch human from a consented template that mints many independent Missions. Both concentrate one considered human consent to a ceiling in place of many hurried consents, and both hold the high-consequence classes back for a human. Where progressive draws a successor within one chain, a template dispatches independent instances.

Terminology disambiguation:

The Consent Evidence profile ([I-D.draft-mcguinness-oauth-mission-consent-evidence]) already uses template_id and template_version to name a disclosure-rendering template, the presentation template a Consent Disclosure object was rendered from. The Mission Template of this document is a different object on a different surface: a consented ceiling and dispatch policy that instances are minted from, not a rendering of a disclosure. The two never share a member. Where this document commits a Mission Template's disclosure under Consent Evidence, that disclosure carries the Consent Evidence profile's template_id and template_version for its own rendering template, which are unrelated to the Mission Template being disclosed.

4. Conventions and Terminology

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 BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

All JSON shown in this document is non-normative and illustrative; the member definitions in the surrounding text are authoritative.

Mission Template:

A consented object that fixes a Template Ceiling, a Dispatch Policy, the allowed dispatchers and recipients, per-instance bounds, and a review cadence, and from which Missions are dispatched by policy without a fresh human approval (Section 5).

Template Ceiling:

The pre-consented maximum authority any Mission dispatched from a Mission Template may reach: an array of authorization-details-shaped entries, each the shape of an Authority Set entry ([I-D.draft-mcguinness-oauth-mission]), that every dispatched instance MUST be within (Section 7).

Dispatch:

The act of instantiating an ordinary Mission from a Mission Template by policy, at machine speed, with no fresh human approval (Section 7).

Dispatcher:

The authenticated principal that requests a Dispatch. A Dispatcher is not an Approver: it triggers instantiation within a template a human already approved, and its authority to do so is fixed by the template's allowed dispatchers.

Dispatch Policy:

The deployment-defined policy, identified and versioned, under which the Mission Issuer instantiates a Mission from a Mission Template. It is the policy the human approved when consenting to the template (Section 5), and it is trusted governance held by the Mission Issuer.

Mission Deployment Profile:

The deployment-level manifest the architecture defines ([I-D.draft-mcguinness-mission-architecture]). The bounds, the action-class mapping, and the review cadence this document requires a deployment to publish are published there.

5. The Mission Template

A Mission Template is a consented object with these members:

id:

REQUIRED. A string. The Mission Template Identifier, stable across the template's lifetime.

issuer:

REQUIRED. A string. The Mission Issuer that holds and dispatches from the template.

template_version:

REQUIRED. A string. The version of this template's consented content. A change to any consented member is a new template_version and, per Section 6, a new human approval.

ceiling:

REQUIRED. An array of authorization-details-shaped entries, each the shape of an Authority Set entry ([I-D.draft-mcguinness-oauth-mission]). This is the Template Ceiling: the pre-consented maximum any dispatched instance may reach. A ceiling entry MAY name a resource family rather than a single resource, under the resource-narrowing semantics the subset rule fixes ([I-D.draft-mcguinness-oauth-mission]).

dispatch_policy:

REQUIRED. An object carrying id and version, identifying the Dispatch Policy under which the Mission Issuer instantiates from this template. Its content is deployment-defined. Committing only id and version leaves the policy body itself uncommitted, so a change to its logic between template consent and a given dispatch is not detectable from the template alone. A deployment SHOULD additionally commit the Dispatch Policy body under an integrity anchor, computed the way the issuance profile computes authority_hash ([I-D.draft-mcguinness-oauth-mission]), or disclose it under Consent Evidence ([I-D.draft-mcguinness-oauth-mission-consent-evidence]), so a machine-speed dispatch decision stays auditable against the policy content a human actually consented to, not only its identifier.

allowed_dispatchers:

REQUIRED. An array identifying the principals permitted to dispatch from this template. A Dispatch request from a principal not in this set is refused (Section 7).

allowed_recipients:

REQUIRED. An array bounding which Subjects and Agents a Mission dispatched from this template may be created for. The Mission Issuer establishes the instance's Subject as the issuance profile requires, never from Dispatcher input ([I-D.draft-mcguinness-oauth-mission]), and refuses a Dispatch whose established Subject or Agent falls outside this set, so a template cannot mint a Mission for a party the human did not consent to.

instance_lifetime:

REQUIRED. A duration. The per-instance lifetime clamp: a dispatched Mission's expires_at is clamped to no more than this from its committed created_at (Section 7).

max_active:

REQUIRED. An integer. The maximum number of Missions dispatched from this template that may be active at once. A Dispatch that would exceed it is refused until an active instance terminates.

dispatch_rate:

REQUIRED. A rate bound on Dispatch from this template per unit time.

expires_at:

REQUIRED. The template's own expiry ([I-D.draft-mcguinness-oauth-mission]). After it, the template dispatches nothing.

review_cadence:

REQUIRED. The maximum age of the template's most recent human approval past which the Mission Issuer MUST NOT dispatch (Section 6).

The concrete values of instance_lifetime, max_active, dispatch_rate, and review_cadence, and the action-class mapping the prohibited-class rule needs (Section 8), MUST be published in the Mission Deployment Profile ([I-D.draft-mcguinness-mission-architecture]).

5.1. Template integrity anchor

The consented Mission Template is committed by a template_hash, computed with the issuance profile's integrity-anchor envelope ([I-D.draft-mcguinness-oauth-mission]):

  • typ: mission-template;

  • hashed object: the Mission Template object above, canonicalized as the integrity-anchor envelope requires, so member order follows that canonicalization.

It is an envelope anchor under the issuance profile's commitment mechanisms, which this document imports normatively.

template_hash is to the template what authority_hash is to a Mission's Authority Set: the anchor over the consented object. It plays the same role the progressive profile's ceiling_hash plays for a consented authority ceiling ([I-D.draft-mcguinness-oauth-mission-progressive]). A dispatched Mission commits its own intent_hash and authority_hash over its own Intent and final Authority Set (Section 7); the template commits the ceiling once, under template_hash. The Mission's anchors and the template's anchor are never merged.

5.2. Template lifecycle

A Mission Template has the issuance profile's Mission lifecycle ([I-D.draft-mcguinness-oauth-mission]), interpreted for a template:

  • active: the template dispatches, subject to its bounds and review cadence;

  • revoked: a human or administrator has retired the template; it dispatches nothing;

  • expired: the template is past its expires_at; it dispatches nothing.

Revoking or expiring a template stops further dispatch. It does not retroactively terminate Missions already dispatched: each runs to its own clamped expires_at and is independently revocable (Section 10). A deployment that needs a faster cutoff on outstanding instances uses a short instance_lifetime or revokes the instances directly, exactly as the issuance profile bounds an ordinary Mission's outstanding tokens.

7. Dispatch

A Dispatch instantiates an ordinary Mission from a Mission Template. It is submitted on the binding's existing Mission creation surface as a single authenticated back-channel request that references the template by id and carries the dispatch intent, and it is answered in one round trip. This document defines no new endpoint and no new Authorization Server metadata: dispatch is a non-interactive Mission creation under the pre-consented template, at the token endpoint under the grant type this document defines (Section 7.2).

Because the human decision was made once, at template creation, a Dispatch uses no Pushed Authorization Request, no front-channel authorization request, and no interactive consent surface, and the Mission Issuer never answers a Dispatch with authorization_pending: there is no pending human step to wait for. A deployment that needs a human in the loop for a given run does not dispatch it; it creates an ordinary Mission through a fresh approval.

The Mission Issuer adjudicates a Dispatch in this order:

  1. Authenticate the Dispatcher. Resolve and authenticate the principal making the request.

  2. Authorize the Dispatcher. Verify the Dispatcher is in the template's allowed_dispatchers. Refuse a request from any other principal.

  3. Derive the instance Authority Set. Derive an Authority Set from the dispatch intent, and from the Dispatcher's authority proposal where one was submitted (Section 7.2), and bound it by the deployment's derivation policy, exactly as for any Mission ([I-D.draft-mcguinness-oauth-mission]). This document adds no authority-derivation rule.

  4. Double intersection. The derived instance Authority Set MUST be a subset, under the issuance profile's subset rule ([I-D.draft-mcguinness-oauth-mission]), of both the deployment's derivation-policy ceiling and the Template Ceiling. Each surviving instance entry MUST be a subset of some ceiling entry. If no entry survives the intersection with the Template Ceiling, the Mission Issuer MUST refuse the Dispatch with out_of_template_ceiling (Section 9). Raising the ceiling is a new template consent, not a dispatch.

  5. Prohibited-class check. Apply the prohibited-class rule (Section 8) to the surviving post-intersection set. If it would grant a high-consequence class, refuse the Dispatch with dispatch_prohibited_class (Section 9).

  6. Enforce the bounds. Refuse the Dispatch if it would exceed max_active or dispatch_rate, or if the instance's Mission-Issuer-established Subject or its Agent falls outside allowed_recipients (Section 5).

  7. Commit the instance. Commit an ordinary Mission whose Authority Set is the surviving set and whose:

    • approver is the template's human approver, the accountable principal ([I-D.draft-mcguinness-oauth-mission]). The Dispatcher is not the approver. The instance is rooted in the approval_basis authorization basis the issuance profile defines ([I-D.draft-mcguinness-oauth-mission]), with type: "template": consent_principal is the template's human approver (equal to approver); activation carries the template's id (as template_id, the same value the Dispatch grant names Section 7.2), template_version, and template_hash (the template lineage member's fields, Section 7.1), plus this Dispatch's dispatch_event_id; activation_actor is the Dispatcher, distinct from consent_principal; root_commitment is template_hash; and approved_at (the issuance profile's standing-consent requirement) is the instant the consenting human approved this exact template_version, read from the Mission Issuer's retained template record at Dispatch, never from the Dispatch request. This makes the approver-of-record shift from a fresh human decision to policy adjudication under a prior human consent structured and flagged consistently across the family, superseding a bare policy-adjudicated marking. The template lineage member (Section 7.1), present on every dispatched Mission and absent on an ordinarily approved one, remains the claim-carried record of which template and Dispatch Policy adjudicated the instance; approval_basis is the structured authorization-basis record, and the two are consistent by construction;

    • subject is established as the issuance profile requires, never taken from Dispatcher input, and is within allowed_recipients ([I-D.draft-mcguinness-oauth-mission]);

    • intent_hash and authority_hash are computed over the instance's own Intent and final Authority Set, never over the template; the template commits the ceiling under template_hash (Section 5.1);

    • expires_at is the effective Mission expiry of the issuance profile's requested-versus-effective rule ([I-D.draft-mcguinness-oauth-mission]): the minimum of the dispatch intent's requested expires_at, the committed Mission created_at plus the template's instance_lifetime, and the template's expires_at. The lifetime addend is measured from the committed created_at, not a separate clock read, so audit recomputation is exact. These are the complete expiry inputs for Dispatch: a deployment that needs a tighter standing-consent lifetime records it in instance_lifetime or the template's expires_at under a newly consented template_version, rather than applying an undisclosed fourth clamp; and

    • template lineage member is set (Section 7.1).

A Dispatch MUST be idempotent per dispatch event identifier. The Dispatcher supplies a dispatch event identifier with the request; a repeated request bearing an identifier the Mission Issuer has already committed returns the Mission it already committed, and instantiates no second Mission. This makes retry safe at machine speed and keeps max_active and dispatch_rate accounting exact. The dispatch event identifier is this grant's realization of the creation idempotency the expansion profile defines for the family's Mission-creating token exchanges ([I-D.draft-mcguinness-oauth-mission-expansion]).

7.1. The template lineage member

A dispatched Mission records a template lineage member, on both its mission claim and its Mission record, linking it to the Mission Template it was dispatched from:

template:

An object carrying id, issuer, template_version, template_hash, and dispatch_policy (the policy id and version). Present on every dispatched Mission and absent on a Mission created by ordinary approval.

Consistent with the issuance profile's open-mission-claim rule ([I-D.draft-mcguinness-oauth-mission]), the template member is lineage and audit context only: it MUST NOT grant or widen authority, and a consumer that does not understand it MUST ignore it. The instance's authority comes only from its own authority_hash. The template member exists so the dispatch is re-checkable in audit (Section 11).

7.2. Grant Type

This document binds Dispatch to the token endpoint through a dedicated grant type, adding no new endpoint. A Dispatcher requests an instance with:

grant_type:

REQUIRED. urn:ietf:params:oauth:grant-type:mission-dispatch.

template_id:

REQUIRED. The Mission Template's id (Section 5).

mission_intent:

REQUIRED. The dispatch submission, in the issuance profile's Mission Intent Submission envelope shape ([I-D.draft-mcguinness-oauth-mission]): its intent is the dispatch intent from which the instance Authority Set is derived (Section 7), and its OPTIONAL evidence array carries Intent Submission Evidence under that profile's dispatch, refusal, and never-authority rules.

authorization_details:

OPTIONAL. The Dispatcher's authority proposal: the standard [RFC9396] parameter carried on the same token request, itself ordinary [RFC9396] token-request usage. This parameter is this grant's proposal carriage, replacing the issuance profile's PAR-only carriage rule; that profile's validation, derivation, recording, and hashing semantics apply unchanged ([I-D.draft-mcguinness-oauth-mission]). It is a proposal, never authority: it bounds the derivation of step 3 of Section 7 in narrowing mode, and the double intersection of step 4 applies to the result unchanged, so a proposal narrows the instance and never widens it beyond the Template Ceiling. Absent a proposal, the instance derives from the dispatch intent alone. An instance created from a Dispatch carrying one records proposed_authority and proposal_hash.

dispatch_event_id:

REQUIRED. The dispatch event identifier that makes the Dispatch idempotent (Section 7). A redemption bearing an identifier the Mission Issuer has already committed MUST return the previously committed instance and MUST NOT derive a second Mission.

The Dispatcher authenticates at the token endpoint with its own client credential; the Mission Issuer authorizes it against the template's allowed_dispatchers as step 2 of Section 7 requires. This grant performs exactly one derivation per dispatch_event_id: the adjudication order of Section 7 runs once for a new identifier, and a repeated identifier is gated to the previously committed instance rather than a fresh derivation. This is the single gated derivation this document permits per dispatch event.

On success the Mission Issuer responds with an access token bound to the instance, sender-constrained to the Dispatcher's key:

access_token:

REQUIRED. A Mission-bound access token for the dispatched instance.

token_type:

REQUIRED. The token type of the issued access token, reflecting the sender-constraining mechanism in use (DPoP where the deployment uses DPoP).

expires_in:

REQUIRED. The access token's lifetime in seconds.

mission_id:

REQUIRED. The dispatched Mission's identifier.

mission_expires_at:

REQUIRED. The instance's effective Mission expiry, the issuance profile's common Mission-creating response member ([I-D.draft-mcguinness-oauth-mission]). expires_in above describes only the access token.

authorization_details:

REQUIRED. The instance's committed Authority Set.

A Dispatch refused under Section 7 or Section 8 carries the OAuth error member together with mission_denial_reason (Section 9), exactly as any other adjudication denial in this family.

8. Prohibited Classes

Some authority classes are too consequential to activate without a human at the moment of the decision. A Dispatch MUST NOT instantiate a Mission that grants authority in any of these classes, even when the class is within the Template Ceiling:

This is the prohibited set the progressive profile holds back from policy adjudication ([I-D.draft-mcguinness-oauth-mission-progressive]), applied here to dispatch. To make the rule testable, a deployment MUST publish in the Mission Deployment Profile a mapping from its action identifiers to the runtime profile's action classes ([I-D.draft-mcguinness-mission-runtime]), or an equivalent declared classification.

The deployment's configured dispatch-prohibited action set MUST cover every action the published mapping classifies as irreversible, external-commitment, or privileged-administration, as satisfying the runtime profile's external-communication predicate ([I-D.draft-mcguinness-mission-runtime]), or as cross-domain. A configured set narrower than the mapping is nonconformant: it lets a Dispatch confer a class the deployment's own mapping already identifies as prohibited, which is exactly the outcome this section forbids.

A Dispatch that would grant a prohibited class is refused with dispatch_prohibited_class (Section 9). Unlike the progressive profile, which falls back to a fresh human approval in band, a Dispatch has no interactive surface to escalate on: the human path is an ordinary Mission created through a fresh approval ([I-D.draft-mcguinness-oauth-mission]), requested out of band. The Dispatch Policy MUST NOT dispatch a Mission bearing a prohibited class.

9. The Denial Reasons

This document defines a closed set of dispatch denial reasons, carried in the shared mission_denial_reason member that the expansion profile established for adjudication denials ([I-D.draft-mcguinness-oauth-mission-expansion]):

out_of_template_ceiling:

The dispatched instance's Authority Set is not within the Template Ceiling (Section 7), so it cannot be instantiated by policy. Raising the ceiling requires a fresh human template consent.

dispatch_prohibited_class:

The dispatched instance would grant a high-consequence class (Section 8), which a Dispatch never auto-approves. The authority is available only through a fresh human approval.

A consumer that does not implement this document treats either value as it treats any unrecognized reason code: the Dispatch stays denied, with no further semantics.

10. Instance Composition

A dispatched Mission is an ordinary Mission. Nothing about its origin makes it special to the rest of the family; the template bounded its creation and then steps out of the way.

11. Audit Linkage

A dispatched Mission is re-checkable in audit with no per-dispatch human in the record, because the human is at the template. For a dispatched Mission an authorized auditor can:

Each Dispatch MUST record the Dispatch Policy id and version that instantiated the Mission, and the dispatch event identifier (Section 7), so the policy chain the architecture's Approve verb requires stays re-checkable ([I-D.draft-mcguinness-mission-architecture]). A deployment MUST retain the consented template, template_hash, and dispatch records for each instance's audit horizon ([I-D.draft-mcguinness-oauth-mission]), so every dispatch is verifiable to have stayed within the consented template.

12. Security Considerations

The issuance profile's security considerations apply in full. This document adds the dispatch surface.

13. Privacy Considerations

The Template Ceiling discloses, at template-consent time, the full envelope every future dispatch may draw within, which can reveal more about the anticipated recurring task than any single dispatched Mission's Authority Set. The template lineage member correlates every instance dispatched from one template across distinct Missions. Access to the template, its ceiling, and the dispatch records SHOULD be scoped to parties with a governance need. The issuance profile's Mission Identifier correlation considerations apply to each dispatched Mission.

14. Conformance

A Mission Issuer that claims Dispatch from a Mission Template is a conforming issuance-profile Mission Issuer ([I-D.draft-mcguinness-oauth-mission]) and MUST:

A Resource Server requires no new behavior: it enforces a dispatched Mission's tokens exactly as it enforces any Mission-bound token, and treats the template member, if it reads it at all, as audit context it MUST NOT use to grant authority (Section 7.1).

15. IANA Considerations

This document requests registration of the following value in the "OAuth URI" registry established by [RFC6755]:

URN:

urn:ietf:params:oauth:grant-type:mission-dispatch

Common Name:

Mission Dispatch Grant Type

Change Controller:

IETF

Specification Document:

this document, Section 7.2

This is a proposed registration. The value is used under the reserved urn:ietf:params:oauth arc by implementations of this document in advance of registration completing; this document is the specification that names and defines it.

Beyond that registration, this document requests no further IANA action. Following the restraint of the sibling profiles:

16. References

16.1. Normative References

[I-D.draft-mcguinness-mission-runtime]
McGuinness, K., "Mission-Bound Runtime Enforcement", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-runtime.html>.
[I-D.draft-mcguinness-oauth-mission]
McGuinness, K., "Mission-Bound Authorization for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission.html>.
McGuinness, K., "Mission Consent Evidence for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-consent-evidence.html>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC6755]
Campbell, B. and H. Tschofenig, "An IETF URN Sub-Namespace for OAuth", RFC 6755, DOI 10.17487/RFC6755, , <https://www.rfc-editor.org/rfc/rfc6755>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/rfc/rfc8174>.
[RFC9396]
Lodderstedt, T., Richer, J., and B. Campbell, "OAuth 2.0 Rich Authorization Requests", RFC 9396, DOI 10.17487/RFC9396, , <https://www.rfc-editor.org/rfc/rfc9396>.

16.2. Informative References

[I-D.draft-mcguinness-mission-architecture]
McGuinness, K., "An Architecture for Mission-Bound Authorization", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-mission-architecture.html>.
[I-D.draft-mcguinness-oauth-mission-child-delegation]
McGuinness, K., "Mission Child Delegation for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-child-delegation.html>.
[I-D.draft-mcguinness-oauth-mission-containment]
McGuinness, K., "Mission Containment for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-containment.html>.
[I-D.draft-mcguinness-oauth-mission-continuation]
McGuinness, K., "Mission Continuation: Authorization Continuity for Mission-Bound Authorization", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-continuation.html>.
[I-D.draft-mcguinness-oauth-mission-expansion]
McGuinness, K., "Mission Expansion for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-expansion.html>.
[I-D.draft-mcguinness-oauth-mission-progressive]
McGuinness, K., "Mission Progressive Authorization for OAuth 2.0", , <https://mcguinness.github.io/mission-bound-authorization/draft-mcguinness-oauth-mission-progressive.html>.

Acknowledgments

This document is part of the Mission-Bound Authorization for OAuth 2.0 work and expresses, in family terms, a define-a-template-once, dispatch-per-run lifecycle: one considered human consent to a ceiling in place of a fresh approval at every machine-speed run.

Author's Address

Karl McGuinness
Independent