| Internet-Draft | JEP-AMP | September 2026 |
| Wang | Expires 30 March 2027 | [Page] |
This document defines JEP Action Mandate Profile 2 (JEP-AMP-2), a profile of the Judgment Event Protocol (JEP) [JEP].¶
JEP-AMP-2 specifies how a JEP Delegation event can express a bounded, verifiable, terminable, and auditable mandate for an agent, human, organization, workflow, or system to attempt an action on behalf of a principal.¶
JEP-AMP-2 does not redefine JEP-Core event verbs, Event Identity, Event Hash, signature semantics, validation checks, identity systems, credential systems, legal liability, payment clearing, or global authorization validity. It defines a signed Action Mandate Descriptor and profile-level rules for evaluating mandate validity under an explicit trust, policy, domain, and relying-party context.¶
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 30 March 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
JEP-Core defines signed J/D/T/V events and the minimum protocol semantics of Delegation. A Core-valid D event records a delegation statement, but does not by itself establish that the delegator possessed authority, that the delegatee may execute an action, or that a relying party should permit the action.¶
JEP-AMP-2 defines a profile for one narrower use of D: a bounded action mandate.¶
The central profile question is:¶
Does this signed delegation satisfy the declared AMP mandate rules, and does the requested action remain within that mandate?¶
The local decision to permit an external action remains a relying-party or domain-policy decision.¶
JEP Profiles [JEP-PROFILES] defines the general profile-selection, composition, trust, acceptance, and profile-specific-check model.¶
JEP Conformance [JEP-CONFORMANCE] defines validation-result and test-harness conventions used by this profile.¶
Where this document conflicts with JEP-Core, JEP-Core controls.¶
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.¶
A signed JEP Delegation event whose what value conforms to the Action Mandate Descriptor defined by this profile.¶
The Event Identity (who,id) of the JEP Delegation event that issues the mandate.¶
Mandate Identity is the canonical logical identifier of an AMP-2 mandate.¶
The JEP Event Hash of one exact signed representation of the issuance event.¶
The Mandate Artifact Hash is not the Mandate Identity.¶
The actor identified by the issuance event's who member.¶
The issuer is not automatically authorized to act for the principal.¶
The person, organization, account, tenant, legal entity, or other subject on whose behalf the delegated action is to be attempted.¶
A profile-level result indicating whether the mandate satisfies the AMP-2 requirements for the requested evaluation context.¶
The initial values are valid, invalid, and indeterminate.¶
A local relying-party decision about whether an external action should be allowed, denied, reviewed, or deferred.¶
Action Decision is not a global JEP-AMP conclusion.¶
The profile identifier for this version is:¶
https://humanjudgment.org/jep/profiles/amp/2¶
The short name JEP-AMP-2 MAY be used in user interfaces and documentation.¶
The identifier is an HTTPS URI under a publisher-controlled namespace. It is not an IANA-registered URN namespace value. Implementations MUST compare the profile identifier as the exact URI string defined above. Dereferencing the URI is not required for validation, although publishers SHOULD keep the URI stable and SHOULD make profile documentation available there when practical.¶
JEP-AMP-1 used urn:jep:profile:amp:1. AMP-2 changes mandate identity, reference, validation, and Core-alignment semantics in non-compatible ways. Therefore AMP-2 uses a new profile identifier rather than silently changing the meaning of AMP-1.¶
An AMP-2 producer binds profile selection by including the exact profile identifier in the signed Action Mandate Descriptor.¶
JEP-AMP-2 relies on JEP-Core for:¶
id, who, when, what, and sig members;¶
(who,id);¶
aud;¶
ref;¶
JEP-AMP-2 MUST NOT redefine any of those semantics.¶
JEP-Core idempotent acceptance prevents one Event Identity from applying the same acceptance effect more than once within one acceptance domain.¶
AMP mandate usage or consumption is a different concept. A single mandate may authorize zero, one, or multiple external action attempts according to this profile and local policy. Implementations MUST NOT treat Core already_accepted as equivalent to "mandate consumed".¶
For the AMP-2 baseline profile, the Action Mandate Descriptor is the JEP D event's what object.¶
The descriptor MUST therefore include the Core-required D members delegatee and scope.¶
AMP-2 does not define a detached descriptor encoding. External policy, credential, evidence, receipt, or domain objects MAY be referenced from the descriptor or from JEP references, but the authoritative AMP-2 descriptor itself is signed inline as what.¶
A future extension MAY define a detached representation, but it MUST preserve the Core-required signed D semantics and define conflict resolution.¶
An AMP-2 Action Mandate Descriptor MUST contain:¶
The required members have the following baseline shapes:¶
profile MUST be a string equal to https://humanjudgment.org/jep/profiles/amp/2.¶
principal MUST be an object containing a non-empty string id. principal.type MAY be present as a non-empty string.¶
delegatee MUST be a non-empty string actor identifier.¶
action MUST be an object containing a non-empty string type. action.type MUST be an absolute URI identifying the action or action family. A domain profile MAY define additional members of action.¶
target MUST be an object containing non-empty string members type and id. A domain profile MUST define the identifier and matching semantics for the target type it uses.¶
scope MUST be a non-empty JSON object. A domain profile MUST define the meaning and comparison rules for any scope members that affect an Action Decision.¶
validity MUST be an object containing expires_at. validity.expires_at MUST be an RFC 3339 date-time [RFC3339]. validity.not_before MAY also be present and, if present, MUST be an RFC 3339 date-time.¶
If validity.not_before is absent, AMP-2 imposes no profile-level lower time bound. A relying party MAY impose a local or domain-specific lower bound, but MUST NOT derive trusted start time solely from the JEP when value.¶
A mandate whose expires_at precedes not_before is invalid.¶
The descriptor MUST NOT add new top-level members beyond those defined by this document or a later compatible AMP revision. Additional extensibility MUST use JEP ext / ext_crit or referenced profile-defined objects rather than a second descriptor-level extension namespace.¶
The descriptor MAY contain:¶
mandate_id, when present, MUST be a non-empty string application-level alias. It MUST NOT replace Mandate Identity for cross-system logical references.¶
constraints, when present, MUST be a JSON object. If absent, AMP-2 imposes no additional constraint set beyond the required action, target, scope, validity, and applicable policy rules.¶
policy_ref, when present, MUST be a non-empty array of objects. Each object MUST contain a non-empty uri string identifying the applicable policy or policy document. Absence of policy_ref means that the mandate itself declares no external policy reference; local policy MAY still apply.¶
authority_evidence, when present, MUST be a non-empty array of references. Each reference MUST use JEP reference semantics or a reference form explicitly defined by the active authority profile.¶
No descriptor-level extensions member is defined by AMP-2. Extension data belongs in JEP ext / ext_crit or in referenced profile-defined objects.¶
action MUST be an object and MUST contain the required type member defined in Section 6.2.¶
action.type identifies the action or action class.¶
AMP-2 does not define a global action taxonomy. A domain profile MUST define the semantics and request-matching rules for each action type it uses.¶
Additional members of action MAY be defined by the active domain profile.¶
target MUST be an object and MUST contain the required type and id members defined in Section 6.2.¶
The target identifies the object, resource, record, account, workflow, case, transaction, or other domain object to which the mandate applies.¶
A domain profile MUST define the target identifier, normalization, comparison, and matching rules used for Action Decision.¶
scope MUST be a non-empty JSON object and MUST be machine-processable under the applicable domain profile.¶
It MAY include purpose, work-unit, resource, tenant, geography, data-boundary, or other domain limits.¶
A relying party MUST NOT infer a broader scope merely because a requested action uses the same action type or target family.¶
A domain profile MUST define comparison rules for every scope member that can change an Action Decision.¶
constraints MAY define amount limits, data limits, resource sets, vendor sets, customer sets, risk limits, approval thresholds, or other boundaries.¶
A domain profile MUST define comparison rules for any constraint that affects Action Decision.¶
If usage is absent, AMP-2 imposes no profile-level use-count limit. Local or domain policy MAY still impose a limit.¶
If usage is present, it MUST be an object containing max_uses.¶
usage.max_uses MUST be a positive integer.¶
usage.reservation_required MAY be present as a boolean. If absent, its value is false.¶
A max_uses value of 1 defines a single-use mandate at the AMP layer.¶
Usage counting and consumption state MUST NOT be inferred from Core idempotent acceptance. A relying party MUST still enforce max_uses safely. Deployments requiring concurrent or distributed use control MUST provide an atomic or equivalent reservation/consumption mechanism, regardless of the value of reservation_required.¶
If delegation is absent, subdelegation is not allowed.¶
If delegation is present, it MUST be an object containing the boolean member subdelegation_allowed.¶
If subdelegation_allowed is false, no child mandate is permitted under AMP-2.¶
If subdelegation_allowed is true:¶
max_depth MUST be present and MUST be a positive integer;¶
scope_expansion_allowed MAY be present as a boolean and defaults to false;¶
constraint_relaxation_allowed MAY be present as a boolean and defaults to false;¶
AMP-2 has no implicit parent-termination cascade rule.¶
If a child mandate is permitted, its issuance event MUST reference the parent Mandate Identity using a typed JEP event reference. An exact parent artifact MAY additionally be pinned by Event Hash.¶
Unless scope_expansion_allowed is explicitly true, child scope MUST be equal to or narrower than parent scope.¶
Unless constraint_relaxation_allowed is explicitly true, child constraints MUST be equal to or stricter than parent constraints.¶
Even when expansion or relaxation is permitted by the descriptor, the active domain policy MAY still reject it.¶
If termination is absent, the issuance actor is the default authorized terminator.¶
If termination is present, it MUST be an object. It MAY contain authorized_terminators.¶
authorized_terminators, when present, MUST be a non-empty array of non-empty string actor identifiers. Only actors permitted by this list and any stricter active policy may satisfy the AMP termination-status check as an authorized terminator.¶
Expiry under validity.expires_at does not require a T event.¶
{
"profile": "https://humanjudgment.org/jep/profiles/amp/2",
"principal": {
"id": "did:example:acme",
"type": "organization"
},
"delegatee": "did:example:agent:procure-7",
"action": {
"type": "urn:example:procurement:action:purchase"
},
"target": {
"type": "procurement_request",
"id": "req-123"
},
"scope": {
"purpose": "purchase-approved-materials",
"work_unit_ref": "req-123"
},
"validity": {
"not_before": "2026-09-26T00:00:00Z",
"expires_at": "2026-09-28T00:00:00Z"
},
"constraints": {
"amount": {
"currency": "USD",
"max": 5000
}
},
"usage": {
"max_uses": 1,
"reservation_required": true
},
"policy_ref": [
{
"uri": "urn:policy:acme:procurement:v3"
}
],
"delegation": {
"subdelegation_allowed": false
}
}
¶
The DID identifiers are illustrative only.¶
An AMP-2 mandate is issued by one JEP D event.¶
The issuance event:¶
verb equal to D;¶
what;¶
what.profile equal to https://humanjudgment.org/jep/profiles/amp/2;¶
what.delegatee and what.scope;¶
aud when the mandate is intended for a bounded audience;¶
ref to identify a parent mandate or another context whose relationship is explicitly defined;¶
The issuance Event Identity is the canonical Mandate Identity.¶
The issuance Event Hash identifies only the exact signed issuance artifact.¶
A JEP event referring to an AMP-2 mandate SHOULD reference the issuance Event Identity.¶
Conceptually:¶
{
"type": "jep:event",
"value": {
"who": "did:example:issuer",
"id": "urn:uuid:..."
}
}
¶
When the exact signed issuance artifact matters, the reference MAY additionally pin the issuance Event Hash.¶
A validator MUST verify an exact-artifact pin when the active validation context requires reference_integrity.¶
A mandate_id alias MAY be indexed or displayed by applications.¶
A relying party MUST NOT substitute mandate_id for Mandate Identity unless a domain mapping explicitly defines that mapping and collision behavior.¶
An AMP-2 termination declaration is a JEP T event that:¶
verb equal to T;¶
ref whose value equals the Mandate Identity;¶
what.termination_scope equal to https://humanjudgment.org/jep/profiles/amp/2#mandate-reliance;¶
The T event MAY include a profile-defined reason such as revoked, consumed, superseded, completed, policy_change, or constraint_violation.¶
A conforming Mandate Verifier that observes an authorized AMP-2 termination event in the applicable evaluation context MUST treat the referenced mandate as ineligible for future reliance in that context.¶
This is an AMP profile rule. The JEP T event itself does not delete history, retroactively invalidate prior events, or prove that every downstream system has observed or enforced the termination.¶
After validity.expires_at, the mandate is invalid for new AMP reliance even if no T event exists.¶
Expiry is evaluated from the mandate validity rule and the time source chosen by the active profile or relying party. The issuance event's JEP when value alone is not trusted wall-clock evidence.¶
Core acceptance answers whether the same JEP Event Identity has already applied the same acceptance effect in one acceptance domain.¶
AMP usage answers whether a mandate has remaining authorized uses.¶
These are independent state machines and MUST NOT be conflated.¶
When usage.max_uses limits use, the relying party MUST maintain sufficient usage state to avoid permitting more uses than allowed.¶
For concurrent or distributed relying parties, a domain profile SHOULD define an atomic reservation or consumption mechanism.¶
A reservation record SHOULD bind:¶
A reservation MAY be recorded by a profile-defined V event or by an external domain record referenced from a JEP event.¶
A consumption record SHOULD bind:¶
A T event with reason consumed MAY record a declaration that no future reliance is intended. It does not by itself provide the concurrency guarantee required to prevent double consumption.¶
AMP-2 distinguishes:¶
A valid JEP signature is not sufficient for Mandate Status valid.¶
Mandate Status valid is not a global authorization decision.¶
The following provisional AMP-2 check identifiers are defined:¶
https://humanjudgment.org/jep/profiles/amp/2#profile-binding¶
https://humanjudgment.org/jep/profiles/amp/2#descriptor¶
https://humanjudgment.org/jep/profiles/amp/2#issuer-authority¶
https://humanjudgment.org/jep/profiles/amp/2#delegatee¶
https://humanjudgment.org/jep/profiles/amp/2#time-validity¶
https://humanjudgment.org/jep/profiles/amp/2#audience¶
https://humanjudgment.org/jep/profiles/amp/2#termination-status¶
https://humanjudgment.org/jep/profiles/amp/2#usage-status¶
https://humanjudgment.org/jep/profiles/amp/2#request-scope¶
https://humanjudgment.org/jep/profiles/amp/2#subdelegation¶
https://humanjudgment.org/jep/profiles/amp/2#evidence¶
https://humanjudgment.org/jep/profiles/amp/2#policy¶
Check statuses use the JEP conformance values:¶
AMP-2 does not define a cumulative validation level.¶
For the requested AMP validation context:¶
valid means every required AMP check passed or was not applicable;¶
invalid means at least one required AMP check failed;¶
indeterminate means no required check failed but at least one required check is unsupported, not checked, or indeterminate.¶
A validator MUST report which checks were required and which statuses were obtained.¶
A Mandate Verifier SHOULD:¶
what.profile is the AMP-2 identifier;¶
what.delegatee and what.scope;¶
aud when required;¶
A validator MUST NOT report Action Decision allow solely because Mandate Status is valid.¶
A JEP V event MAY record an AMP evaluation.¶
The V event MUST satisfy JEP-Core V requirements, including ref, verification_scope, and result.¶
A profile-defined AMP verification scope SHOULD use a collision-resistant identifier derived from the AMP-2 profile identifier.¶
Examples include:¶
https://humanjudgment.org/jep/profiles/amp/2#mandate-validation¶
https://humanjudgment.org/jep/profiles/amp/2#reservation-status¶
https://humanjudgment.org/jep/profiles/amp/2#consumption-status¶
https://humanjudgment.org/jep/profiles/amp/2#receipt-binding¶
A V event MUST NOT imply evaluation beyond its declared scope.¶
A V result value is the semantic result of that declared verification scope. It MUST NOT be confused with the independent validator check-status vocabulary used in Section 11.¶
Subdelegation is not allowed unless the parent descriptor explicitly permits it.¶
A child mandate MUST identify the parent Mandate Identity.¶
A child mandate MUST NOT expand scope or relax constraints unless the parent descriptor and applicable domain profile explicitly permit that change.¶
Chain reconstruction, cycle analysis, complete-log assumptions, and causal or responsibility interpretation belong to a chain profile or external system.¶
AMP-2 defines only the mandate-level comparison rules required to decide whether a child remains within the parent mandate.¶
When parent termination is intended to affect child eligibility, the parent descriptor or domain profile MUST define that rule explicitly. No cascade is implied by JEP-Core or by AMP-2 merely because a parent reference exists.¶
AMP-2 is primarily a pre-action mandate profile.¶
A receipt or post-action evidence record SHOULD identify Mandate Identity.¶
When the exact issuance artifact matters, the receipt MAY additionally bind the Mandate Artifact Hash.¶
A receipt MAY also reference:¶
A receipt MUST NOT claim that legal, policy, factual, or external-result requirements were satisfied unless the receipt or referenced evidence supports that claim under an identified verification or policy scope.¶
JEP-AMP-2 is cross-domain and does not replace domain protocols.¶
A payment, procurement, healthcare, identity, data-access, or other domain profile MAY define a mapping between AMP and its native mandate or authorization object.¶
Such a mapping SHOULD state:¶
JEP-AMP-2 MUST NOT define payment clearing, settlement, funds movement, medical authorization, legal effect, or another domain's native execution semantics.¶
A local gateway MAY return decisions such as allow, deny, review, or indeterminate, but such values are relying-party decisions and are not global AMP validity values.¶
A system MAY publish an AMP capability declaration.¶
Example:¶
{
"jep_core": "0.7",
"amp_profiles": ["https://humanjudgment.org/jep/profiles/amp/2"],
"roles": [
"mandate_producer",
"mandate_verifier",
"gateway_evaluator"
],
"validation_modes": [
"archival",
"acceptance",
"policy"
],
"amp_checks": [
"https://humanjudgment.org/jep/profiles/amp/2#descriptor",
"https://humanjudgment.org/jep/profiles/amp/2#issuer-authority",
"https://humanjudgment.org/jep/profiles/amp/2#termination-status",
"https://humanjudgment.org/jep/profiles/amp/2#request-scope"
],
"reservation_supported": true
}
¶
A capability declaration is descriptive. It does not prove conformance, authority, certification, or legal competence.¶
Unsupported required capabilities MUST NOT be silently downgraded to a successful AMP result.¶
A conforming AMP-2 Mandate Producer MUST:¶
A conforming AMP-2 Mandate Verifier MUST:¶
A gateway that claims AMP-2 Gateway Evaluator capability MUST perform Mandate Verification before making a local Action Decision.¶
If the local Action Decision relies on the AMP mandate as authorization evidence, the gateway MUST NOT return allow when Mandate Status is invalid or indeterminate.¶
A gateway MAY allow an action on an independent non-AMP basis, but it MUST report that AMP was not the authorization basis for that decision and MUST NOT present the result as AMP-authorized.¶
Its local Action Decision MUST be labeled as local or domain-specific and MUST NOT be presented as a universal AMP authorization result.¶
AMP failures SHOULD identify both the profile check and stable error code.¶
Initial recommended error codes include:¶
AMP_ERR_PROFILE_BINDING¶
AMP_ERR_DESCRIPTOR¶
AMP_ERR_ISSUER_AUTHORITY¶
AMP_ERR_DELEGATEE¶
AMP_ERR_TIME¶
AMP_ERR_AUDIENCE¶
AMP_ERR_TERMINATED¶
AMP_ERR_USAGE_EXHAUSTED¶
AMP_ERR_REQUEST_SCOPE¶
AMP_ERR_SUBDELEGATION¶
AMP_ERR_EVIDENCE¶
AMP_ERR_POLICY¶
AMP_ERR_REFERENCE¶
AMP_ERR_UNSUPPORTED_CAPABILITY¶
AMP test vectors SHOULD include:¶
delegatee;¶
scope;¶
Stateful consumption, termination, and reservation vectors SHOULD use the stateful test-harness conventions defined by JEP Conformance.¶
A valid signature does not establish issuer authority, Mandate Status, or Action Decision.¶
Implementations MUST validate Core status, AMP descriptor structure, issuer/principal authority, validity time, relevant audience requirements, termination status, usage state where applicable, subdelegation controls, and required policy or evidence before relying on a mandate.¶
Event Identity and Event Hash confusion can cause incorrect revocation, consumption, or receipt binding. Logical mandate references MUST use Mandate Identity. Exact artifact checks MAY additionally use Event Hash.¶
Single-use mandates require concurrency-safe reservation or consumption. Core idempotent acceptance alone is insufficient.¶
Relying parties MUST NOT silently broaden action, target, scope, constraints, or subdelegation rights.¶
A failed or unavailable required trust, policy, evidence, reservation, or termination check MUST NOT be converted into successful Mandate Status.¶
Action mandates can expose business intent, organizational relationships, authority structures, customer or supplier references, resource identifiers, transaction context, and risk policy.¶
Implementations SHOULD minimize sensitive data in the descriptor and SHOULD reference external evidence when embedding it is unnecessary.¶
Stable Mandate Identity, actor identifiers, policy references, and receipt bindings can enable cross-context correlation.¶
Domain profiles SHOULD define retention, disclosure, encryption, selective disclosure, and redaction rules appropriate to their context.¶
This document requests no IANA actions.¶
https://humanjudgment.org/jep/profiles/amp/2 and the profile-specific identifiers derived from it are publisher-controlled HTTPS URI identifiers. They are not IANA-registered URN namespace values.¶
A future registry specification may register JEP profile identifiers, profile checks, verification scopes, and error codes.¶
Major changes from draft-wang-jep-action-mandate-profile-01:¶
urn:jep:profile:amp:1 identifier with the publisher-controlled HTTPS profile identifier https://humanjudgment.org/jep/profiles/amp/2;¶
(who,id);¶
what object;¶
scope REQUIRED to match JEP-Core D requirements;¶
validity.not_before, usage, constraints, policy_ref, delegation, and termination;¶
validity.expires_at for bounded AMP-2 mandates;¶
issuer field; issuer is Core who;¶
conditional from validator check statuses;¶
ref, verification_scope, and result;¶
invalid or indeterminate Mandate Status while allowing separately labeled non-AMP authorization;¶