Internet-Draft EF Registries September 2026
Das Expires 20 March 2027 [Page]
Workgroup:
Individual Submission
Internet-Draft:
draft-das-ef-registries-01
Published:
Intended Status:
Informational
Expires:
Author:
S. Das
Independent

Illustrative Codes Are Not a Namespace: Registries for Execution-Finality Consequence Classes, Sink Types, Act Types, Failure Codes, Profiles, and Media Types

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.

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.

Table of Contents

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

  • 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.

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.
  • 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

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

Table 1: Existing IANA or protocol namespace and residual naming question
Existing namespace Already names Does not name
OAuth errors Grant and token-endpoint failures Sink consume and act-digest mismatch
HTTP status / RFC 9457 Transport and API problem type Finality-specific reason inside 403/409
JWT / CWT claims iss, aud, exp, cnf act_digest, sink_id, reuse_policy as EF fields
RATS / EAT Environment claims Consequence class of a later act
SCITT Statement / receipt types Whether a receipt is a permit to effectuate
Media types Generic JSON/CBOR CAD, handle, pending, receipt types

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.

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:<registry>:<name>
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

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.

Table 2: Initial consequence classes
Value Meaning Typical sink
FINANCIAL Balance, settlement, or rail post changes SETTLEMENT
PHYSICAL Motion, energy, or process I/O changes ACTUATION
RF Transmit, beam, or spectrum enablement RF_TRANSMIT
COMMUNICATIVE Message send, call setup, or reachability EGRESS or REACHABILITY
DISCLOSURE Release of held data or model information RELEASE or EGRESS
RENDER Presentation to a display or media sink RENDER
CONTROL_PLANE Live infra mutation (DNS, BGP, cluster, IAM) CONTROL_PLANE
IDENTITY Credential issuance or privilege grant IDENTITY_ISSUE
MEMORY_WRITE Durable agent memory or corpus write MEMORY
MODEL_RELEASE Weight, adapter, or SMI release RELEASE
CLINICAL Care-delivery order or device setpoint ACTUATION or CLINICAL
ADMINISTRATIVE Recorded official or eligibility effect ADMIN
ERASURE Required delete, hold, or export effect DATA_LIFECYCLE
COMPOSITE Two or more classes that must close together COMPOSITE

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

Table 3: Initial sink types
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

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.

Table 4: Initial act types
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

14. Reuse Policy Registry

Table 5: Initial reuse policies
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

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)
Table 6: Initial failure codes
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 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
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

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.

Table 7: Initial profile identifiers
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

18. Media Types

This document requests, if the community agrees to proceed, registration of:

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.

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
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.

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

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.

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?
  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.

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.

31. Security Considerations

A registry does not enforce finality. It only makes failures comparable. Security-relevant risks of the namespace itself include:

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:

JWT/CWT claim names and an HTTP authentication scheme are explicitly not requested in this revision.

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, , <https://www.rfc-editor.org/rfc/rfc2119>.
[RFC8126]
IETF, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, , <https://www.rfc-editor.org/rfc/rfc8126>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, , <https://www.rfc-editor.org/rfc/rfc8174>.

37. Informative References

[DAS-AGENTIC]
Das, S., "Tool Selection Is Not Execution: Finality for Agentic Tool Dispatch in High-Risk AI Systems", Work in Progress, Internet-Draft, draft-das-agentic-execution-finality, , <https://datatracker.ietf.org/doc/draft-das-agentic-execution-finality/>.
[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, , <https://datatracker.ietf.org/doc/html/draft-das-composite-execution-finality-01>.
[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, , <https://datatracker.ietf.org/doc/html/draft-das-execution-handle-01>.
[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, , <https://datatracker.ietf.org/doc/html/draft-das-jurisdiction-bound-execution-finality-00>.
[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, , <https://datatracker.ietf.org/doc/draft-das-consequence-path-completeness/>.
[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, , <https://datatracker.ietf.org/doc/draft-das-execution-finality-protocol-layer/>.
[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, , <https://datatracker.ietf.org/doc/draft-das-purpose-execution-finality/>.
[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, , <https://datatracker.ietf.org/doc/html/draft-das-finality-bound-revocation-00>.
[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, , <https://datatracker.ietf.org/doc/html/draft-das-state-policy-continuity-finality-00>.
[RFC6749]
IETF, "The OAuth 2.0 Authorization Framework", RFC 6749, , <https://www.rfc-editor.org/rfc/rfc6749>.
[RFC7519]
IETF, "JSON Web Token (JWT)", RFC 7519, , <https://www.rfc-editor.org/rfc/rfc7519>.
[RFC7591]
IETF, "OAuth 2.0 Dynamic Client Registration Protocol", RFC 7591, , <https://www.rfc-editor.org/rfc/rfc7591>.
[RFC8392]
IETF, "CBOR Web Token (CWT)", RFC 8392, , <https://www.rfc-editor.org/rfc/rfc8392>.
[RFC9457]
IETF, "Problem Details for HTTP APIs", RFC 9457, , <https://www.rfc-editor.org/rfc/rfc9457>.
[RFC9943]
IETF, "An Architecture for Trustworthy and Transparent Digital Supply Chains", RFC 9943, , <https://www.rfc-editor.org/rfc/rfc9943>.

Author's Address

Sangam Das
Independent
Balasore
Odisha
India