Individual Submission S. Das Internet-Draft Independent Intended status: Informational 16 September 2026 Expires: 20 March 2027 Illustrative Codes Are Not a Namespace: Registries for Execution- Finality Consequence Classes, Sink Types, Act Types, Failure Codes, Profiles, and Media Types draft-das-ef-registries-01 Abstract The execution-finality family uses a shared vocabulary: Candidate Act, Execution Handle, Finality Sink, consume, and Finality Receipt [DAS-HANDLE] [DAS-PROTOCOL]. Each profile currently invents overlapping labels for the same ideas — FINANCIAL, SETTLEMENT, EF- 005, SINGLE_USE — and then states that the codes are illustrative and not IANA assignments. Two implementations can therefore emit the same token string with different meaning, or different strings for the same deny reason. Existing IANA registries already name adjacent objects. JWT and CWT claim names [RFC7519] [RFC8392], OAuth parameters [RFC6749] [RFC7591], HTTP problem types [RFC9457], media types, RATS EAT claims, and SCITT statement types [RFC9943] solve identity, token, and transparency naming. They do not allocate consequence class, sink type, act type, handle reuse policy, execution-finality failure code, or finality-profile identifiers. This document proposes those registries and an initial allocation drawn from the family drafts. It does not decide which acts should be authorized. It does not replace OAuth error codes, HTTP status codes, or application problem types. A registered code is a shared name for a machine-readable condition; it is not a legal classification and not evidence that any named product implements the condition. Until IANA action occurs, codes in this document and in companion drafts remain provisional. Implementations MUST treat foreign namespaces as distinct. Criticism of the registry split, the initial code list, the registration policy, and the claim that a new namespace is required at all is explicitly invited. Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79. Das Expires 20 March 2027 [Page 1] Internet-Draft EF Registries September 2026 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 20 March 2027. Copyright Notice 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. Table of Contents 1. What This Version (-01) Contains . . . . . . . . . . . . . . 3 1.1. Contents of -01 . . . . . . . . . . . . . . . . . . . . . 3 1.2. Changes from -00 . . . . . . . . . . . . . . . . . . . . 4 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Vulnerability: The Same String, Two Meanings . . . . . . 4 2.2. Existing Mechanisms Already Name Adjacent Objects . . . . 5 2.3. Why the Residual Gap Can Remain . . . . . . . . . . . . . 5 2.4. What This Document Introduces . . . . . . . . . . . . . . 5 3. Conventions and Requirements Language . . . . . . . . . . . . 6 4. Direct Question: What Problem Does a Registry Solve? . . . . 6 5. Motivating Scenario: One Agent, Three Sinks, Three Dialects . . . . . . . . . . . . . . . . . . . . . . . . 6 6. Design Goals and Non-Goals . . . . . . . . . . . . . . . . . 7 7. Existing Registries and the Proposed Delta . . . . . . . . . 7 8. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 9. Namespace Rules . . . . . . . . . . . . . . . . . . . . . . . 8 10. Where Registry Values Appear . . . . . . . . . . . . . . . . 8 11. Consequence Class Registry . . . . . . . . . . . . . . . . . 9 12. Sink Type Registry . . . . . . . . . . . . . . . . . . . . . 11 13. Act Type Registry . . . . . . . . . . . . . . . . . . . . . . 11 Das Expires 20 March 2027 [Page 2] Internet-Draft EF Registries September 2026 14. Reuse Policy Registry . . . . . . . . . . . . . . . . . . . . 12 15. Decision and Consume-Outcome Registries . . . . . . . . . . . 13 16. Failure Code Registry . . . . . . . . . . . . . . . . . . . . 13 17. Profile Identifier Registry . . . . . . . . . . . . . . . . . 15 18. Media Types . . . . . . . . . . . . . . . . . . . . . . . . . 15 19. Optional JWT / CWT Claim Names . . . . . . . . . . . . . . . 16 20. Optional HTTP Authentication Scheme . . . . . . . . . . . . . 16 21. Mapping to Existing Error Channels . . . . . . . . . . . . . 16 22. Formal Consistency Rules . . . . . . . . . . . . . . . . . . 17 23. Hash Function and Formal Tools . . . . . . . . . . . . . . . 18 24. Registration State Machine . . . . . . . . . . . . . . . . . 19 25. Illustrative Pseudocode . . . . . . . . . . . . . . . . . . . 19 25.1. Validate Registry Fields on a CAD . . . . . . . . . . . 19 25.2. Emit a Registered Reason Code . . . . . . . . . . . . . 19 25.3. Map to HTTP Problem Details . . . . . . . . . . . . . . 20 26. Proposed Registration Policy . . . . . . . . . . . . . . . . 20 27. Industrial Relevance and Public-Roadmap Alignment . . . . . . 21 28. Questions to the IETF Community . . . . . . . . . . . . . . . 21 29. Potential IETF Discussion Venues . . . . . . . . . . . . . . 22 29.1. DISPATCH . . . . . . . . . . . . . . . . . . . . . . . . 22 29.2. OAuth . . . . . . . . . . . . . . . . . . . . . . . . . 22 29.3. HTTPAPI . . . . . . . . . . . . . . . . . . . . . . . . 22 29.4. RATS . . . . . . . . . . . . . . . . . . . . . . . . . . 22 29.5. SCITT . . . . . . . . . . . . . . . . . . . . . . . . . 22 29.6. WIMSE . . . . . . . . . . . . . . . . . . . . . . . . . 23 29.7. SAAG . . . . . . . . . . . . . . . . . . . . . . . . . . 23 29.8. No Presumed Home . . . . . . . . . . . . . . . . . . . . 23 30. Relationship to Other Execution-Finality Internet-Drafts . . 23 31. Security Considerations . . . . . . . . . . . . . . . . . . . 23 32. Privacy Considerations . . . . . . . . . . . . . . . . . . . 24 33. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 24 34. Criticism, Corrections, and Review Invited . . . . . . . . . 25 35. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . 25 36. Normative References . . . . . . . . . . . . . . . . . . . . 25 37. Informative References . . . . . . . . . . . . . . . . . . . 25 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 27 1. What This Version (-01) Contains This Internet-Draft is draft-das-ef-registries-01. It proposes the shared namespaces used by [DAS-HANDLE] and [DAS-COMPOSITE]: consequence class, sink type, act type, reuse policy, decision, consume outcome, failure codes, profile identifiers, and candidate media types. It does not request IANA action in this revision. 1.1. Contents of -01 Das Expires 20 March 2027 [Page 3] Internet-Draft EF Registries September 2026 * Problem of uncoordinated "illustrative" codes and the residual gap after JWT, OAuth errors, and RFC 9457. * Initial tables for classes, sinks, act types, reuse policies, decisions, consume outcomes, EF-nnn codes, and profiles. * Placeholder warning for urn:ietf:params:ef and the ef URI scheme. * Unknown public EF-nnn fails closed as EF-080 (intentional forward compatibility). * WellTyped identities, hash/algorithm pointer to the handle draft, and formal-tool note. * Industrial disclaimer, community questions, and per-WG venue subsections. 1.2. Changes from -00 * Document name and series info updated to -01. * PURPOSE / JURISDICTION / REVOCATION codes moved into 060-069 as EF-060, EF-061, EF-062. * Added EF-047 PARTIAL_COMMIT; EF-044 remains PATH_INCOMPLETE. * Decision registry now includes PREPARED, ABORTED, COMPENSATING, CONTAINED, UNKNOWN. * Consume outcomes now include RELEASED. * ENVELOPE identical replay default documented as forbidden. * Family reference titles aligned; handle and composite cited as -01. 2. Introduction 2.1. Vulnerability: The Same String, Two Meanings A sink that returns EF-005 and a second sink that returns AUTHORITY_ALREADY_USED may intend the same event. A third sink may use EF-005 for expired handles. A CAD that labels an act consequence_class=PHYSICAL may mean coil motion in one profile and printer dispatch in another. Without a shared namespace, verify/ consume receipts cannot be compared across vendors or across drafts in the same family. Das Expires 20 March 2027 [Page 4] Internet-Draft EF Registries September 2026 Sink A receipt: reason_code = EF-005 Sink B receipt: reason_code = EF-005 Observer: same code != same predicate Until a registry binds EF-005 to one definition, the receipt is local dialect, not an interoperable object. Figure 1: Uncoordinated codes prevent receipt comparison 2.2. Existing Mechanisms Already Name Adjacent Objects OAuth defines error members such as invalid_grant [RFC6749]. HTTP Problem Details defines a type URI for API errors [RFC9457]. JWT and CWT have claim-name registries [RFC7519] [RFC8392]. CoAP and HTTP have status codes. RATS/EAT and SCITT have their own typed statements. Those registries should be reused where the object really is an OAuth error, an HTTP problem, or a JWT claim. This document exists only for names that those registries do not currently define: consequence class, sink type, act type, reuse policy, execution-finality failure code, finality profile id, and compact media types for CAD / handle / receipt. 2.3. Why the Residual Gap Can Remain Companion drafts keep writing "illustrative, not IANA." That sentence is honest and also the interoperability failure. Profile catalogues for 6G, enterprise AI, CVID, silicon, and satellites multiply local enums. A handle implementation cannot declare which foreign codes it understands. 2.4. What This Document Introduces * A small set of IANA-facing registries with Expert Review as the default policy. * An initial allocation aligned with [DAS-HANDLE] and other family drafts. * A rule that unregistered codes MUST use a private prefix or a URI, not the EF- numeric space. Das Expires 20 March 2027 [Page 5] Internet-Draft EF Registries September 2026 * Media type and optional JWT/CWT claim names for the handle objects. * An explicit non-goal: this is not a policy ontology of all possible real-world effects. 3. Conventions and Requirements Language 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. 4. Direct Question: What Problem Does a Registry Solve? If two Finality Sinks emit receipts for the same denied effect, what shared identifiers let a relying party know they denied the same class of failure? Receipt_A.reason_code == Receipt_B.reason_code AND both codes are in the EF Failure Code registry ==> same registered predicate Otherwise the equality is coincidental. 5. Motivating Scenario: One Agent, Three Sinks, Three Dialects An agent issues a payout, a ledger write, and a notification. The payment sink returns EF-025. The MCP tool sink returns DESTINATION_MISMATCH. The mail sink returns HTTP 403 with invalid_scope. A coordinator cannot tell whether all three denied the same substitution or three different conditions. Candidate composite C | +--> settlement sink : EF-025 +--> tool sink : DESTINATION_MISMATCH +--> mail sink : invalid_scope Registry goal: map each local dialect to one registered failure code + one consequence class so the coordinator can fail closed on C. Figure 2: Composite act, uncoordinated deny codes Das Expires 20 March 2027 [Page 6] Internet-Draft EF Registries September 2026 6. Design Goals and Non-Goals The goal is a compact, extensible namespace for execution-finality objects so that CAD, Execution Handle, verify, consume, and receipt fields have one meaning across profiles. This document does not classify law, medicine, or weapons; does not assign severity scores that bind operators; does not replace HTTP, OAuth, or problem+json; does not require every private deployment to register; and does not freeze the companion architecture drafts. 7. Existing Registries and the Proposed Delta +=============+===================+===========================+ | Existing | Already names | Does not name | | namespace | | | +=============+===================+===========================+ | OAuth | Grant and token- | Sink consume and act- | | errors | endpoint failures | digest mismatch | +-------------+-------------------+---------------------------+ | HTTP status | Transport and API | Finality-specific reason | | / RFC 9457 | problem type | inside 403/409 | +-------------+-------------------+---------------------------+ | JWT / CWT | iss, aud, exp, | act_digest, sink_id, | | claims | cnf | reuse_policy as EF fields | +-------------+-------------------+---------------------------+ | RATS / EAT | Environment | Consequence class of a | | | claims | later act | +-------------+-------------------+---------------------------+ | SCITT | Statement / | Whether a receipt is a | | | receipt types | permit to effectuate | +-------------+-------------------+---------------------------+ | Media types | Generic JSON/CBOR | CAD, handle, pending, | | | | receipt types | +-------------+-------------------+---------------------------+ Table 1: Existing IANA or protocol namespace and residual naming question 8. Terminology Terms Candidate Act, Candidate Act Descriptor, Execution Handle, Finality Sink, Consume, and Finality Receipt are used as in [DAS-HANDLE]. *Consequence Class:* A registered label for the kind of external effect a Candidate Act would produce if permitted. Das Expires 20 March 2027 [Page 7] Internet-Draft EF Registries September 2026 *Sink Type:* A registered label for the kind of effectuation boundary. *Act Type:* A registered label for the kind of proposed operation, finer than consequence class. *Failure Code:* A registered identifier for a verify/consume/path failure predicate. *Profile Identifier:* A registered name for a named bundle of required CAD fields, reuse default, and assurance expectations. 9. Namespace Rules Public compact codes: EF-nnn failure codes (provisional until IANA) URI forms in examples: urn:ietf:params:ef:... ef:: are PLACEHOLDERS. Neither an IETF URN namespace under RFC 3553 nor an "ef" URI scheme is requested in this revision. Implementations MUST NOT treat those strings as registered identifiers. Private / experimental: EF-X-* MUST NOT be registered X- / uns: / urn:uuid: deployment-local Collision rule: unregistered use of EF-nnn is NOT interoperable and SHOULD be rejected by strict profiles. Registered names are case-sensitive strings in the compact form specified for each registry. Profiles MAY also carry the URI form in receipts. 10. Where Registry Values Appear Das Expires 20 March 2027 [Page 8] Internet-Draft EF Registries September 2026 CAD act_type -> Act Type registry consequence_class -> Consequence Class registry finality_sink.type -> Sink Type registry EH reuse_policy -> Reuse Policy registry profile_id -> Profile registry (optional) Receipt decision -> Decision registry consume_outcome -> Consume Outcome registry reason_code -> Failure Code registry Figure 3: Registry fields on CAD, handle, and receipt 11. Consequence Class Registry A consequence class is a coarse effect kind. It is not a risk rating and not a legal category. Profiles use it to select default reuse policy and required CAD fields. Das Expires 20 March 2027 [Page 9] Internet-Draft EF Registries September 2026 +================+==========================+================+ | Value | Meaning | Typical sink | +================+==========================+================+ | FINANCIAL | Balance, settlement, or | SETTLEMENT | | | rail post changes | | +----------------+--------------------------+----------------+ | PHYSICAL | Motion, energy, or | ACTUATION | | | process I/O changes | | +----------------+--------------------------+----------------+ | RF | Transmit, beam, or | RF_TRANSMIT | | | spectrum enablement | | +----------------+--------------------------+----------------+ | COMMUNICATIVE | Message send, call | EGRESS or | | | setup, or reachability | REACHABILITY | +----------------+--------------------------+----------------+ | DISCLOSURE | Release of held data or | RELEASE or | | | model information | EGRESS | +----------------+--------------------------+----------------+ | RENDER | Presentation to a | RENDER | | | display or media sink | | +----------------+--------------------------+----------------+ | CONTROL_PLANE | Live infra mutation | CONTROL_PLANE | | | (DNS, BGP, cluster, IAM) | | +----------------+--------------------------+----------------+ | IDENTITY | Credential issuance or | IDENTITY_ISSUE | | | privilege grant | | +----------------+--------------------------+----------------+ | MEMORY_WRITE | Durable agent memory or | MEMORY | | | corpus write | | +----------------+--------------------------+----------------+ | MODEL_RELEASE | Weight, adapter, or SMI | RELEASE | | | release | | +----------------+--------------------------+----------------+ | CLINICAL | Care-delivery order or | ACTUATION or | | | device setpoint | CLINICAL | +----------------+--------------------------+----------------+ | ADMINISTRATIVE | Recorded official or | ADMIN | | | eligibility effect | | +----------------+--------------------------+----------------+ | ERASURE | Required delete, hold, | DATA_LIFECYCLE | | | or export effect | | +----------------+--------------------------+----------------+ | COMPOSITE | Two or more classes that | COMPOSITE | | | must close together | | +----------------+--------------------------+----------------+ Table 2: Initial consequence classes Das Expires 20 March 2027 [Page 10] Internet-Draft EF Registries September 2026 CLINICAL is a technical effect class for care-delivery sinks. It is not a medical-device approval and not a clinical-safety standard. 12. Sink Type Registry +================+===========================================+ | Value | Boundary that first makes the effect real | +================+===========================================+ | SETTLEMENT | Payment or ledger post | +----------------+-------------------------------------------+ | TOOL_DISPATCH | Agent tool / MCP / function invoke | +----------------+-------------------------------------------+ | ACTUATION | ICS, robot, vehicle, or lab effector | +----------------+-------------------------------------------+ | RF_TRANSMIT | Radio or optical transmit enable | +----------------+-------------------------------------------+ | EGRESS | Organization or device outbound release | +----------------+-------------------------------------------+ | RELEASE | Model, secret, or dataset release | +----------------+-------------------------------------------+ | RENDER | Compositor, display, or media decoder | +----------------+-------------------------------------------+ | CONTROL_PLANE | Orchestrator, DNS, routing, or IAM commit | +----------------+-------------------------------------------+ | IDENTITY_ISSUE | Issuer of a usable credential | +----------------+-------------------------------------------+ | MEMORY | Durable memory or RAG write | +----------------+-------------------------------------------+ | REACHABILITY | Create or extend a contact path | +----------------+-------------------------------------------+ | ADMIN | Authoritative administrative record | +----------------+-------------------------------------------+ | DATA_LIFECYCLE | Erase, hold, or mandated export | +----------------+-------------------------------------------+ | COMPOSITE | Coordinator of N child sinks | +----------------+-------------------------------------------+ Table 3: Initial sink types 13. Act Type Registry Act types are optional finer labels. The initial set is small on purpose. Profiles SHOULD prefer consequence class plus operation fields when an act type would only duplicate a tool name. Das Expires 20 March 2027 [Page 11] Internet-Draft EF Registries September 2026 +==================+========================================+ | Value | Notes | +==================+========================================+ | PAYMENT_POST | Settlement instruction | +------------------+----------------------------------------+ | TOOL_CALL | Generic tool/function invoke | +------------------+----------------------------------------+ | SETPOINT_WRITE | Process or device setpoint | +------------------+----------------------------------------+ | RF_ENABLE | Enable a transmit path | +------------------+----------------------------------------+ | MESSAGE_SEND | Outbound message | +------------------+----------------------------------------+ | DATA_EGRESS | Copy or disclose held data | +------------------+----------------------------------------+ | OUTPUT_RELEASE | Model or inference output release | +------------------+----------------------------------------+ | WEIGHT_LOAD | Load or hot-swap model weights | +------------------+----------------------------------------+ | MEMORY_COMMIT | Durable memory write | +------------------+----------------------------------------+ | PLAN_APPLY | Control-plane apply of a prepared plan | +------------------+----------------------------------------+ | CREDENTIAL_ISSUE | Issue a usable token or cert | +------------------+----------------------------------------+ | RENDER_PRESENT | Present media to a surface | +------------------+----------------------------------------+ | ERASE_COMMIT | Commit a delete or hold | +------------------+----------------------------------------+ Table 4: Initial act types 14. Reuse Policy Registry +============+======================================================+ | Value | Rule | +============+======================================================+ | SINGLE_USE | First successful consume wins | +------------+------------------------------------------------------+ | COUNTED | Consume until max_uses | +------------+------------------------------------------------------+ | ENVELOPE | Repeat only inside declared bounds; | | | identical-digest replay forbidden | | | unless allow_identical_replay | +------------+------------------------------------------------------+ Table 5: Initial reuse policies Das Expires 20 March 2027 [Page 12] Internet-Draft EF Registries September 2026 High-consequence classes FINANCIAL, PHYSICAL, RF, MODEL_RELEASE, and CLINICAL SHOULD default to SINGLE_USE unless a profile documents why not. 15. Decision and Consume-Outcome Registries Sink-commit decisions used by [DAS-HANDLE]: EFFECTUATED, REJECTED. Coordinator and composite decisions used by [DAS-COMPOSITE]: NON_EFFECTIVE, PREPARED, ABORTED, COMPENSATING, CONTAINED, UNKNOWN. Consume outcomes: CONSUMED, RESERVED, RELEASED (reservation dropped on abort, no post), UNCHANGED, FAILED. 16. Failure Code Registry Codes are compact EF-nnn identifiers. Ranges are reserved to keep related failures adjacent. 002-019 authority / handle 020-039 act correspondence 040-059 sink / generation / path 060-069 policy / purpose / jurisdiction 070-079 escalation / human gate 080-089 fail-closed / availability of TCB 090-099 reserved 100-199 specified by later profiles 900-999 reserved for private experiments (MUST NOT be registered) +========+===========================+=============================+ | Code | Name | Predicate | +========+===========================+=============================+ | EF-002 | NO_FINALITY_AUTHORITY | No current handle or | | | | equivalent authority | +--------+---------------------------+-----------------------------+ | EF-003 | HANDLE_INTEGRITY_FAILURE | Handle signature or MAC | | | | fails | +--------+---------------------------+-----------------------------+ | EF-004 | HANDLE_EXPIRED | Handle or CAD past | | | | expires_at | +--------+---------------------------+-----------------------------+ | EF-005 | AUTHORITY_ALREADY_USED | Reuse policy exhausted | +--------+---------------------------+-----------------------------+ | EF-006 | REPLAY_DETECTED | Same act presented against | | | | consumed state | +--------+---------------------------+-----------------------------+ | EF-012 | SCOPE_MISMATCH | Key-binding, workload, or | Das Expires 20 March 2027 [Page 13] Internet-Draft EF Registries September 2026 | | | scope proof fails | +--------+---------------------------+-----------------------------+ | EF-020 | DESTINATION_MISMATCH | Live destination not bound | | | | destination | +--------+---------------------------+-----------------------------+ | EF-023 | ACT_DIGEST_MISMATCH | Reconstructed digest != | | | | handle digest | +--------+---------------------------+-----------------------------+ | EF-024 | AMOUNT_MISMATCH | Financial amount field | | | | diverged | +--------+---------------------------+-----------------------------+ | EF-025 | BENEFICIARY_MISMATCH | Payee / recipient diverged | +--------+---------------------------+-----------------------------+ | EF-026 | RAIL_MISMATCH | Settlement rail diverged | +--------+---------------------------+-----------------------------+ | EF-030 | MODE_FORBIDDEN | Device or process mode | | | | forbids the write | +--------+---------------------------+-----------------------------+ | EF-031 | INTERLOCK | Safety interlock open | +--------+---------------------------+-----------------------------+ | EF-033 | VALUE_ENVELOPE | Setpoint or argument | | | | outside envelope | +--------+---------------------------+-----------------------------+ | EF-040 | SINK_MISMATCH | Presented at a sink other | | | | than bound sink | +--------+---------------------------+-----------------------------+ | EF-041 | GENERATION_STALE | Policy or context | | | | generation moved | +--------+---------------------------+-----------------------------+ | EF-042 | REUSE_POLICY_VIOLATION | Reuse rule not satisfied | +--------+---------------------------+-----------------------------+ | EF-043 | ENVELOPE_EXCEEDED | Live CAD left the envelope | +--------+---------------------------+-----------------------------+ | EF-044 | PATH_INCOMPLETE | Alternate path can produce | | | | K | +--------+---------------------------+-----------------------------+ | EF-047 | PARTIAL_COMMIT | Required child posted while | | | | composite did not close | +--------+---------------------------+-----------------------------+ | EF-060 | PURPOSE_MISMATCH | Live purpose not the | | | | authorized purpose | +--------+---------------------------+-----------------------------+ | EF-061 | JURISDICTION_MISMATCH | Current JEC does not | | | | satisfy J_req | +--------+---------------------------+-----------------------------+ | EF-062 | REVOCATION_ACTIVE | Handle or basis revoked | | | | before commit | +--------+---------------------------+-----------------------------+ Das Expires 20 March 2027 [Page 14] Internet-Draft EF Registries September 2026 | EF-070 | ESCALATION_REQUIRED | Profile requires a further | | | | gate | +--------+---------------------------+-----------------------------+ | EF-080 | FAIL_CLOSED | Required check unavailable; | | | | no effect | +--------+---------------------------+-----------------------------+ | EF-081 | CONSUME_STATE_UNAVAILABLE | Consume store cannot be | | | | used safely | +--------+---------------------------+-----------------------------+ Table 6: Initial failure codes 17. Profile Identifier Registry A profile identifier names a bundle, not a vendor. Initial values are architecture bundles from the family. Domain catalogues SHOULD reuse these rather than mint a new profile per industry press release. +========================+=======================================+ | Value | Bundle | +========================+=======================================+ | ef-handle-strict | Reconstruct + sink bind + SINGLE_USE | | | default + fail closed | +------------------------+---------------------------------------+ | ef-handle-envelope | Strict verify with documented | | | envelope reuse | +------------------------+---------------------------------------+ | ef-handle-mitigation | Handle present but path coverage | | | incomplete; must not claim prevention | +------------------------+---------------------------------------+ | ef-jurisdiction-strict | Handle plus current JEC dimensions | +------------------------+---------------------------------------+ | ef-purpose-strict | Handle plus purpose binding | +------------------------+---------------------------------------+ | ef-path-complete | Handle plus declared complete path | | | inventory | +------------------------+---------------------------------------+ Table 7: Initial profile identifiers 18. Media Types This document requests, if the community agrees to proceed, registration of: Das Expires 20 March 2027 [Page 15] Internet-Draft EF Registries September 2026 application/ef-cad+json application/ef-handle+json application/ef-pending+json application/ef-receipt+json application/ef-cad+cbor application/ef-handle+cbor application/ef-receipt+cbor Until registration, implementations MAY use these strings only in private deployments and SHOULD include a profile_id. 19. Optional JWT / CWT Claim Names If a profile encodes an Execution Handle as JWT or CWT, the following claim names are proposed. They MUST NOT collide with registered JWT/ CWT claims. This document does not itself complete that IANA request; it records the intended names for review. ef_act_digest ef_sink_id ef_reuse_policy ef_profile_id ef_generations ef_candidate_act_id Standard iss, exp, nbf, jti, and cnf remain the existing registries' objects. This draft does not redefine them. 20. Optional HTTP Authentication Scheme [DAS-HANDLE] illustrates Authorization: EFHandle .... That scheme name is provisional. A later revision may request an HTTP authentication scheme registration. This -00 does not. 21. Mapping to Existing Error Channels A sink that speaks HTTP SHOULD still use an appropriate status code (typically 403 or 409) and MAY include an RFC 9457 problem document whose type URI is the URI form of the EF failure code. OAuth token endpoints SHOULD keep OAuth errors for token issuance and use EF codes only at the effectuation sink. Das Expires 20 March 2027 [Page 16] Internet-Draft EF Registries September 2026 HTTP 403 Content-Type: application/problem+json { "type": "urn:ietf:params:ef:failure:EF-023", "title": "ACT_DIGEST_MISMATCH", "status": 403, "ef_handle_id": "...", "ef_sink_id": "core-post-eu-1" } 22. Formal Consistency Rules Let R_class, R_sink, R_act, R_reuse, R_dec, R_out, R_fail, R_prof be the eight provisional tables. The identities below are the same membership tests as the validation pseudocode. WellTyped(CAD) iff CAD.consequence_class in R_class and CAD.sink_type in R_sink and (CAD.act_type = bot or CAD.act_type in R_act) UnknownPublic(code) iff code matches EF-nnn, nnn in [002,899] and code notin R_fail Strict: UnknownPublic(code) => reason = EF-080 and not Effect Das Expires 20 March 2027 [Page 17] Internet-Draft EF Registries September 2026 WellTyped(CAD) := CAD.consequence_class in ConsequenceClassRegistry AND CAD.finality_sink.sink_type in SinkTypeRegistry AND (CAD.act_type absent OR CAD.act_type in ActTypeRegistry) WellTyped(EH) := EH.reuse_policy in ReusePolicyRegistry AND (EH.profile_id absent OR EH.profile_id in ProfileRegistry) WellTyped(Receipt) := Receipt.decision in DecisionRegistry AND Receipt.consume_outcome in ConsumeOutcomeRegistry AND (Receipt.reason_code absent OR Receipt.reason_code in FailureCodeRegistry) UnknownPublicCode := compact form looks like EF-nnn AND code not registered AND not in 900-999 private range Strict profile: UnknownPublicCode ==> treat as EF-080 FAIL_CLOSED rather than as a vendor extension. This fail-closed rule is intentional forward compatibility: a strict sink that has not yet learned a later-registered public EF-nnn MUST refuse rather than guess. Operators who need to accept a newly registered code MUST update the local table. Mitigation profiles MAY log-and-continue; they MUST NOT call that behavior the strict profile. 23. Hash Function and Formal Tools This document names codes; it does not define d(C). The Act Digest hash, canonicalization, SHA-256 default, and collision-resistance argument live in [DAS-HANDLE]. A receipt that carries a digest MUST also carry the algorithm name used to produce it. Formal verification tools are not required to use these tables. A TLA+ or Alloy model of a sink SHOULD treat WellTyped and UnknownPublic => EF-080 as invariants of the strict profile. Registry membership is not a security proof; it is a precondition the handle and composite models assume when they mention EF-nnn. Das Expires 20 March 2027 [Page 18] Internet-Draft EF Registries September 2026 24. Registration State Machine +------------------+ | PRIVATE / EF-X-* | +--------+---------+ | specification + review v +------------------+ | PROVISIONAL | | (this draft) | +--------+---------+ | IANA expert review v +------------------+ | REGISTERED | +--------+---------+ | breaking semantic change v +------------------+ | DEPRECATED + | | successor code | +------------------+ A registered code MUST NOT silently change predicate. Figure 4: From private code to registered code 25. Illustrative Pseudocode 25.1. Validate Registry Fields on a CAD function validate_cad_registries(cad, tables): if cad.consequence_class not in tables.consequence: return FAIL("unregistered consequence_class") if cad.finality_sink.sink_type not in tables.sink: return FAIL("unregistered sink_type") if cad.act_type and cad.act_type not in tables.act: return FAIL("unregistered act_type") return PASS 25.2. Emit a Registered Reason Code Das Expires 20 March 2027 [Page 19] Internet-Draft EF Registries September 2026 function reason(code, tables): if code in tables.failure: return { compact: code, name: tables.failure[code].name, uri: "urn:ietf:params:ef:failure:" + code } if matches_ef_numeric(code) and not private_range(code): return fail_closed("EF-080", detail="unknown public failure code") return { compact: code, name: "PRIVATE", uri: null } 25.3. Map to HTTP Problem Details function to_problem(receipt): r = reason(receipt.reason_code, tables) status = 409 if r.compact == "EF-005" else 403 return { type: r.uri, title: r.name, status: status, ef_decision: receipt.decision, ef_consume_outcome: receipt.consume_outcome } 26. Proposed Registration Policy Unless the community directs otherwise, the proposed policy for all EF registries in this document is Expert Review [RFC8126]. Media types follow the normal media-type process. Experts SHOULD reject: duplicate predicates under a new name; codes that encode a vendor product; codes that assert a legal conclusion; and changes that alter the predicate of an already registered value. New semantics get a new code. Old codes may be marked Deprecated. Das Expires 20 March 2027 [Page 20] Internet-Draft EF Registries September 2026 27. Industrial Relevance and Public-Roadmap Alignment Agent platforms, clouds, PSPs, and silicon vendors already ship local enums for deny reasons and tool categories. A public registry is useful only if two of those stacks need to read each other's receipts. This section does not claim that any named company lacks a namespace or should adopt these codes. Named products are not described as implementers of this draft. Complementary reading: MCP tool names are tool identifiers, not consequence classes. Copilot connector errors are product errors, not EF failure codes. OAuth invalid_scope remains an OAuth error. NVIDIA attestation result types remain RATS/EAT objects. A rail decline code remains a rail code unless a profile explicitly maps it to an EF code at the SETTLEMENT sink. MCP / Copilot tool name != consequence class OAuth invalid_scope != EF-023 PSP / rail decline != EF failure code (unless mapped) Attestation result type != consume outcome Named organizations are not asserted to have reviewed, implemented, or endorsed this registry. Corrections of mappings and requests to remove a name are invited. Silence is not agreement. 28. Questions to the IETF Community Criticism, including the conclusion that no new registry is needed, is a successful review outcome. 1. Is a new EF namespace justified, or should failure codes live only as RFC 9457 type URIs under a vendor or draft tree? 2. Is Expert Review the right policy, or Specification Required, or First Come First Served for some tables? 3. Should consequence class and sink type be one table? 4. Is CLINICAL an acceptable technical class, or is it too close to a regulated domain name? 5. Should COMPOSITE be a class, a sink type, both, or deferred to a later composite-finality draft? 6. Are the initial EF-nnn assignments stable enough to freeze, or should -00 keep them all Provisional? Das Expires 20 March 2027 [Page 21] Internet-Draft EF Registries September 2026 7. Should JWT/CWT claim names be requested now or only after the handle encoding is chosen? 8. Should an HTTP authentication scheme be requested, or is that premature? 9. How should private deployments avoid colliding with later public allocations? 10. Which existing IANA registry is the closest overlap this draft underestimates? 11. Should this document be merged into draft-das-execution-handle instead of standing alone? 12. Which venue should own any eventual IANA request: dispatch first, then SEC or ART? 29. Potential IETF Discussion Venues This document does not claim that any named group should adopt the work. Overlap review should come before an IANA request. 29.1. DISPATCH The registries cut across OAuth, HTTP, RATS, and SCITT. DISPATCH is the natural first discussion venue if no WG claims the namespace. 29.2. OAuth Relevant if EF codes or handle claims are profiled onto tokens. OAuth should not be asked to own consequence classes for actuation or RF. 29.3. HTTPAPI Relevant to problem+json mapping and any later authentication-scheme request. Not a home for sink-type semantics. 29.4. RATS Relevant only to keep EAT/attestation claim names from colliding with proposed ef_* claims. RATS should not own FINANCIAL vs PHYSICAL. 29.5. SCITT Relevant if Finality Receipts are SCITT statements and need a statement type. SCITT should not own consume-state failure codes. Das Expires 20 March 2027 [Page 22] Internet-Draft EF Registries September 2026 29.6. WIMSE Relevant to workload identifiers inside CAD.actor, not to the failure namespace itself. 29.7. SAAG Useful for whether a new security-area namespace is justified. SAAG does not adopt documents. 29.8. No Presumed Home An individual -00 that requests IANA too early will fail. This version specifies the tables and policy so they can be rejected cleanly. 30. Relationship to Other Execution-Finality Internet-Drafts [DAS-HANDLE] defines the objects that carry these fields. This document names the fields' allowed values. Domain drafts SHOULD reference these registries instead of minting parallel enums. DAS-PROTOCOL architecture: computation is not authority DAS-HANDLE wire objects that carry the fields this document allowed values DAS-COMPOSITE uses COMPOSITE class/type, EF-044 PATH_INCOMPLETE, EF-047 PARTIAL_COMMIT Predicate drafts that SHOULD reuse codes, not fork them: DAS-STATE, DAS-REVOCATION, DAS-PATH, DAS-JURISDICTION, DAS-PURPOSE Domain drafts that SHOULD cite this registry: DAS-AGENTIC / DAS-TOOL, payment, OT/actuation, 6G/NTN, enterprise-AI, silicon, CVID profiles See also [DAS-PROTOCOL], [DAS-COMPOSITE], [DAS-JURISDICTION], [DAS-PATH], [DAS-STATE], [DAS-REVOCATION], [DAS-PURPOSE], and [DAS-AGENTIC]. 31. Security Considerations A registry does not enforce finality. It only makes failures comparable. Security-relevant risks of the namespace itself include: * Colliding public codes with private meanings (mitigate with the unknown-public-code fail-closed rule). Das Expires 20 March 2027 [Page 23] Internet-Draft EF Registries September 2026 * Using a coarse class to hide a finer substitution (amount mismatch reported only as SCOPE_MISMATCH). * Treating a registered profile_id as proof that path coverage exists. * Stable reason codes that leak destination or act class in receipts. 32. Privacy Considerations Consequence class, act type, and failure code can reveal that a financial, clinical, or disclosure act was attempted. Receipts SHOULD omit unused fields and MAY return a coarse code to untrusted callers while logging the registered fine code locally. 33. IANA Considerations This version does not request IANA action. It defines candidate tables and a proposed Expert Review policy so that a later revision, if the community agrees, can request: * Execution-Finality Consequence Classes * Execution-Finality Sink Types * Execution-Finality Act Types * Execution-Finality Reuse Policies * Execution-Finality Decisions * Execution-Finality Consume Outcomes * Execution-Finality Failure Codes * Execution-Finality Profile Identifiers * media types listed in Section 18 JWT/CWT claim names and an HTTP authentication scheme are explicitly not requested in this revision. Das Expires 20 March 2027 [Page 24] Internet-Draft EF Registries September 2026 34. Criticism, Corrections, and Review Invited The most useful criticism is that an existing IANA registry already covers one or more of these tables. That evidence should delete the overlapping table, not be ignored. Equally useful is a demonstration that keeping "illustrative codes" in each domain draft is preferable to a shared namespace at this stage. 35. Conclusion Execution-finality objects are not interoperable while every profile assigns private meaning to EF-005 and FINANCIAL. This draft proposes a namespace, an initial allocation, and a conservative IANA posture: specify the tables now, request registrations only after the community accepts that a new namespace is required. ILLUSTRATIVE CODE != SHARED PREDICATE Same string != same meaning Register the predicate OR keep the dialect private and do not pretend it is IANA. 36. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, March 1997, . [RFC8126] IETF, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, June 2017, . [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, May 2017, . 37. Informative References [DAS-AGENTIC] Das, S., "Tool Selection Is Not Execution: Finality for Agentic Tool Dispatch in High-Risk AI Systems", Work in Das Expires 20 March 2027 [Page 25] Internet-Draft EF Registries September 2026 Progress, Internet-Draft, draft-das-agentic-execution- finality, September 2026, . [DAS-COMPOSITE] Das, S., "Partial Commit Is Not Finality: Composite Candidate Acts Across Multiple Finality Sinks", Work in Progress, Internet-Draft, draft-das-composite-execution- finality-01, September 2026, . [DAS-HANDLE] Das, S., "Possession Is Not Authority: Execution Handle, Sink Verification, Atomic Consumption, and Finality Receipt", Work in Progress, Internet-Draft, draft-das- execution-handle-01, September 2026, . [DAS-JURISDICTION] Das, S., "Authorized Here, Not Authorized There: Jurisdiction-Bound Execution Finality for Cross-Border and Sovereign Systems", Work in Progress, Internet-Draft, draft-das-jurisdiction-bound-execution-finality-00, September 2026, . [DAS-PATH] Das, S., "When the Gate Can Be Bypassed: Consequence-Path Completeness for Execution Finality", Work in Progress, Internet-Draft, draft-das-consequence-path-completeness, September 2026, . [DAS-PROTOCOL] Das, S., "The Missing Protocol Layer for the Agentic Internet: Computation Is Not Authority", Work in Progress, Internet-Draft, draft-das-execution-finality-protocol- layer-01, September 2026, . Das Expires 20 March 2027 [Page 26] Internet-Draft EF Registries September 2026 [DAS-PURPOSE] Das, S., "Data-Purpose Laundering Prevention: Execution- Finality for Preventing Cross-Domain Data Reuse", Work in Progress, Internet-Draft, draft-das-purpose-execution- finality, September 2026, . [DAS-REVOCATION] Das, S., "Revoked but Still Executable: Closing the Authorization-to-Effect Gap with Finality-Bound Revocation", Work in Progress, Internet-Draft, draft-das- finality-bound-revocation-00, September 2026, . [DAS-STATE] Das, S., "When Valid Authorization Becomes Stale: State and Policy Continuity at the Execution-Finality Boundary", Work in Progress, Internet-Draft, draft-das-state-policy- continuity-finality-00, September 2026, . [RFC6749] IETF, "The OAuth 2.0 Authorization Framework", RFC 6749, October 2012, . [RFC7519] IETF, "JSON Web Token (JWT)", RFC 7519, May 2015, . [RFC7591] IETF, "OAuth 2.0 Dynamic Client Registration Protocol", RFC 7591, July 2015, . [RFC8392] IETF, "CBOR Web Token (CWT)", RFC 8392, May 2018, . [RFC9457] IETF, "Problem Details for HTTP APIs", RFC 9457, July 2023, . [RFC9943] IETF, "An Architecture for Trustworthy and Transparent Digital Supply Chains", RFC 9943, June 2026, . Author's Address Das Expires 20 March 2027 [Page 27] Internet-Draft EF Registries September 2026 Sangam Das Independent Balasore Odisha India Phone: +91-9861363532 Email: info@sangamdas.com Das Expires 20 March 2027 [Page 28]