diff --git a/draft-nennemann-wimse-execution-context-00.html b/draft-nennemann-wimse-execution-context-00.html index 6ef1704..bd8094a 100644 --- a/draft-nennemann-wimse-execution-context-00.html +++ b/draft-nennemann-wimse-execution-context-00.html @@ -10,17 +10,18 @@ This document defines Execution Context Tokens (ECTs), an extension to the Workload Identity in Multi System Environments (WIMSE) architecture for distributed agentic workflows in regulated -environments. ECTs provide cryptographic proof of task execution -order, policy enforcement decisions, and compliance state across +environments. ECTs provide signed, structured records of task +execution order, policy evaluation outcomes, and compliance state +across agent-to-agent communication. By extending WIMSE Workload Identity Tokens with execution context claims in JSON Web Token (JWT) format, this specification enables regulated systems to maintain structured audit trails that support compliance verification. ECTs use a directed acyclic graph (DAG) structure to represent task dependencies, record policy evaluation outcomes at each decision -point, and integrate with WIMSE Workload Identity Tokens (WIT) and -Workload Proof Tokens (WPT) using the same signing model and -cryptographic primitives. A new HTTP header field, +point, and integrate with WIMSE Workload Identity Tokens (WIT) +using the same signing model and cryptographic primitives. A new +HTTP header field, Execution-Context, is defined for transporting ECTs alongside existing WIMSE headers. ECTs are a technical building block that supports, but does not by itself constitute, compliance with @@ -1275,17 +1276,18 @@ li > p:last-of-type:only-child {

This document defines Execution Context Tokens (ECTs), an extension to the Workload Identity in Multi System Environments (WIMSE) architecture for distributed agentic workflows in regulated -environments. ECTs provide cryptographic proof of task execution -order, policy enforcement decisions, and compliance state across +environments. ECTs provide signed, structured records of task +execution order, policy evaluation outcomes, and compliance state +across agent-to-agent communication. By extending WIMSE Workload Identity Tokens with execution context claims in JSON Web Token (JWT) format, this specification enables regulated systems to maintain structured audit trails that support compliance verification. ECTs use a directed acyclic graph (DAG) structure to represent task dependencies, record policy evaluation outcomes at each decision -point, and integrate with WIMSE Workload Identity Tokens (WIT) and -Workload Proof Tokens (WPT) using the same signing model and -cryptographic primitives. A new HTTP header field, +point, and integrate with WIMSE Workload Identity Tokens (WIT) +using the same signing model and cryptographic primitives. A new +HTTP header field, Execution-Context, is defined for transporting ECTs alongside existing WIMSE headers. ECTs are a technical building block that supports, but does not by itself constitute, compliance with @@ -1444,211 +1446,186 @@ regulatory frameworks.

  • -

    8.  Operational Modes

    - +

    8.  Audit Ledger Interface

  • -

    9.  Audit Ledger Interface

    +

    9.  Use Cases

  • -

    10Use Cases

    +

    10Security Considerations

  • -

    11Security Considerations

    +

    11Privacy Considerations

  • -

    12Privacy Considerations

    +

    12IANA Considerations

  • -

    13IANA Considerations

    +

    13References

  • -

    14References

    +

    Related Work

  • -

    Related Work

    +

    Implementation Guidance

  • -

    Implementation Guidance

    - +

    Regulatory Compliance Mapping

  • -

    Regulatory Compliance Mapping

    -
  • -
  • -

    Examples

    +

    Examples

  • -
  • -

    Acknowledgments

    +
  • +

    Acknowledgments

  • -
  • -

    Author's Address

    +
  • +

    Author's Address

  • @@ -1672,45 +1649,23 @@ Proof Tokens (WPT). The WIMSE service-to-service protocol each other across call chains using the Workload-Identity and Workload-Proof-Token HTTP headers.

    However, workload identity alone does not address execution -accountability. Knowing who performed an action does not prove +accountability. Knowing who performed an action does not record what was done, what policy was applied, or whether compliance -requirements were satisfied at each decision point.

    +requirements were evaluated at each decision point.

    Regulated environments increasingly deploy autonomous agents that coordinate across organizational boundaries. Multiple regulatory -frameworks motivate the need for structured execution records:

    - -

    This document defines an extension to the WIMSE architecture that +frameworks — including [EU-AI-ACT], [FDA-21CFR11], [MIFID-II], +and [DORA] — require structured, auditable records of automated +decision-making and execution (see Table 4 for a +detailed mapping).

    +

    This document defines an extension to the WIMSE architecture that addresses the gap between workload identity and execution accountability. WIMSE authenticates agents; this extension records -what they did, in what order, and what policy was evaluated.

    -

    As identified in [I-D.ni-wimse-ai-agent-identity], call context +what they did, in what order, and what policy was evaluated.

    +

    As identified in [I-D.ni-wimse-ai-agent-identity], call context in agentic workflows needs to be visible and preserved. ECTs provide a mechanism to address this requirement with cryptographic -assurances.

    +assurances.

    @@ -1766,11 +1721,7 @@ regulatory audit scenarios.

    An HTTP header for ECT transport (Section 5)

  • -

    Operational modes including ledger-optional deployment -(Section 8)

    -
  • -
  • -

    Audit ledger interface requirements (Section 9)

    +

    Audit ledger interface requirements (Section 8)

  • The following are out of scope and are handled by WIMSE:

    @@ -1992,23 +1943,23 @@ key identifier from the agent's WIT.[SPIFFE]).

  • -

    The ECT MUST be signed with the same private key used to -generate the agent's WPT.

    +

    The ECT MUST be signed with the same private key associated +with the agent's WIT.

  • The ECT signing algorithm (JOSE header "alg" parameter) MUST match the algorithm used in the corresponding WIT.

  • -

    When an agent makes an HTTP request to another agent, the three -tokens are carried in their respective HTTP header fields:

    +

    When an agent makes an HTTP request to another agent, the +Execution-Context header is carried alongside WIMSE identity +headers:

     HTTP Request from Agent A to Agent B:
       Workload-Identity:    <WIT for Agent A>
    -  Workload-Proof-Token: <WPT proving A controls key>
       Execution-Context:    <ECT recording what A did>
     
    @@ -2016,18 +1967,24 @@ HTTP Request from Agent A to Agent B: HTTP Header Stacking
    -

    The receiving agent (Agent B) verifies in order:

    -
      -
    1. -

      WIT and WPT (WIMSE layer): Proves who Agent A is and that the -request is authentic.

      +

      When a Workload Proof Token (WPT) is available per +[I-D.ietf-wimse-s2s-protocol], agents SHOULD include it +alongside the WIT and ECT. ECT verification does not depend +on the presence of a WPT; the ECT is independently verifiable +via the WIT public key.

      +

      The receiving agent (Agent B) verifies in order:

      +
        +
      1. +

        WIT (WIMSE layer): Verifies Agent A's identity within the +trust domain. WPT verification, if present, per +[I-D.ietf-wimse-s2s-protocol].

      2. -
      3. -

        ECT (this extension): Records what Agent A did, what policy was -evaluated, and what precedent tasks exist.

        +
      4. +

        ECT (this extension): Records what Agent A did, what policy was +evaluated, and what precedent tasks exist.

      5. -
      6. -

        Ledger: Appends the verified ECT to the audit ledger.

        +
      7. +

        Ledger: Appends the verified ECT to the audit ledger.

      @@ -2249,7 +2206,7 @@ evaluated for this task (e.g.,

      OPTIONAL. String. The result of the policy evaluation. When present, MUST be one of the values registered in the ECT Policy -Decision Values registry (Section 13.4). MUST be +Decision Values registry (Section 12.4). MUST be present when "pol" is present. Initial values are:

      model_version:
      @@ -2378,10 +2335,10 @@ use SPIFFE ID format. Note that this claim is self-asserted by the ECT issuer; witnesses listed here do not co-sign this ECT. For stronger assurance, witnesses SHOULD submit independent signed ECTs to the ledger attesting to their observation (see -Section 11.2.1). In regulated environments, +Section 10.2.1). In regulated environments, implementations SHOULD use witness attestation for critical decision points to mitigate the risk of single-agent false -claims. See also Section 11.2 for the security +claims. See also Section 10.2 for the security implications of self-asserted witness claims.

      @@ -2407,7 +2364,7 @@ action. MUST be present if "compensation_required" i Values SHOULD use structured identifiers (e.g., "policy_violation_in_parent_trade") rather than free-form text to minimize the risk of embedding sensitive information. See -Section 12.2 for privacy guidance. +Section 11.2 for privacy guidance. If "compensation_reason" is present, "compensation_required" MUST be true.

      @@ -2512,7 +2469,7 @@ format [RFC7515]. The val parts separated by period (".") characters.

      An agent sending a request to another agent includes the Execution-Context header alongside the WIMSE Workload-Identity -and Workload-Proof-Token headers:

      +header:

      @@ -2520,7 +2477,6 @@ and Workload-Proof-Token headers: GET /api/safety-check HTTP/1.1 Host: safety-agent.example.com Workload-Identity: eyJhbGci...WIT... -Workload-Proof-Token: eyJhbGci...WPT... Execution-Context: eyJhbGci...ECT...
      @@ -2558,12 +2514,8 @@ provides a cryptographically signed record of execution ordering, enabling auditors to reconstruct the complete workflow and verify that required predecessor tasks were recorded before dependent tasks.

      -

      DAG validation can be performed against an audit ledger (when -available) or against parent ECTs received inline via -Execution-Context headers (in point-to-point mode per -Section 8). The validation rules below use the term -"ECT store" to refer to either the ledger or the set of inline -parent ECTs available to the verifier.

      +

      DAG validation is performed against the audit ledger, which +serves as the authoritative store of previously verified ECTs.

      @@ -2632,15 +2584,14 @@ relationship has been established.
      -function validate_dag(ect, ect_store, clock_skew_tolerance):
      -  // ect_store: ledger or local cache of verified ECTs
      +function validate_dag(ect, ledger, clock_skew_tolerance):
         // Step 1: Uniqueness check
      -  if ect_store.contains(ect.jti, ect.wid):
      +  if ledger.contains(ect.jti, ect.wid):
           return error("ECT ID already exists")
       
         // Step 2: Parent existence and temporal ordering
         for parent_id in ect.par:
      -    parent = ect_store.get(parent_id)
      +    parent = ledger.get(parent_id)
           if parent is null:
             return error("Parent task not found: " + parent_id)
           if parent.iat >= ect.iat + clock_skew_tolerance:
      @@ -2648,14 +2599,14 @@ function validate_dag(ect, ect_store, clock_skew_tolerance):
       
         // Step 3: Cycle detection (with traversal limit)
         visited = set()
      -  result = has_cycle(ect.jti, ect.par, ect_store, visited,
      +  result = has_cycle(ect.jti, ect.par, ledger, visited,
                             max_ancestor_limit)
         if result is error or result is true:
           return error("Circular dependency or depth limit exceeded")
       
         return success
       
      -function has_cycle(target_jti, parent_ids, ect_store,
      +function has_cycle(target_jti, parent_ids, ledger,
                          visited, max_depth):
         if visited.size() >= max_depth:
           return error("Maximum ancestor traversal limit exceeded")
      @@ -2665,9 +2616,9 @@ function has_cycle(target_jti, parent_ids, ect_store,
           if parent_id in visited:
             continue
           visited.add(parent_id)
      -    parent = ect_store.get(parent_id)
      +    parent = ledger.get(parent_id)
           if parent is not null:
      -      result = has_cycle(target_jti, parent.par, ect_store,
      +      result = has_cycle(target_jti, parent.par, ledger,
                                 visited, max_depth)
             if result is error or result is true:
               return result
      @@ -2770,10 +2721,8 @@ present and that "pol_decision" is one of "approved",
                   

      Perform DAG validation per Section 6.

    2. -

      If all checks pass and an audit ledger is available, the ECT -SHOULD be appended to the audit ledger. In point-to-point -mode (Section 8), the verified ECT is retained -locally by the receiving agent.

      +

      If all checks pass, the ECT MUST be appended to the audit +ledger.

    If any verification step fails, the ECT MUST be rejected and the @@ -2782,7 +2731,7 @@ failure MUST be logged for audit purposes. Error mes ledger, to prevent information disclosure.

    When ECT verification fails during HTTP request processing, the receiving agent SHOULD respond with HTTP 403 (Forbidden) if the -WIT and WPT are valid but the ECT is invalid, and HTTP 401 +WIT is valid but the ECT is invalid, and HTTP 401 (Unauthorized) if the ECT signature verification fails. The response body SHOULD include a generic error indicator without revealing which specific verification step failed. The receiving @@ -2862,17 +2811,13 @@ function verify_ect(ect_jws, verifier_id, return reject("Invalid pol_decision value") // Validate DAG (against ledger or inline parent ECTs) - result = validate_dag(payload, ect_store, + result = validate_dag(payload, ledger, clock_skew_tolerance) if result is error: return reject("DAG validation failed") - // All checks passed - if ledger is available: - ledger.append(payload) - else: - // Point-to-point mode: retain locally - local_ect_cache.store(payload) + // All checks passed; append to ledger + ledger.append(payload) return accept

    @@ -2884,212 +2829,69 @@ function verify_ect(ect_jws, verifier_id, -
    -
    -

    -8. Operational Modes -

    -

    ECTs can be deployed in three operational modes depending on the -availability and requirements of the deployment environment. All -modes use the same ECT format and verification procedure; they -differ in how parent ECTs are resolved during DAG validation and -where verified ECTs are stored.

    -
    -
    -

    -8.1. Point-to-Point Mode -

    -

    In point-to-point mode, agents pass parent ECTs directly to -downstream agents via multiple Execution-Context HTTP headers. -No centralized ledger is required. The receiving agent verifies -each parent ECT independently and validates the DAG against the -set of ECTs received in the request.

    -

    This mode is suitable for:

    -
      -
    • -

      Cross-organizational workflows where no shared ledger exists

      -
    • -
    • -

      Lightweight deployments where infrastructure is constrained

      -
    • -
    • -

      Early adoption scenarios before ledger infrastructure is -available

      -
    • -
    -

    Limitations of point-to-point mode:

    -
      -
    • -

      No persistent audit trail unless agents independently retain -ECTs

      -
    • -
    • -

      Global replay detection relies solely on "jti" caches at each -agent; there is no centralized "jti" uniqueness check

      -
    • -
    • -

      The parent ECT chain grows with each hop, increasing HTTP -header size

      -
    • -
    • -

      Post-hoc audit reconstruction requires collecting ECTs from -multiple agents

      -
    • -
    -

    Agents operating in point-to-point mode MUST retain verified -parent ECTs for at least the duration of the workflow to support -DAG validation of downstream requests. Agents SHOULD persist -ECTs locally for audit purposes even when no centralized ledger -is available.

    -
    -
    -
    -
    -

    -8.2. Deferred Ledger Mode -

    -

    In deferred ledger mode, agents create and verify ECTs in-flight -using point-to-point delivery, and submit collected ECTs to an -audit ledger after the workflow completes or at periodic intervals.

    -

    This mode decouples real-time workflow execution from ledger -availability. DAG validation during execution uses inline parent -ECTs; full DAG validation against the complete workflow is -performed at ledger submission time.

    -

    Agents MUST include all collected ECTs when submitting to the -ledger. The ledger MUST re-validate the complete DAG upon -submission.

    -
    -
    -
    -
    -

    -8.3. Full Ledger Mode -

    -

    In full ledger mode, every verified ECT is immediately appended -to an audit ledger. DAG validation is performed against the -ledger, which serves as the authoritative ECT store. This is -the RECOMMENDED mode for regulated environments where persistent, -centralized audit trails are required.

    -
    -
    -
    -
    -
    +

    -9. Audit Ledger Interface +8. Audit Ledger Interface

    -
    -
    -

    -9.1. Overview -

    -

    Use of an audit ledger is RECOMMENDED for regulated environments -and any deployment requiring persistent, centralized audit trails. -ECTs are designed to be recorded in an immutable audit ledger for +

    ECTs are designed to be recorded in an immutable audit ledger for compliance verification and post-hoc analysis. This specification -defines the logical interface for the ledger but does not mandate +defines required properties for the ledger but does not mandate a specific storage technology. Implementations MAY use append-only logs, databases with cryptographic commitment schemes, distributed ledgers, or any storage mechanism that provides the -required properties.

    -
    -
    -
    -
    -

    -9.2. Required Properties -

    -

    An audit ledger implementation MUST provide:

    -
      -
    1. -

      Append-only semantics: Once an ECT is recorded, it MUST NOT be -modified or deleted.

      +required properties.

      +

      An audit ledger implementation MUST provide:

      +
        +
      1. +

        Append-only semantics: Once an ECT is recorded, it MUST NOT be +modified or deleted.

      2. -
      3. -

        Ordering: The ledger MUST maintain a total ordering of ECT -entries via a monotonically increasing sequence number.

        +
      4. +

        Ordering: The ledger MUST maintain a total ordering of ECT +entries via a monotonically increasing sequence number.

      5. -
      6. -

        Lookup by task ID: The ledger MUST support efficient retrieval -of ECT entries by "jti" value.

        +
      7. +

        Lookup by ECT ID: The ledger MUST support efficient retrieval +of ECT entries by "jti" value.

      8. -
      9. -

        Integrity verification: The ledger SHOULD provide a mechanism +

      10. +

        Integrity verification: The ledger SHOULD provide a mechanism to verify that no entries have been tampered with (e.g., -hash chains or Merkle trees).

        +hash chains or Merkle trees).

      11. -
      -

      The ledger SHOULD be maintained by an entity independent of the -workflow agents to reduce the risk of collusion.

      -
    -
    -
    -
    -

    -9.3. Ledger Entry Structure -

    -

    Each ledger entry is a logical record containing:

    -
    -
    -
    -
    -{
    -  "ledger_sequence": 42,
    -  "ect_jti": "550e8400-e29b-41d4-a716-446655440001",
    -  "agent_id": "spiffe://example.com/agent/clinical",
    -  "action": "recommend_treatment",
    -  "parents": [],
    -  "ect_jws": "eyJhbGciOiJFUzI1NiIs...<complete JWS>",
    -  "signature_verified": true,
    -  "verification_timestamp": "2026-02-24T15:42:31.000Z",
    -  "stored_timestamp": "2026-02-24T15:42:31.050Z"
    -}
    -
    -
    -
    Figure 8: -Ledger Entry Example -
    -
    -

    The "ect_jws" field contains the full JWS Compact Serialization -and is the authoritative record. The other fields ("agent_id", -"action", "parents") are convenience indexes derived from the -ECT payload; if they disagree with the JWS payload, the JWS -payload takes precedence. Implementations SHOULD validate that -convenience index fields match the corresponding values in the -JWS payload at write time to prevent desynchronization between -the authoritative JWS and the indexed fields.

    -
    -
    + +

    The ledger SHOULD be maintained by an entity independent of the +workflow agents to reduce the risk of collusion.

    -
    +

    -10. Use Cases +9. Use Cases

    -

    This section describes representative use cases demonstrating how +

    This section describes representative use cases demonstrating how ECTs provide execution records in regulated environments. These examples demonstrate ECT mechanics; production deployments would include additional domain-specific requirements beyond the scope -of this specification.

    -

    Note: task identifiers in this section are abbreviated for +of this specification.

    +

    Note: task identifiers in this section are abbreviated for readability. In production, all "jti" values are required to be -UUIDs per Section 4.2.2.

    +UUIDs per Section 4.2.2.

    -
    +

    -10.1. Medical Device SDLC Workflow +9.1. Medical Device SDLC Workflow

    -

    In a medical device software development lifecycle (SDLC), +

    In a medical device software development lifecycle (SDLC), AI agents assist across multiple phases from requirements analysis through release approval. Regulatory frameworks including [FDA-21CFR11] Section 11.10(e) and [EU-MDR] require audit trails documenting the complete development process for -software used in medical devices.

    +software used in medical devices.

    -
    -
    +
    +
     Agent A (Spec Reviewer):
       jti: task-001    par: []
    @@ -3119,28 +2921,28 @@ Human Release Manager:
       witnessed_by: [spiffe://meddev.example/audit/qa-observer-1]
     
    -
    Figure 9: +
    Figure 8: Medical Device SDLC Workflow
    -

    ECTs record that requirements were reviewed before implementation +

    ECTs record that requirements were reviewed before implementation began, that tests were executed against the implemented code, that the build artifact was validated, and that a human release manager explicitly approved the release. The DAG structure ensures no -phase was skipped or reordered.

    +phase was skipped or reordered.

    -
    +

    -10.1.1. FDA Audit with DAG Reconstruction +9.1.1. FDA Audit with DAG Reconstruction

    -

    During a regulatory audit, an FDA reviewer requests evidence of +

    During a regulatory audit, an FDA reviewer requests evidence of the development process for a specific software release. The auditing authority retrieves all ECTs sharing the same workflow identifier ("wid") from the audit ledger and reconstructs the -complete DAG:

    +complete DAG:

    -
    -
    +
    +
     task-001 (review_requirements_spec)
       |
    @@ -3157,46 +2959,46 @@ task-004 (build_release_artifact)
     task-005 (approve_release) [human, witnessed]
     
    -
    Figure 10: +
    Figure 9: Reconstructed DAG for FDA Audit
    -

    The reconstructed DAG provides cryptographic evidence that:

    +

    The reconstructed DAG provides cryptographic evidence that:

      -
    • -

      Each phase was executed by an identified and authenticated agent.

      +
    • +

      Each phase was executed by an identified and authenticated agent.

    • -
    • -

      Policy checkpoints were evaluated at every phase transition.

      +
    • +

      Policy checkpoints were evaluated at every phase transition.

    • -
    • -

      The execution sequence was maintained (no step was bypassed).

      +
    • +

      The execution sequence was maintained (no step was bypassed).

    • -
    • -

      A human-in-the-loop approved the final release, with independent -witness attestation.

      +
    • +

      A human-in-the-loop approved the final release, with independent +witness attestation.

    • -
    • -

      Timestamps and execution durations are recorded for each step.

      +
    • +

      Timestamps and execution durations are recorded for each step.

    -

    This can contribute to compliance with:

    +

    This can contribute to compliance with:

      -
    • -

      [FDA-21CFR11] Section 11.10(e): Computer-generated audit trails -that record the date, time, and identity of the operator.

      +
    • +

      [FDA-21CFR11] Section 11.10(e): Computer-generated audit trails +that record the date, time, and identity of the operator.

    • -
    • -

      [EU-MDR] Annex II: Technical documentation traceability for the -software development lifecycle.

      +
    • +

      [EU-MDR] Annex II: Technical documentation traceability for the +software development lifecycle.

    • -
    • -

      [EU-AI-ACT] Article 12: Automatic logging capabilities for -high-risk AI systems involved in the development process.

      +
    • +

      [EU-AI-ACT] Article 12: Automatic logging capabilities for +high-risk AI systems involved in the development process.

    • -
    • -

      [EU-AI-ACT] Article 14: ECTs can record evidence that human -oversight events occurred during the release process.

      +
    • +

      [EU-AI-ACT] Article 14: ECTs can record evidence that human +oversight events occurred during the release process.

    @@ -3204,17 +3006,17 @@ oversight events occurred during the release process. -
    +

    -10.2. Financial Trading Workflow +9.2. Financial Trading Workflow

    -

    In a financial trading workflow, agents perform risk assessment, +

    In a financial trading workflow, agents perform risk assessment, compliance verification, and trade execution. The DAG structure records that compliance checks were evaluated before trade -execution.

    +execution.

    -
    -
    +
    +
     Agent A (Risk Assessment):
       jti: task-001    par: []
    @@ -3232,37 +3034,37 @@ Agent C (Execution):
       pol: execution_policy_v3    pol_decision: approved
     
    -
    Figure 11: +
    Figure 10: Financial Trading Workflow
    -

    This can contribute to compliance with:

    +

    This can contribute to compliance with:

      -
    • -

      [MIFID-II]: ECTs provide cryptographic records of the execution -sequence that can support transaction audit requirements.

      +
    • +

      [MIFID-II]: ECTs provide cryptographic records of the execution +sequence that can support transaction audit requirements.

    • -
    • -

      [DORA] Article 12: ECTs contribute to ICT activity logging.

      +
    • +

      [DORA] Article 12: ECTs contribute to ICT activity logging.

    • -
    • -

      [EU-AI-ACT] Article 12: Logging of decisions made by AI-driven -systems.

      +
    • +

      [EU-AI-ACT] Article 12: Logging of decisions made by AI-driven +systems.

    -
    +

    -10.3. Compensation and Rollback +9.3. Compensation and Rollback

    -

    When a compliance violation is discovered after execution, ECTs +

    When a compliance violation is discovered after execution, ECTs provide a mechanism to record authorized compensation actions with -a cryptographic link to the original task:

    +a cryptographic link to the original task:

    -
    -
    +
    +
     {
       "iss": "spiffe://bank.example/agent/operations",
    @@ -3282,26 +3084,26 @@ a cryptographic link to the original task:Figure 12:
    +
    Figure 11: Compensation ECT Example
    -

    The "par" claim links the compensation action to the original +

    The "par" claim links the compensation action to the original trade, creating an auditable chain from execution through -violation discovery to remediation.

    +violation discovery to remediation.

    -
    +

    -10.4. Autonomous Logistics Coordination +9.4. Autonomous Logistics Coordination

    -

    In a logistics workflow, multiple compliance checks complete +

    In a logistics workflow, multiple compliance checks complete before shipment commitment. The DAG structure records that all -required checks were completed:

    +required checks were completed:

    -
    -
    +
    +
     Agent A (Route Planning):
       jti: task-001    par: []
    @@ -3329,383 +3131,383 @@ System (Commitment):
       pol: commitment_policy_v1   pol_decision: approved
     
    -
    Figure 13: +
    Figure 12: Logistics Workflow with Parallel Tasks
    -

    Note that tasks 002 and 003 both depend only on task-001 and can +

    Note that tasks 002 and 003 both depend only on task-001 and can execute in parallel. Task 004 depends on both, demonstrating the -DAG's ability to represent parallel execution with a join point.

    +DAG's ability to represent parallel execution with a join point.

    -
    +

    -11. Security Considerations +10. Security Considerations

    -

    This section addresses security considerations following the -guidance in [RFC3552].

    +

    This section addresses security considerations following the +guidance in [RFC3552].

    -
    +

    -11.1. Threat Model +10.1. Threat Model

    -

    The following threat actors are considered:

    +

    The following threat actors are considered:

      -
    • -

      Malicious agent (insider threat): An agent within the trust -domain that intentionally creates false ECT claims.

      +
    • +

      Malicious agent (insider threat): An agent within the trust +domain that intentionally creates false ECT claims.

    • -
    • -

      Compromised agent (external attacker): An agent whose private -key has been obtained by an external attacker.

      +
    • +

      Compromised agent (external attacker): An agent whose private +key has been obtained by an external attacker.

    • -
    • -

      Ledger tamperer: An entity attempting to modify or delete ledger -entries after they have been recorded.

      +
    • +

      Ledger tamperer: An entity attempting to modify or delete ledger +entries after they have been recorded.

    • -
    • -

      Time manipulator: An entity attempting to manipulate timestamps -to alter perceived execution ordering.

      +
    • +

      Time manipulator: An entity attempting to manipulate timestamps +to alter perceived execution ordering.

    -
    +

    -11.2. Self-Assertion Limitation +10.2. Self-Assertion Limitation

    -

    ECTs are self-asserted by the executing agent. The agent claims +

    ECTs are self-asserted by the executing agent. The agent claims what it did, and this claim is signed with its private key. A compromised or malicious agent could create ECTs with false claims (e.g., setting "pol_decision" to "approved" without actually -evaluating the policy).

    -

    ECTs do not independently verify that:

    +evaluating the policy).

    +

    ECTs do not independently verify that:

      -
    • -

      The claimed execution actually occurred as described

      +
    • +

      The claimed execution actually occurred as described

    • -
    • -

      The policy evaluation was correctly performed

      +
    • +

      The policy evaluation was correctly performed

    • -
    • -

      The input/output hashes correspond to the actual data processed

      +
    • +

      The input/output hashes correspond to the actual data processed

    • -
    • -

      The agent faithfully performed the stated action

      +
    • +

      The agent faithfully performed the stated action

    -

    The trustworthiness of ECT claims depends on the trustworthiness +

    The trustworthiness of ECT claims depends on the trustworthiness of the signing agent. To mitigate single-agent false claims, regulated environments SHOULD use the "witnessed_by" mechanism to include independent third-party observers at critical decision points. However, the "witnessed_by" claim is self-asserted by the ECT issuer: the listed witnesses do not co-sign the ECT and -there is no cryptographic proof within a single ECT that the +there is no cryptographic evidence within a single ECT that the witnesses actually observed the task. An issuing agent could -list witnesses that did not participate.

    +list witnesses that did not participate.

    -
    +

    -11.2.1. Witness Attestation Model +10.2.1. Witness Attestation Model

    -

    To address the self-assertion limitation of the "witnessed_by" +

    To address the self-assertion limitation of the "witnessed_by" claim, witnesses SHOULD submit their own independent signed ECTs to the audit ledger attesting to the observed task. A witness -attestation ECT:

    +attestation ECT:

      -
    • -

      MUST set "iss" to the witness's own workload identity.

      +
    • +

      MUST set "iss" to the witness's own workload identity.

    • -
    • -

      MUST set "exec_act" to "witness_attestation" (or a domain- -specific equivalent).

      +
    • +

      MUST set "exec_act" to "witness_attestation" (or a domain- +specific equivalent).

    • -
    • -

      MUST include the observed task's "jti" in the "par" array, -linking the attestation to the original task.

      +
    • +

      MUST include the observed task's "jti" in the "par" array, +linking the attestation to the original task.

    • -
    • -

      MUST set "pol_decision" to "approved" to indicate the witness -confirms the observation.

      +
    • +

      MUST set "pol_decision" to "approved" to indicate the witness +confirms the observation.

    -

    When a task's "witnessed_by" claim lists one or more witnesses, +

    When a task's "witnessed_by" claim lists one or more witnesses, auditors SHOULD verify that corresponding witness attestation ECTs exist in the ledger for each listed witness. A mismatch between the "witnessed_by" list and the set of independent witness -ECTs in the ledger SHOULD be flagged during audit review.

    -

    This model converts witness attestation from a self-asserted claim +ECTs in the ledger SHOULD be flagged during audit review.

    +

    This model converts witness attestation from a self-asserted claim to a cryptographically verifiable property of the ledger: the witness independently signs their own ECT using their own key, and the ledger records both the original task ECT and the witness -attestation ECTs.

    +attestation ECTs.

    -
    +

    -11.3. Organizational Prerequisites +10.3. Organizational Prerequisites

    -

    ECTs operate within a broader trust framework. The guarantees +

    ECTs operate within a broader trust framework. The guarantees provided by ECTs are only meaningful when the following -organizational controls are in place:

    +organizational controls are in place:

      -
    • -

      Key management governance: Controls over who provisions agent -keys and how keys are protected.

      +
    • +

      Key management governance: Controls over who provisions agent +keys and how keys are protected.

    • -
    • -

      Ledger integrity governance: The ledger is maintained by an -entity independent of the workflow agents.

      +
    • +

      Ledger integrity governance: The ledger is maintained by an +entity independent of the workflow agents.

    • -
    • -

      Policy lifecycle management: Policy identifiers in ECTs map to -actual, validated policy rules.

      +
    • +

      Policy lifecycle management: Policy identifiers in ECTs map to +actual, validated policy rules.

    • -
    • -

      Agent deployment governance: Agents are deployed and maintained -in a manner that preserves their integrity.

      +
    • +

      Agent deployment governance: Agents are deployed and maintained +in a manner that preserves their integrity.

    -
    +

    -11.4. Signature Verification +10.4. Signature Verification

    -

    ECTs MUST be signed with the agent's private key using JWS +

    ECTs MUST be signed with the agent's private key using JWS [RFC7515]. The signature algorithm MUST match the algorithm specified in the agent's WIT. Receivers MUST verify the ECT signature against the WIT public key before processing any claims. Receivers MUST verify that the signing key has not been revoked within the trust domain (see step 6 in -Section 7).

    -

    If signature verification fails or if the signing key has been +Section 7).

    +

    If signature verification fails or if the signing key has been revoked, the ECT MUST be rejected entirely and the failure MUST -be logged.

    -

    Implementations MUST use established JWS libraries and MUST NOT -implement custom signature verification.

    +be logged.

    +

    Implementations MUST use established JWS libraries and MUST NOT +implement custom signature verification.

    -
    +

    -11.5. Replay Attack Prevention +10.5. Replay Attack Prevention

    -

    ECTs include short expiration times (RECOMMENDED: 5-15 minutes) to +

    ECTs include short expiration times (RECOMMENDED: 5-15 minutes) to limit the window for replay attacks. The "aud" claim restricts replay to unintended recipients: an ECT intended for Agent B will be rejected by Agent C. The "iat" claim enables receivers to -reject ECTs that are too old, even if not yet expired.

    -

    The DAG structure provides additional replay protection: an ECT +reject ECTs that are too old, even if not yet expired.

    +

    The DAG structure provides additional replay protection: an ECT referencing parent tasks that already have a recorded child task -with the same action can be flagged as a potential replay.

    -

    Implementations MUST maintain a cache of recently-seen "jti" +with the same action can be flagged as a potential replay.

    +

    Implementations MUST maintain a cache of recently-seen "jti" values to detect replayed ECTs within the expiration window. -An ECT with a duplicate "jti" value MUST be rejected.

    +An ECT with a duplicate "jti" value MUST be rejected.

    -
    +

    -11.6. Man-in-the-Middle Protection +10.6. Man-in-the-Middle Protection

    -

    ECTs do not replace transport-layer security. ECTs MUST be +

    ECTs do not replace transport-layer security. ECTs MUST be transmitted over TLS or mTLS connections. When used with the WIMSE service-to-service protocol [I-D.ietf-wimse-s2s-protocol], transport security is already established. HTTP Message Signatures -[RFC9421] provide an alternative channel binding mechanism.

    -

    The defense-in-depth model provides:

    +[RFC9421] provide an alternative channel binding mechanism.

    +

    The defense-in-depth model provides:

      -
    • -

      TLS/mTLS (transport layer): Prevents network-level tampering.

      +
    • +

      TLS/mTLS (transport layer): Prevents network-level tampering.

    • -
    • -

      WIT/WPT (WIMSE identity layer): Proves agent identity and -request authorization.

      +
    • +

      WIT/WPT (WIMSE identity layer): Proves agent identity and +request authorization.

    • -
    • -

      ECT (execution accountability layer): Records what the agent did -and under what policy.

      +
    • +

      ECT (execution accountability layer): Records what the agent did +and under what policy.

    -
    +

    -11.7. Key Compromise +10.7. Key Compromise

    -

    If an agent's private key is compromised, an attacker can forge +

    If an agent's private key is compromised, an attacker can forge ECTs that appear to originate from that agent. To mitigate this -risk:

    +risk:

      -
    • -

      Implementations SHOULD use short-lived keys and rotate them -frequently (hours to days, not months).

      +
    • +

      Implementations SHOULD use short-lived keys and rotate them +frequently (hours to days, not months).

    • -
    • -

      Private keys SHOULD be stored in Hardware Security Modules (HSMs) -or equivalent secure key storage.

      +
    • +

      Private keys SHOULD be stored in Hardware Security Modules (HSMs) +or equivalent secure key storage.

    • -
    • -

      Trust domains MUST support rapid key revocation.

      +
    • +

      Trust domains MUST support rapid key revocation.

    • -
    • -

      Upon suspected compromise, the trust domain MUST revoke the -compromised key and issue a new WIT with a fresh key pair.

      +
    • +

      Upon suspected compromise, the trust domain MUST revoke the +compromised key and issue a new WIT with a fresh key pair.

    -

    ECTs signed with a compromised key that were recorded in the +

    ECTs signed with a compromised key that were recorded in the ledger before revocation remain valid historical records but SHOULD be flagged in the ledger as "signed with subsequently revoked key" -for audit purposes.

    +for audit purposes.

    -
    +

    -11.8. Collusion and False Claims +10.8. Collusion and False Claims

    -

    A single malicious agent cannot forge parent task references +

    A single malicious agent cannot forge parent task references because DAG validation requires parent tasks to exist in the ledger. However, multiple colluding agents could potentially -create a false execution history if they control the ledger.

    -

    Mitigations include:

    +create a false execution history if they control the ledger.

    +

    Mitigations include:

      -
    • -

      Independent ledger maintenance: The ledger SHOULD be maintained -by an entity independent of the workflow agents.

      +
    • +

      Independent ledger maintenance: The ledger SHOULD be maintained +by an entity independent of the workflow agents.

    • -
    • -

      Witness attestation: Using the "witnessed_by" claim to include -independent third-party observers.

      +
    • +

      Witness attestation: Using the "witnessed_by" claim to include +independent third-party observers.

    • -
    • -

      Cross-verification: Multiple independent ledger replicas can be -compared for consistency.

      +
    • +

      Cross-verification: Multiple independent ledger replicas can be +compared for consistency.

    • -
    • -

      Out-of-band audit: External auditors periodically verify ledger -contents against expected workflow patterns.

      +
    • +

      Out-of-band audit: External auditors periodically verify ledger +contents against expected workflow patterns.

    -
    +

    -11.9. Denial of Service +10.9. Denial of Service

    -

    ECT signature verification is computationally inexpensive +

    ECT signature verification is computationally inexpensive (approximately 1ms per ECT on modern hardware for ES256). DAG validation complexity is O(V) where V is the number of ancestor nodes reachable from the parent references; for typical shallow -DAGs this is efficient.

    -

    Implementations SHOULD apply rate limiting at the API layer to +DAGs this is efficient.

    +

    Implementations SHOULD apply rate limiting at the API layer to prevent excessive ECT submissions. DAG validation SHOULD be performed after signature verification to avoid wasting resources -on unsigned or incorrectly signed tokens.

    +on unsigned or incorrectly signed tokens.

    -
    +

    -11.10. Timestamp Accuracy +10.10. Timestamp Accuracy

    -

    ECTs rely on timestamps ("iat", "exp") for temporal ordering. +

    ECTs rely on timestamps ("iat", "exp") for temporal ordering. Clock skew between agents can lead to incorrect ordering judgments. Implementations SHOULD use synchronized time sources (e.g., NTP) and SHOULD allow a configurable clock skew tolerance -(RECOMMENDED: 30 seconds).

    -

    Cross-organizational deployments where agents span multiple trust +(RECOMMENDED: 30 seconds).

    +

    Cross-organizational deployments where agents span multiple trust domains with independent time sources MAY require a higher clock skew tolerance. Deployments using trust domain federation SHOULD document their configured clock skew tolerance value and SHOULD -ensure all participating trust domains agree on a common tolerance.

    -

    The temporal ordering check in DAG validation incorporates the +ensure all participating trust domains agree on a common tolerance.

    +

    The temporal ordering check in DAG validation incorporates the clock skew tolerance to account for minor clock differences -between agents.

    +between agents.

    -
    +

    -11.11. ECT Size Constraints +10.11. ECT Size Constraints

    -

    ECTs with many parent tasks or large extension objects can +

    ECTs with many parent tasks or large extension objects can increase HTTP header size. Implementations SHOULD limit the "par" array to a maximum of 256 entries. Workflows requiring more parent references SHOULD introduce intermediate aggregation tasks. The "ext" object SHOULD NOT exceed 4096 bytes when serialized as JSON and SHOULD NOT exceed a nesting depth of -5 levels (see also Section 4.2.7).

    +5 levels (see also Section 4.2.7).

    -
    +

    -12. Privacy Considerations +11. Privacy Considerations

    -
    +

    -12.1. Data Exposure in ECTs +11.1. Data Exposure in ECTs

    -

    ECTs necessarily reveal:

    +

    ECTs necessarily reveal:

      -
    • -

      Agent identities ("iss", "aud") for accountability purposes

      +
    • +

      Agent identities ("iss", "aud") for accountability purposes

    • -
    • -

      Action descriptions ("exec_act") for audit trail completeness

      +
    • +

      Action descriptions ("exec_act") for audit trail completeness

    • -
    • -

      Policy evaluation outcomes ("pol", "pol_decision") for -compliance verification

      +
    • +

      Policy evaluation outcomes ("pol", "pol_decision") for +compliance verification

    • -
    • -

      Timestamps ("iat", "exp") for temporal ordering

      +
    • +

      Timestamps ("iat", "exp") for temporal ordering

    -

    ECTs are designed to NOT reveal:

    +

    ECTs are designed to NOT reveal:

      -
    • -

      Actual input or output data values (replaced with cryptographic -hashes via "inp_hash" and "out_hash")

      +
    • +

      Actual input or output data values (replaced with cryptographic +hashes via "inp_hash" and "out_hash")

    • -
    • -

      Internal computation details or intermediate steps

      +
    • +

      Internal computation details or intermediate steps

    • -
    • -

      Proprietary algorithms or intellectual property

      +
    • +

      Proprietary algorithms or intellectual property

    • -
    • -

      Personally identifiable information (PII)

      +
    • +

      Personally identifiable information (PII)

    -
    +

    -12.2. Data Minimization +11.2. Data Minimization

    -

    Implementations SHOULD minimize the information included in ECTs. +

    Implementations SHOULD minimize the information included in ECTs. The "exec_act" claim SHOULD use structured identifiers (e.g., "process_payment") rather than natural language descriptions. The "pol" claim SHOULD reference policy identifiers rather than -embedding policy content.

    -

    The "compensation_reason" claim (Section 4.2.6) +embedding policy content.

    +

    The "compensation_reason" claim (Section 4.2.6) deserves particular attention: because it is human-readable and may describe the circumstances of a failure or policy violation, it risks exposing sensitive operational details. Implementations @@ -3713,167 +3515,167 @@ it risks exposing sensitive operational details. Implementations "policy_violation_in_parent_trade") rather than free-form natural language explanations. Implementers SHOULD review "compensation_reason" values for potential information leakage -before deploying to production.

    +before deploying to production.

    -
    +

    -12.3. Storage and Access Control +11.3. Storage and Access Control

    -

    ECTs stored in audit ledgers SHOULD be access-controlled so that +

    ECTs stored in audit ledgers SHOULD be access-controlled so that only authorized auditors and regulators can read them. Implementations SHOULD consider encryption at rest for ledger -storage containing sensitive regulatory data.

    -

    Full input and output data (corresponding to the hashes in ECTs) +storage containing sensitive regulatory data.

    +

    Full input and output data (corresponding to the hashes in ECTs) SHOULD be stored separately from the ledger with additional access controls, since auditors may need to verify hash correctness but -general access to the data values is not needed.

    +general access to the data values is not needed.

    -
    +

    -12.4. Regulatory Access +11.4. Regulatory Access

    -

    ECTs are designed for interpretation by qualified human auditors +

    ECTs are designed for interpretation by qualified human auditors and regulators. ECTs provide structural records of execution ordering and policy evaluation; they are not intended for public -disclosure.

    +disclosure.

    -
    +

    -13. IANA Considerations +12. IANA Considerations

    -
    +

    -13.1. Media Type Registration +12.1. Media Type Registration

    -

    This document requests registration of the following media type -in the "Media Types" registry maintained by IANA:

    -
    -
    Type name:
    -
    -

    application

    +

    This document requests registration of the following media type +in the "Media Types" registry maintained by IANA:

    +
    +
    Type name:
    +
    +

    application

    -
    Subtype name:
    -
    -

    wimse-exec+jwt

    +
    Subtype name:
    +
    +

    wimse-exec+jwt

    -
    Required parameters:
    -
    -

    none

    +
    Required parameters:
    +
    +

    none

    -
    Optional parameters:
    -
    -

    none

    +
    Optional parameters:
    +
    +

    none

    -
    Encoding considerations:
    -
    -

    8bit; an ECT is a JWT that is a JWS using the Compact +

    Encoding considerations:
    +
    +

    8bit; an ECT is a JWT that is a JWS using the Compact Serialization, which is a sequence of Base64url-encoded values -separated by period characters.

    +separated by period characters.

    -
    Security considerations:
    -
    -

    See the Security Considerations section of this document.

    +
    Security considerations:
    +
    +

    See the Security Considerations section of this document.

    -
    Interoperability considerations:
    -
    -

    none

    +
    Interoperability considerations:
    +
    +

    none

    -
    Published specification:
    -
    -

    This document

    +
    Published specification:
    +
    +

    This document

    -
    Applications that use this media type:
    -
    -

    Applications that implement regulated agentic workflows requiring -execution context tracing and audit trails.

    +
    Applications that use this media type:
    +
    +

    Applications that implement regulated agentic workflows requiring +execution context tracing and audit trails.

    -
    Additional information:
    -
    -

    Magic number(s): none +

    Additional information:
    +
    +

    Magic number(s): none File extension(s): none -Macintosh file type code(s): none

    +Macintosh file type code(s): none

    -
    Person and email address to contact for further information:
    -
    -

    Christian Nennemann, ietf@nennemann.de

    +
    Person and email address to contact for further information:
    +
    +

    Christian Nennemann, ietf@nennemann.de

    -
    Intended usage:
    -
    -

    COMMON

    +
    Intended usage:
    +
    +

    COMMON

    -
    Restrictions on usage:
    -
    -

    none

    +
    Restrictions on usage:
    +
    +

    none

    -
    Author:
    -
    -

    Christian Nennemann

    +
    Author:
    +
    +

    Christian Nennemann

    -
    Change controller:
    -
    -

    IETF

    +
    Change controller:
    +
    +

    IETF

    -
    +

    -13.2. HTTP Header Field Registration +12.2. HTTP Header Field Registration

    -

    This document requests registration of the following header field +

    This document requests registration of the following header field in the "Hypertext Transfer Protocol (HTTP) Field Name Registry" -maintained by IANA:

    -
    -
    Field name:
    -
    -

    Execution-Context

    +maintained by IANA:

    +
    +
    Field name:
    +
    +

    Execution-Context

    -
    Status:
    -
    -

    permanent

    +
    Status:
    +
    +

    permanent

    -
    Specification document:
    -
    -

    This document, Section 5

    +
    Specification document:
    +
    +

    This document, Section 5

    -
    +

    -13.3. JWT Claims Registration +12.3. JWT Claims Registration

    -

    This document requests registration of the following claims in -the "JSON Web Token Claims" registry maintained by IANA:

    +

    This document requests registration of the following claims in +the "JSON Web Token Claims" registry maintained by IANA:

    @@ -4031,14 +3833,14 @@ the "JSON Web Token Claims" registry maintained by IANA: -
    +

    -13.4. ECT Policy Decision Values Registry +12.4. ECT Policy Decision Values Registry

    -

    This document establishes the "ECT Policy Decision Values" +

    This document establishes the "ECT Policy Decision Values" registry under the "JSON Web Token (JWT)" group. Registration -policy is Specification Required per [RFC8126].

    -

    The initial contents of the registry are:

    +policy is Specification Required per [RFC8126].

    +

    The initial contents of the registry are:

    @@ -4084,14 +3886,14 @@ policy is Specification Required per [
    -
    +

    -13.5. ECT Regulated Domain Values Registry +12.5. ECT Regulated Domain Values Registry

    -

    This document establishes the "ECT Regulated Domain Values" +

    This document establishes the "ECT Regulated Domain Values" registry under the "JSON Web Token (JWT)" group. Registration -policy is Specification Required per [RFC8126].

    -

    The initial contents of the registry are:

    +policy is Specification Required per [RFC8126].

    +

    The initial contents of the registry are:

    @@ -4139,14 +3941,14 @@ policy is Specification Required per [
    -
    +

    -14. References +13. References

    -
    +

    -14.1. Normative References +13.1. Normative References

    [I-D.ietf-wimse-arch]
    @@ -4197,9 +3999,9 @@ policy is Specification Required per [
    -
    +

    -14.2. Informative References +13.2. Informative References

    [DORA]
    @@ -4378,7 +4180,7 @@ specification intentionally defines only the ECT token format and is agnostic to the storage mechanism. ECTs can be stored in append-only logs, databases with cryptographic commitments, blockchain networks, or any storage providing the required -properties defined in Section 9.

    +properties defined in Section 8.

    @@ -4448,9 +4250,7 @@ matching the WIT (ES256 recommended).

  • -

    Store verified ECTs (append to audit ledger in full ledger -mode, or retain locally in point-to-point mode per -Section 8).

    +

    Append verified ECTs to the audit ledger.

  • diff --git a/draft-nennemann-wimse-execution-context-00.md b/draft-nennemann-wimse-execution-context-00.md index 8d32454..ccaa072 100644 --- a/draft-nennemann-wimse-execution-context-00.md +++ b/draft-nennemann-wimse-execution-context-00.md @@ -87,17 +87,18 @@ informative: This document defines Execution Context Tokens (ECTs), an extension to the Workload Identity in Multi System Environments (WIMSE) architecture for distributed agentic workflows in regulated -environments. ECTs provide cryptographic proof of task execution -order, policy enforcement decisions, and compliance state across +environments. ECTs provide signed, structured records of task +execution order, policy evaluation outcomes, and compliance state +across agent-to-agent communication. By extending WIMSE Workload Identity Tokens with execution context claims in JSON Web Token (JWT) format, this specification enables regulated systems to maintain structured audit trails that support compliance verification. ECTs use a directed acyclic graph (DAG) structure to represent task dependencies, record policy evaluation outcomes at each decision -point, and integrate with WIMSE Workload Identity Tokens (WIT) and -Workload Proof Tokens (WPT) using the same signing model and -cryptographic primitives. A new HTTP header field, +point, and integrate with WIMSE Workload Identity Tokens (WIT) +using the same signing model and cryptographic primitives. A new +HTTP header field, Execution-Context, is defined for transporting ECTs alongside existing WIMSE headers. ECTs are a technical building block that supports, but does not by itself constitute, compliance with @@ -118,32 +119,16 @@ each other across call chains using the Workload-Identity and Workload-Proof-Token HTTP headers. However, workload identity alone does not address execution -accountability. Knowing who performed an action does not prove +accountability. Knowing who performed an action does not record what was done, what policy was applied, or whether compliance -requirements were satisfied at each decision point. +requirements were evaluated at each decision point. Regulated environments increasingly deploy autonomous agents that coordinate across organizational boundaries. Multiple regulatory -frameworks motivate the need for structured execution records: - -- The EU Artificial Intelligence Act {{EU-AI-ACT}} Article 12 - requires high-risk AI systems to be designed with capabilities - enabling automatic recording of events ("logs") while the - system is operating. - -- The U.S. FDA 21 CFR Part 11 {{FDA-21CFR11}} requires - computer-generated, timestamped audit trails that independently - record the date, time, operator identity, and actions taken - (Section 11.10(e)). - -- The Markets in Financial Instruments Directive (MiFID II) - {{MIFID-II}} requires firms to maintain records of transactions - and orders that are sufficient to enable supervisory authorities - to monitor compliance. - -- The Digital Operational Resilience Act (DORA) {{DORA}} Article 12 - requires financial entities to have logging policies that record - ICT activities and anomalies. +frameworks — including {{EU-AI-ACT}}, {{FDA-21CFR11}}, {{MIFID-II}}, +and {{DORA}} — require structured, auditable records of automated +decision-making and execution (see {{table-regulatory}} for a +detailed mapping). This document defines an extension to the WIMSE architecture that addresses the gap between workload identity and execution @@ -186,8 +171,6 @@ This document defines: - Integration with the WIMSE identity framework ({{wimse-integration}}) - An HTTP header for ECT transport ({{http-header}}) -- Operational modes including ledger-optional deployment - ({{operational-modes}}) - Audit ledger interface requirements ({{ledger-interface}}) The following are out of scope and are handled by WIMSE: @@ -330,27 +313,34 @@ following mechanisms: - The ECT "iss" claim MUST use the WIMSE workload identifier format (a SPIFFE ID {{SPIFFE}}). -- The ECT MUST be signed with the same private key used to - generate the agent's WPT. +- The ECT MUST be signed with the same private key associated + with the agent's WIT. - The ECT signing algorithm (JOSE header "alg" parameter) MUST match the algorithm used in the corresponding WIT. -When an agent makes an HTTP request to another agent, the three -tokens are carried in their respective HTTP header fields: +When an agent makes an HTTP request to another agent, the +Execution-Context header is carried alongside WIMSE identity +headers: ~~~ ascii-art HTTP Request from Agent A to Agent B: Workload-Identity: - Workload-Proof-Token: Execution-Context: ~~~ {: #fig-http-headers title="HTTP Header Stacking"} +When a Workload Proof Token (WPT) is available per +{{I-D.ietf-wimse-s2s-protocol}}, agents SHOULD include it +alongside the WIT and ECT. ECT verification does not depend +on the presence of a WPT; the ECT is independently verifiable +via the WIT public key. + The receiving agent (Agent B) verifies in order: -1. WIT and WPT (WIMSE layer): Proves who Agent A is and that the - request is authentic. +1. WIT (WIMSE layer): Verifies Agent A's identity within the + trust domain. WPT verification, if present, per + {{I-D.ietf-wimse-s2s-protocol}}. 2. ECT (this extension): Records what Agent A did, what policy was evaluated, and what precedent tasks exist. @@ -699,13 +689,12 @@ parts separated by period (".") characters. An agent sending a request to another agent includes the Execution-Context header alongside the WIMSE Workload-Identity -and Workload-Proof-Token headers: +header: ~~~ GET /api/safety-check HTTP/1.1 Host: safety-agent.example.com Workload-Identity: eyJhbGci...WIT... -Workload-Proof-Token: eyJhbGci...WPT... Execution-Context: eyJhbGci...ECT... ~~~ {: #fig-http-example title="HTTP Request with ECT Header"} @@ -733,12 +722,8 @@ enabling auditors to reconstruct the complete workflow and verify that required predecessor tasks were recorded before dependent tasks. -DAG validation can be performed against an audit ledger (when -available) or against parent ECTs received inline via -Execution-Context headers (in point-to-point mode per -{{operational-modes}}). The validation rules below use the term -"ECT store" to refer to either the ledger or the set of inline -parent ECTs available to the verifier. +DAG validation is performed against the audit ledger, which +serves as the authoritative store of previously verified ECTs. ## Validation Rules @@ -790,15 +775,14 @@ the following DAG validation steps: The following pseudocode describes the DAG validation procedure: ~~~ pseudocode -function validate_dag(ect, ect_store, clock_skew_tolerance): - // ect_store: ledger or local cache of verified ECTs +function validate_dag(ect, ledger, clock_skew_tolerance): // Step 1: Uniqueness check - if ect_store.contains(ect.jti, ect.wid): + if ledger.contains(ect.jti, ect.wid): return error("ECT ID already exists") // Step 2: Parent existence and temporal ordering for parent_id in ect.par: - parent = ect_store.get(parent_id) + parent = ledger.get(parent_id) if parent is null: return error("Parent task not found: " + parent_id) if parent.iat >= ect.iat + clock_skew_tolerance: @@ -806,14 +790,14 @@ function validate_dag(ect, ect_store, clock_skew_tolerance): // Step 3: Cycle detection (with traversal limit) visited = set() - result = has_cycle(ect.jti, ect.par, ect_store, visited, + result = has_cycle(ect.jti, ect.par, ledger, visited, max_ancestor_limit) if result is error or result is true: return error("Circular dependency or depth limit exceeded") return success -function has_cycle(target_jti, parent_ids, ect_store, +function has_cycle(target_jti, parent_ids, ledger, visited, max_depth): if visited.size() >= max_depth: return error("Maximum ancestor traversal limit exceeded") @@ -823,9 +807,9 @@ function has_cycle(target_jti, parent_ids, ect_store, if parent_id in visited: continue visited.add(parent_id) - parent = ect_store.get(parent_id) + parent = ledger.get(parent_id) if parent is not null: - result = has_cycle(target_jti, parent.par, ect_store, + result = has_cycle(target_jti, parent.par, ledger, visited, max_depth) if result is error or result is true: return result @@ -901,10 +885,8 @@ verification steps in order: 14. Perform DAG validation per {{dag-validation}}. -15. If all checks pass and an audit ledger is available, the ECT - SHOULD be appended to the audit ledger. In point-to-point - mode ({{operational-modes}}), the verified ECT is retained - locally by the receiving agent. +15. If all checks pass, the ECT MUST be appended to the audit + ledger. If any verification step fails, the ECT MUST be rejected and the failure MUST be logged for audit purposes. Error messages @@ -913,7 +895,7 @@ ledger, to prevent information disclosure. When ECT verification fails during HTTP request processing, the receiving agent SHOULD respond with HTTP 403 (Forbidden) if the -WIT and WPT are valid but the ECT is invalid, and HTTP 401 +WIT is valid but the ECT is invalid, and HTTP 401 (Unauthorized) if the ECT signature verification fails. The response body SHOULD include a generic error indicator without revealing which specific verification step failed. The receiving @@ -986,100 +968,27 @@ function verify_ect(ect_jws, verifier_id, return reject("Invalid pol_decision value") // Validate DAG (against ledger or inline parent ECTs) - result = validate_dag(payload, ect_store, + result = validate_dag(payload, ledger, clock_skew_tolerance) if result is error: return reject("DAG validation failed") - // All checks passed - if ledger is available: - ledger.append(payload) - else: - // Point-to-point mode: retain locally - local_ect_cache.store(payload) + // All checks passed; append to ledger + ledger.append(payload) return accept ~~~ {: #fig-verification title="ECT Verification Pseudocode"} -# Operational Modes {#operational-modes} - -ECTs can be deployed in three operational modes depending on the -availability and requirements of the deployment environment. All -modes use the same ECT format and verification procedure; they -differ in how parent ECTs are resolved during DAG validation and -where verified ECTs are stored. - -## Point-to-Point Mode {#point-to-point-mode} - -In point-to-point mode, agents pass parent ECTs directly to -downstream agents via multiple Execution-Context HTTP headers. -No centralized ledger is required. The receiving agent verifies -each parent ECT independently and validates the DAG against the -set of ECTs received in the request. - -This mode is suitable for: - -- Cross-organizational workflows where no shared ledger exists -- Lightweight deployments where infrastructure is constrained -- Early adoption scenarios before ledger infrastructure is - available - -Limitations of point-to-point mode: - -- No persistent audit trail unless agents independently retain - ECTs -- Global replay detection relies solely on "jti" caches at each - agent; there is no centralized "jti" uniqueness check -- The parent ECT chain grows with each hop, increasing HTTP - header size -- Post-hoc audit reconstruction requires collecting ECTs from - multiple agents - -Agents operating in point-to-point mode MUST retain verified -parent ECTs for at least the duration of the workflow to support -DAG validation of downstream requests. Agents SHOULD persist -ECTs locally for audit purposes even when no centralized ledger -is available. - -## Deferred Ledger Mode {#deferred-ledger-mode} - -In deferred ledger mode, agents create and verify ECTs in-flight -using point-to-point delivery, and submit collected ECTs to an -audit ledger after the workflow completes or at periodic intervals. - -This mode decouples real-time workflow execution from ledger -availability. DAG validation during execution uses inline parent -ECTs; full DAG validation against the complete workflow is -performed at ledger submission time. - -Agents MUST include all collected ECTs when submitting to the -ledger. The ledger MUST re-validate the complete DAG upon -submission. - -## Full Ledger Mode {#full-ledger-mode} - -In full ledger mode, every verified ECT is immediately appended -to an audit ledger. DAG validation is performed against the -ledger, which serves as the authoritative ECT store. This is -the RECOMMENDED mode for regulated environments where persistent, -centralized audit trails are required. - # Audit Ledger Interface {#ledger-interface} -## Overview - -Use of an audit ledger is RECOMMENDED for regulated environments -and any deployment requiring persistent, centralized audit trails. ECTs are designed to be recorded in an immutable audit ledger for compliance verification and post-hoc analysis. This specification -defines the logical interface for the ledger but does not mandate +defines required properties for the ledger but does not mandate a specific storage technology. Implementations MAY use append-only logs, databases with cryptographic commitment schemes, distributed ledgers, or any storage mechanism that provides the required properties. -## Required Properties - An audit ledger implementation MUST provide: 1. Append-only semantics: Once an ECT is recorded, it MUST NOT be @@ -1088,7 +997,7 @@ An audit ledger implementation MUST provide: 2. Ordering: The ledger MUST maintain a total ordering of ECT entries via a monotonically increasing sequence number. -3. Lookup by task ID: The ledger MUST support efficient retrieval +3. Lookup by ECT ID: The ledger MUST support efficient retrieval of ECT entries by "jti" value. 4. Integrity verification: The ledger SHOULD provide a mechanism @@ -1098,34 +1007,6 @@ An audit ledger implementation MUST provide: The ledger SHOULD be maintained by an entity independent of the workflow agents to reduce the risk of collusion. -## Ledger Entry Structure - -Each ledger entry is a logical record containing: - -~~~json -{ - "ledger_sequence": 42, - "ect_jti": "550e8400-e29b-41d4-a716-446655440001", - "agent_id": "spiffe://example.com/agent/clinical", - "action": "recommend_treatment", - "parents": [], - "ect_jws": "eyJhbGciOiJFUzI1NiIs...", - "signature_verified": true, - "verification_timestamp": "2026-02-24T15:42:31.000Z", - "stored_timestamp": "2026-02-24T15:42:31.050Z" -} -~~~ -{: #fig-ledger-entry title="Ledger Entry Example"} - -The "ect_jws" field contains the full JWS Compact Serialization -and is the authoritative record. The other fields ("agent_id", -"action", "parents") are convenience indexes derived from the -ECT payload; if they disagree with the JWS payload, the JWS -payload takes precedence. Implementations SHOULD validate that -convenience index fields match the corresponding values in the -JWS payload at write time to prevent desynchronization between -the authoritative JWS and the indexed fields. - # Use Cases {#use-cases} This section describes representative use cases demonstrating how @@ -1368,7 +1249,7 @@ regulated environments SHOULD use the "witnessed_by" mechanism to include independent third-party observers at critical decision points. However, the "witnessed_by" claim is self-asserted by the ECT issuer: the listed witnesses do not co-sign the ECT and -there is no cryptographic proof within a single ECT that the +there is no cryptographic evidence within a single ECT that the witnesses actually observed the task. An issuing agent could list witnesses that did not participate. @@ -1872,9 +1753,7 @@ A minimal conforming implementation needs to: 3. Verify ECT signatures against WIT public keys. 4. Perform DAG validation (parent existence, temporal ordering, cycle detection). -5. Store verified ECTs (append to audit ledger in full ledger - mode, or retain locally in point-to-point mode per - {{operational-modes}}). +5. Append verified ECTs to the audit ledger. ## Storage Recommendations {:numbered="false"} diff --git a/draft-nennemann-wimse-execution-context-00.txt b/draft-nennemann-wimse-execution-context-00.txt index 261d32c..8f62e1b 100644 --- a/draft-nennemann-wimse-execution-context-00.txt +++ b/draft-nennemann-wimse-execution-context-00.txt @@ -16,20 +16,20 @@ Abstract This document defines Execution Context Tokens (ECTs), an extension to the Workload Identity in Multi System Environments (WIMSE) architecture for distributed agentic workflows in regulated - environments. ECTs provide cryptographic proof of task execution - order, policy enforcement decisions, and compliance state across - agent-to-agent communication. By extending WIMSE Workload Identity - Tokens with execution context claims in JSON Web Token (JWT) format, - this specification enables regulated systems to maintain structured - audit trails that support compliance verification. ECTs use a - directed acyclic graph (DAG) structure to represent task + environments. ECTs provide signed, structured records of task + execution order, policy evaluation outcomes, and compliance state + across agent-to-agent communication. By extending WIMSE Workload + Identity Tokens with execution context claims in JSON Web Token (JWT) + format, this specification enables regulated systems to maintain + structured audit trails that support compliance verification. ECTs + use a directed acyclic graph (DAG) structure to represent task dependencies, record policy evaluation outcomes at each decision - point, and integrate with WIMSE Workload Identity Tokens (WIT) and - Workload Proof Tokens (WPT) using the same signing model and - cryptographic primitives. A new HTTP header field, Execution- - Context, is defined for transporting ECTs alongside existing WIMSE - headers. ECTs are a technical building block that supports, but does - not by itself constitute, compliance with regulatory frameworks. + point, and integrate with WIMSE Workload Identity Tokens (WIT) using + the same signing model and cryptographic primitives. A new HTTP + header field, Execution-Context, is defined for transporting ECTs + alongside existing WIMSE headers. ECTs are a technical building + block that supports, but does not by itself constitute, compliance + with regulatory frameworks. Status of This Memo @@ -76,13 +76,13 @@ Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1. Motivation . . . . . . . . . . . . . . . . . . . . . . . 4 - 1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 5 + 1.2. Problem Statement . . . . . . . . . . . . . . . . . . . . 4 1.3. Scope and Applicability . . . . . . . . . . . . . . . . . 5 - 1.4. Relationship to Regulatory Compliance . . . . . . . . . . 6 + 1.4. Relationship to Regulatory Compliance . . . . . . . . . . 5 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 6 3. WIMSE Architecture Integration . . . . . . . . . . . . . . . 7 3.1. WIMSE Foundation . . . . . . . . . . . . . . . . . . . . 7 - 3.2. Extension Model . . . . . . . . . . . . . . . . . . . . . 8 + 3.2. Extension Model . . . . . . . . . . . . . . . . . . . . . 7 3.3. Integration Points . . . . . . . . . . . . . . . . . . . 8 4. Execution Context Token Format . . . . . . . . . . . . . . . 9 4.1. JOSE Header . . . . . . . . . . . . . . . . . . . . . . . 9 @@ -94,7 +94,7 @@ Table of Contents 4.2.5. Task Metadata . . . . . . . . . . . . . . . . . . . . 13 4.2.6. Compensation and Rollback . . . . . . . . . . . . . . 14 4.2.7. Extensions . . . . . . . . . . . . . . . . . . . . . 14 - 4.3. Complete ECT Example . . . . . . . . . . . . . . . . . . 15 + 4.3. Complete ECT Example . . . . . . . . . . . . . . . . . . 14 5. HTTP Header Transport . . . . . . . . . . . . . . . . . . . . 15 5.1. Execution-Context Header Field . . . . . . . . . . . . . 15 6. DAG Validation . . . . . . . . . . . . . . . . . . . . . . . 16 @@ -104,8 +104,8 @@ Table of Contents 7. Signature and Token Verification . . . . . . . . . . . . . . 19 7.1. Verification Procedure . . . . . . . . . . . . . . . . . 19 7.2. Verification Pseudocode . . . . . . . . . . . . . . . . . 20 - 8. Operational Modes . . . . . . . . . . . . . . . . . . . . . . 22 - 8.1. Point-to-Point Mode . . . . . . . . . . . . . . . . . . . 22 + 8. Audit Ledger Interface . . . . . . . . . . . . . . . . . . . 22 + 9. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 22 @@ -114,54 +114,54 @@ Nennemann Expires 28 August 2026 [Page 2] Internet-Draft WIMSE Execution Context February 2026 - 8.2. Deferred Ledger Mode . . . . . . . . . . . . . . . . . . 23 - 8.3. Full Ledger Mode . . . . . . . . . . . . . . . . . . . . 23 - 9. Audit Ledger Interface . . . . . . . . . . . . . . . . . . . 23 - 9.1. Overview . . . . . . . . . . . . . . . . . . . . . . . . 23 - 9.2. Required Properties . . . . . . . . . . . . . . . . . . . 24 - 9.3. Ledger Entry Structure . . . . . . . . . . . . . . . . . 24 - 10. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 25 - 10.1. Medical Device SDLC Workflow . . . . . . . . . . . . . . 25 - 10.1.1. FDA Audit with DAG Reconstruction . . . . . . . . . 26 - 10.2. Financial Trading Workflow . . . . . . . . . . . . . . . 27 - 10.3. Compensation and Rollback . . . . . . . . . . . . . . . 27 - 10.4. Autonomous Logistics Coordination . . . . . . . . . . . 28 - 11. Security Considerations . . . . . . . . . . . . . . . . . . . 29 - 11.1. Threat Model . . . . . . . . . . . . . . . . . . . . . . 29 - 11.2. Self-Assertion Limitation . . . . . . . . . . . . . . . 30 - 11.2.1. Witness Attestation Model . . . . . . . . . . . . . 30 - 11.3. Organizational Prerequisites . . . . . . . . . . . . . . 31 - 11.4. Signature Verification . . . . . . . . . . . . . . . . . 31 - 11.5. Replay Attack Prevention . . . . . . . . . . . . . . . . 32 - 11.6. Man-in-the-Middle Protection . . . . . . . . . . . . . . 32 - 11.7. Key Compromise . . . . . . . . . . . . . . . . . . . . . 32 - 11.8. Collusion and False Claims . . . . . . . . . . . . . . . 33 - 11.9. Denial of Service . . . . . . . . . . . . . . . . . . . 33 - 11.10. Timestamp Accuracy . . . . . . . . . . . . . . . . . . . 34 - 11.11. ECT Size Constraints . . . . . . . . . . . . . . . . . . 34 - 12. Privacy Considerations . . . . . . . . . . . . . . . . . . . 34 - 12.1. Data Exposure in ECTs . . . . . . . . . . . . . . . . . 34 - 12.2. Data Minimization . . . . . . . . . . . . . . . . . . . 35 - 12.3. Storage and Access Control . . . . . . . . . . . . . . . 35 - 12.4. Regulatory Access . . . . . . . . . . . . . . . . . . . 35 - 13. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 35 - 13.1. Media Type Registration . . . . . . . . . . . . . . . . 35 - 13.2. HTTP Header Field Registration . . . . . . . . . . . . . 36 - 13.3. JWT Claims Registration . . . . . . . . . . . . . . . . 37 - 13.4. ECT Policy Decision Values Registry . . . . . . . . . . 38 - 13.5. ECT Regulated Domain Values Registry . . . . . . . . . . 38 - 14. References . . . . . . . . . . . . . . . . . . . . . . . . . 39 - 14.1. Normative References . . . . . . . . . . . . . . . . . . 39 - 14.2. Informative References . . . . . . . . . . . . . . . . . 40 - Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . 42 - WIMSE Workload Identity . . . . . . . . . . . . . . . . . . . . 42 - OAuth 2.0 Token Exchange and the "act" Claim . . . . . . . . . 42 - Transaction Tokens . . . . . . . . . . . . . . . . . . . . . . 43 - Distributed Tracing (OpenTelemetry) . . . . . . . . . . . . . . 43 - Blockchain and Distributed Ledgers . . . . . . . . . . . . . . 44 - SCITT (Supply Chain Integrity, Transparency, and Trust) . . . . 44 - W3C Verifiable Credentials . . . . . . . . . . . . . . . . . . 44 - Implementation Guidance . . . . . . . . . . . . . . . . . . . . . 44 + 9.1. Medical Device SDLC Workflow . . . . . . . . . . . . . . 23 + 9.1.1. FDA Audit with DAG Reconstruction . . . . . . . . . . 24 + 9.2. Financial Trading Workflow . . . . . . . . . . . . . . . 25 + 9.3. Compensation and Rollback . . . . . . . . . . . . . . . . 25 + 9.4. Autonomous Logistics Coordination . . . . . . . . . . . . 26 + 10. Security Considerations . . . . . . . . . . . . . . . . . . . 27 + 10.1. Threat Model . . . . . . . . . . . . . . . . . . . . . . 27 + 10.2. Self-Assertion Limitation . . . . . . . . . . . . . . . 28 + 10.2.1. Witness Attestation Model . . . . . . . . . . . . . 28 + 10.3. Organizational Prerequisites . . . . . . . . . . . . . . 29 + 10.4. Signature Verification . . . . . . . . . . . . . . . . . 29 + 10.5. Replay Attack Prevention . . . . . . . . . . . . . . . . 30 + 10.6. Man-in-the-Middle Protection . . . . . . . . . . . . . . 30 + 10.7. Key Compromise . . . . . . . . . . . . . . . . . . . . . 30 + 10.8. Collusion and False Claims . . . . . . . . . . . . . . . 31 + 10.9. Denial of Service . . . . . . . . . . . . . . . . . . . 31 + 10.10. Timestamp Accuracy . . . . . . . . . . . . . . . . . . . 32 + 10.11. ECT Size Constraints . . . . . . . . . . . . . . . . . . 32 + 11. Privacy Considerations . . . . . . . . . . . . . . . . . . . 32 + 11.1. Data Exposure in ECTs . . . . . . . . . . . . . . . . . 32 + 11.2. Data Minimization . . . . . . . . . . . . . . . . . . . 33 + 11.3. Storage and Access Control . . . . . . . . . . . . . . . 33 + 11.4. Regulatory Access . . . . . . . . . . . . . . . . . . . 33 + 12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 + 12.1. Media Type Registration . . . . . . . . . . . . . . . . 33 + 12.2. HTTP Header Field Registration . . . . . . . . . . . . . 34 + 12.3. JWT Claims Registration . . . . . . . . . . . . . . . . 35 + 12.4. ECT Policy Decision Values Registry . . . . . . . . . . 36 + 12.5. ECT Regulated Domain Values Registry . . . . . . . . . . 36 + 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 37 + 13.1. Normative References . . . . . . . . . . . . . . . . . . 37 + 13.2. Informative References . . . . . . . . . . . . . . . . . 38 + Related Work . . . . . . . . . . . . . . . . . . . . . . . . . . 40 + WIMSE Workload Identity . . . . . . . . . . . . . . . . . . . . 40 + OAuth 2.0 Token Exchange and the "act" Claim . . . . . . . . . 40 + Transaction Tokens . . . . . . . . . . . . . . . . . . . . . . 41 + Distributed Tracing (OpenTelemetry) . . . . . . . . . . . . . . 41 + Blockchain and Distributed Ledgers . . . . . . . . . . . . . . 42 + SCITT (Supply Chain Integrity, Transparency, and Trust) . . . . 42 + W3C Verifiable Credentials . . . . . . . . . . . . . . . . . . 42 + Implementation Guidance . . . . . . . . . . . . . . . . . . . . . 42 + Minimal Implementation . . . . . . . . . . . . . . . . . . . . 42 + Storage Recommendations . . . . . . . . . . . . . . . . . . . . 43 + Performance Considerations . . . . . . . . . . . . . . . . . . 43 + Interoperability . . . . . . . . . . . . . . . . . . . . . . . 43 + Regulatory Compliance Mapping . . . . . . . . . . . . . . . . . . 44 + Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 + Example 1: Simple Two-Agent Workflow . . . . . . . . . . . . . 44 @@ -170,17 +170,10 @@ Nennemann Expires 28 August 2026 [Page 3] Internet-Draft WIMSE Execution Context February 2026 - Minimal Implementation . . . . . . . . . . . . . . . . . . . . 44 - Storage Recommendations . . . . . . . . . . . . . . . . . . . . 45 - Performance Considerations . . . . . . . . . . . . . . . . . . 45 - Interoperability . . . . . . . . . . . . . . . . . . . . . . . 45 - Regulatory Compliance Mapping . . . . . . . . . . . . . . . . . . 46 - Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 - Example 1: Simple Two-Agent Workflow . . . . . . . . . . . . . 46 - Example 2: Medical Device SDLC with Release Approval . . . . . 48 - Example 3: Parallel Execution with Join . . . . . . . . . . . . 50 - Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 51 - Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 51 + Example 2: Medical Device SDLC with Release Approval . . . . . 46 + Example 3: Parallel Execution with Join . . . . . . . . . . . . 48 + Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 49 + Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 49 1. Introduction @@ -194,41 +187,15 @@ Internet-Draft WIMSE Execution Context February 2026 using the Workload-Identity and Workload-Proof-Token HTTP headers. However, workload identity alone does not address execution - accountability. Knowing who performed an action does not prove what + accountability. Knowing who performed an action does not record what was done, what policy was applied, or whether compliance requirements - were satisfied at each decision point. + were evaluated at each decision point. Regulated environments increasingly deploy autonomous agents that coordinate across organizational boundaries. Multiple regulatory - frameworks motivate the need for structured execution records: - - * The EU Artificial Intelligence Act [EU-AI-ACT] Article 12 requires - high-risk AI systems to be designed with capabilities enabling - automatic recording of events ("logs") while the system is - operating. - - * The U.S. FDA 21 CFR Part 11 [FDA-21CFR11] requires computer- - generated, timestamped audit trails that independently record the - date, time, operator identity, and actions taken - (Section 11.10(e)). - - * The Markets in Financial Instruments Directive (MiFID II) - [MIFID-II] requires firms to maintain records of transactions and - orders that are sufficient to enable supervisory authorities to - monitor compliance. - - - - - -Nennemann Expires 28 August 2026 [Page 4] - -Internet-Draft WIMSE Execution Context February 2026 - - - * The Digital Operational Resilience Act (DORA) [DORA] Article 12 - requires financial entities to have logging policies that record - ICT activities and anomalies. + frameworks — including [EU-AI-ACT], [FDA-21CFR11], [MIFID-II], and + [DORA] — require structured, auditable records of automated decision- + making and execution (see Table 4 for a detailed mapping). This document defines an extension to the WIMSE architecture that addresses the gap between workload identity and execution @@ -251,6 +218,14 @@ Internet-Draft WIMSE Execution Context February 2026 2. No standard mechanism exists to record policy evaluation outcomes at each decision point in a multi-agent workflow. + + + +Nennemann Expires 28 August 2026 [Page 4] + +Internet-Draft WIMSE Execution Context February 2026 + + 3. No mechanism exists to cryptographically link compensation and rollback decisions to original actions. @@ -274,17 +249,7 @@ Internet-Draft WIMSE Execution Context February 2026 * An HTTP header for ECT transport (Section 5) - - - -Nennemann Expires 28 August 2026 [Page 5] - -Internet-Draft WIMSE Execution Context February 2026 - - - * Operational modes including ledger-optional deployment (Section 8) - - * Audit ledger interface requirements (Section 9) + * Audit ledger interface requirements (Section 8) The following are out of scope and are handled by WIMSE: @@ -309,6 +274,14 @@ Internet-Draft WIMSE Execution Context February 2026 this document are intended to motivate the design requirements, not to claim that implementing ECTs satisfies these regulations. + + + +Nennemann Expires 28 August 2026 [Page 5] + +Internet-Draft WIMSE Execution Context February 2026 + + ECTs provide evidence of claimed execution ordering and policy evaluation. They do not independently verify that the claimed execution actually occurred as described, that the policy evaluation @@ -330,14 +303,6 @@ Internet-Draft WIMSE Execution Context February 2026 Agent: An autonomous workload, as defined by WIMSE [I-D.ietf-wimse-arch], that executes tasks within a workflow. - - - -Nennemann Expires 28 August 2026 [Page 6] - -Internet-Draft WIMSE Execution Context February 2026 - - Task: A discrete unit of agent work that consumes inputs and produces outputs. @@ -365,6 +330,14 @@ Internet-Draft WIMSE Execution Context February 2026 boundary with a shared identity issuer, corresponding to a SPIFFE [SPIFFE] trust domain. + + + +Nennemann Expires 28 August 2026 [Page 6] + +Internet-Draft WIMSE Execution Context February 2026 + + Witness: A third-party entity that observes and attests to the execution of a task, providing additional accountability. @@ -386,14 +359,6 @@ Internet-Draft WIMSE Execution Context February 2026 The following execution accountability needs are complementary to the WIMSE scope and are not addressed by workload identity alone: - - - -Nennemann Expires 28 August 2026 [Page 7] - -Internet-Draft WIMSE Execution Context February 2026 - - * Recording what agents actually do with their authenticated identity @@ -408,6 +373,27 @@ Internet-Draft WIMSE Execution Context February 2026 ECTs extend WIMSE by adding an execution accountability layer between the identity layer and the application layer: + + + + + + + + + + + + + + + + +Nennemann Expires 28 August 2026 [Page 7] + +Internet-Draft WIMSE Execution Context February 2026 + + +--------------------------------------------------+ | WIMSE Layer (Identity) | | WIT: "I am Agent X (spiffe://td/agent/x)" | @@ -441,7 +427,21 @@ Internet-Draft WIMSE Execution Context February 2026 * The ECT JOSE header "kid" parameter MUST reference the public key identifier from the agent's WIT. + * The ECT "iss" claim MUST use the WIMSE workload identifier format + (a SPIFFE ID [SPIFFE]). + * The ECT MUST be signed with the same private key associated with + the agent's WIT. + + * The ECT signing algorithm (JOSE header "alg" parameter) MUST match + the algorithm used in the corresponding WIT. + + When an agent makes an HTTP request to another agent, the Execution- + Context header is carried alongside WIMSE identity headers: + + HTTP Request from Agent A to Agent B: + Workload-Identity: + Execution-Context: @@ -450,29 +450,18 @@ Nennemann Expires 28 August 2026 [Page 8] Internet-Draft WIMSE Execution Context February 2026 - * The ECT "iss" claim MUST use the WIMSE workload identifier format - (a SPIFFE ID [SPIFFE]). - - * The ECT MUST be signed with the same private key used to generate - the agent's WPT. - - * The ECT signing algorithm (JOSE header "alg" parameter) MUST match - the algorithm used in the corresponding WIT. - - When an agent makes an HTTP request to another agent, the three - tokens are carried in their respective HTTP header fields: - - HTTP Request from Agent A to Agent B: - Workload-Identity: - Workload-Proof-Token: - Execution-Context: - Figure 2: HTTP Header Stacking + When a Workload Proof Token (WPT) is available per + [I-D.ietf-wimse-s2s-protocol], agents SHOULD include it alongside the + WIT and ECT. ECT verification does not depend on the presence of a + WPT; the ECT is independently verifiable via the WIT public key. + The receiving agent (Agent B) verifies in order: - 1. WIT and WPT (WIMSE layer): Proves who Agent A is and that the - request is authentic. + 1. WIT (WIMSE layer): Verifies Agent A's identity within the trust + domain. WPT verification, if present, per + [I-D.ietf-wimse-s2s-protocol]. 2. ECT (this extension): Records what Agent A did, what policy was evaluated, and what precedent tasks exist. @@ -498,14 +487,6 @@ Internet-Draft WIMSE Execution Context February 2026 Figure 3: ECT JOSE Header Example alg: REQUIRED. The digital signature algorithm used to sign the - - - -Nennemann Expires 28 August 2026 [Page 9] - -Internet-Draft WIMSE Execution Context February 2026 - - ECT. MUST match the algorithm in the corresponding WIT. Implementations MUST support ES256 [RFC7518]. The "alg" value MUST NOT be "none". Symmetric algorithms (e.g., HS256, HS384, @@ -517,6 +498,14 @@ Internet-Draft WIMSE Execution Context February 2026 type parameter values. kid: REQUIRED. The key identifier referencing the public key from + + + +Nennemann Expires 28 August 2026 [Page 9] + +Internet-Draft WIMSE Execution Context February 2026 + + the agent's WIT [RFC7517]. Used by verifiers to look up the correct public key for signature verification. @@ -555,13 +544,6 @@ Internet-Draft WIMSE Execution Context February 2026 directly to the audit ledger (e.g., after a join or at workflow completion), "aud" contains the ledger's identity. - - -Nennemann Expires 28 August 2026 [Page 10] - -Internet-Draft WIMSE Execution Context February 2026 - - * *Multi-audience*: when an ECT must be verified by both the next agent and the ledger independently, "aud" MUST be an array containing both identifiers (e.g., @@ -572,6 +554,14 @@ Internet-Draft WIMSE Execution Context February 2026 In multi-parent (join) scenarios where a task depends on ECTs from multiple parent agents, the joining agent creates a new ECT with the parent task IDs in "par". The "aud" of this new ECT is set + + + +Nennemann Expires 28 August 2026 [Page 10] + +Internet-Draft WIMSE Execution Context February 2026 + + according to the rules above based on where the ECT will be delivered — it is independent of the "aud" values in the parent ECTs. @@ -608,16 +598,6 @@ Internet-Draft WIMSE Execution Context February 2026 [RFC9562]. exec_act: REQUIRED. String. The action or task type identifier - - - - - -Nennemann Expires 28 August 2026 [Page 11] - -Internet-Draft WIMSE Execution Context February 2026 - - describing what the agent performed (e.g., "process_payment", "validate_safety", "calculate_dosage"). Note: this claim is intentionally named "exec_act" rather than "act" to avoid @@ -629,6 +609,15 @@ Internet-Draft WIMSE Execution Context February 2026 root task with no dependencies. A workflow MAY contain multiple root tasks. + + + + +Nennemann Expires 28 August 2026 [Page 11] + +Internet-Draft WIMSE Execution Context February 2026 + + 4.2.3. Policy Evaluation The following claims record policy evaluation outcomes: @@ -639,7 +628,7 @@ Internet-Draft WIMSE Execution Context February 2026 pol_decision: OPTIONAL. String. The result of the policy evaluation. When present, MUST be one of the values registered in - the ECT Policy Decision Values registry (Section 13.4). MUST be + the ECT Policy Decision Values registry (Section 12.4). MUST be present when "pol" is present. Initial values are: * "approved": The policy evaluation succeeded and the task was @@ -665,15 +654,6 @@ Internet-Draft WIMSE Execution Context February 2026 audit trails. pol_enforcer: OPTIONAL. StringOrURI. The identity of the entity - - - - -Nennemann Expires 28 August 2026 [Page 12] - -Internet-Draft WIMSE Execution Context February 2026 - - (system or person) that evaluated the policy decision. When present, SHOULD use SPIFFE ID format. @@ -686,6 +666,14 @@ Internet-Draft WIMSE Execution Context February 2026 distributed to agents, and evaluated are out of scope. The "pol" claim is an opaque identifier referencing an external policy; the semantics and enforcement of that policy are determined by the + + + +Nennemann Expires 28 August 2026 [Page 12] + +Internet-Draft WIMSE Execution Context February 2026 + + deployment environment. Implementations may use any policy engine or framework (e.g., OPA/Rego, Cedar, XACML, or custom solutions) provided that the evaluation outcome is faithfully recorded in the @@ -722,17 +710,9 @@ Internet-Draft WIMSE Execution Context February 2026 exec_time_ms: OPTIONAL. Integer. The execution duration of the task in milliseconds. MUST be a non-negative integer. - - - -Nennemann Expires 28 August 2026 [Page 13] - -Internet-Draft WIMSE Execution Context February 2026 - - regulated_domain: OPTIONAL. String. The regulatory domain applicable to this task. Values MUST be registered in the ECT - Regulated Domain Values registry (Section 13.5). + Regulated Domain Values registry (Section 12.5). model_version: OPTIONAL. String. The version identifier of the AI or ML model used to perform the task, if applicable. @@ -742,12 +722,20 @@ Internet-Draft WIMSE Execution Context February 2026 attested to the execution of this task. When present, each element SHOULD use SPIFFE ID format. Note that this claim is self-asserted by the ECT issuer; witnesses listed here do not co- + + + +Nennemann Expires 28 August 2026 [Page 13] + +Internet-Draft WIMSE Execution Context February 2026 + + sign this ECT. For stronger assurance, witnesses SHOULD submit independent signed ECTs to the ledger attesting to their - observation (see Section 11.2.1). In regulated environments, + observation (see Section 10.2.1). In regulated environments, implementations SHOULD use witness attestation for critical decision points to mitigate the risk of single-agent false claims. - See also Section 11.2 for the security implications of self- + See also Section 10.2 for the security implications of self- asserted witness claims. 4.2.6. Compensation and Rollback @@ -760,7 +748,7 @@ Internet-Draft WIMSE Execution Context February 2026 "compensation_required" is true. Values SHOULD use structured identifiers (e.g., "policy_violation_in_parent_trade") rather than free-form text to minimize the risk of embedding sensitive - information. See Section 12.2 for privacy guidance. If + information. See Section 11.2 for privacy guidance. If "compensation_reason" is present, "compensation_required" MUST be true. @@ -778,14 +766,6 @@ Internet-Draft WIMSE Execution Context February 2026 To avoid key collisions between different domains, extension key names MUST use reverse domain notation (e.g., "com.example.custom_field"). Implementations MUST NOT use - - - -Nennemann Expires 28 August 2026 [Page 14] - -Internet-Draft WIMSE Execution Context February 2026 - - unqualified key names within the "ext" object. To prevent abuse and excessive token size, the serialized JSON representation of the "ext" object SHOULD NOT exceed 4096 bytes, and the JSON nesting depth @@ -796,6 +776,16 @@ Internet-Draft WIMSE Execution Context February 2026 The following is a complete ECT payload example: + + + + + +Nennemann Expires 28 August 2026 [Page 14] + +Internet-Draft WIMSE Execution Context February 2026 + + { "iss": "spiffe://example.com/agent/clinical", "sub": "spiffe://example.com/agent/clinical", @@ -834,6 +824,16 @@ Internet-Draft WIMSE Execution Context February 2026 This specification defines the Execution-Context HTTP header field [RFC9110] for transporting ECTs between agents. + The header field value is the ECT in JWS Compact Serialization format + [RFC7515]. The value consists of three Base64url-encoded parts + separated by period (".") characters. + + An agent sending a request to another agent includes the Execution- + Context header alongside the WIMSE Workload-Identity header: + + + + @@ -842,18 +842,9 @@ Nennemann Expires 28 August 2026 [Page 15] Internet-Draft WIMSE Execution Context February 2026 - The header field value is the ECT in JWS Compact Serialization format - [RFC7515]. The value consists of three Base64url-encoded parts - separated by period (".") characters. - - An agent sending a request to another agent includes the Execution- - Context header alongside the WIMSE Workload-Identity and Workload- - Proof-Token headers: - GET /api/safety-check HTTP/1.1 Host: safety-agent.example.com Workload-Identity: eyJhbGci...WIT... - Workload-Proof-Token: eyJhbGci...WPT... Execution-Context: eyJhbGci...ECT... Figure 5: HTTP Request with ECT Header @@ -879,25 +870,14 @@ Internet-Draft WIMSE Execution Context February 2026 auditors to reconstruct the complete workflow and verify that required predecessor tasks were recorded before dependent tasks. - DAG validation can be performed against an audit ledger (when - available) or against parent ECTs received inline via Execution- - Context headers (in point-to-point mode per Section 8). The - validation rules below use the term "ECT store" to refer to either - the ledger or the set of inline parent ECTs available to the - verifier. + DAG validation is performed against the audit ledger, which serves as + the authoritative store of previously verified ECTs. 6.2. Validation Rules When receiving and verifying an ECT, implementations MUST perform the following DAG validation steps: - - -Nennemann Expires 28 August 2026 [Page 16] - -Internet-Draft WIMSE Execution Context February 2026 - - 1. Task ID Uniqueness: The "jti" claim MUST be unique within the applicable scope (the workflow identified by "wid", or the entire ECT store if "wid" is absent). If an ECT with the same "jti" @@ -909,6 +889,15 @@ Internet-Draft WIMSE Execution Context February 2026 verified parent ECT). If any parent task is not found, the ECT MUST be rejected. + + + + +Nennemann Expires 28 August 2026 [Page 16] + +Internet-Draft WIMSE Execution Context February 2026 + + 3. Temporal Ordering: The "iat" value of every parent task MUST NOT be greater than the "iat" value of the current task plus a configurable clock skew tolerance (RECOMMENDED: 30 seconds). @@ -949,20 +938,30 @@ Internet-Draft WIMSE Execution Context February 2026 + + + + + + + + + + + Nennemann Expires 28 August 2026 [Page 17] Internet-Draft WIMSE Execution Context February 2026 - function validate_dag(ect, ect_store, clock_skew_tolerance): - // ect_store: ledger or local cache of verified ECTs + function validate_dag(ect, ledger, clock_skew_tolerance): // Step 1: Uniqueness check - if ect_store.contains(ect.jti, ect.wid): + if ledger.contains(ect.jti, ect.wid): return error("ECT ID already exists") // Step 2: Parent existence and temporal ordering for parent_id in ect.par: - parent = ect_store.get(parent_id) + parent = ledger.get(parent_id) if parent is null: return error("Parent task not found: " + parent_id) if parent.iat >= ect.iat + clock_skew_tolerance: @@ -970,14 +969,14 @@ Internet-Draft WIMSE Execution Context February 2026 // Step 3: Cycle detection (with traversal limit) visited = set() - result = has_cycle(ect.jti, ect.par, ect_store, visited, + result = has_cycle(ect.jti, ect.par, ledger, visited, max_ancestor_limit) if result is error or result is true: return error("Circular dependency or depth limit exceeded") return success - function has_cycle(target_jti, parent_ids, ect_store, + function has_cycle(target_jti, parent_ids, ledger, visited, max_depth): if visited.size() >= max_depth: return error("Maximum ancestor traversal limit exceeded") @@ -987,9 +986,9 @@ Internet-Draft WIMSE Execution Context February 2026 if parent_id in visited: continue visited.add(parent_id) - parent = ect_store.get(parent_id) + parent = ledger.get(parent_id) if parent is not null: - result = has_cycle(target_jti, parent.par, ect_store, + result = has_cycle(target_jti, parent.par, ledger, visited, max_depth) if result is error or result is true: return result @@ -1002,6 +1001,7 @@ Internet-Draft WIMSE Execution Context February 2026 of ancestor nodes reachable from the current task's parent references. For typical workflows with shallow DAGs, this is efficient. To prevent denial-of-service via extremely deep or wide + DAGs, implementations SHOULD enforce a maximum ancestor traversal @@ -1010,7 +1010,6 @@ Nennemann Expires 28 August 2026 [Page 18] Internet-Draft WIMSE Execution Context February 2026 - DAGs, implementations SHOULD enforce a maximum ancestor traversal limit (RECOMMENDED: 10000 nodes). If the limit is reached before cycle detection completes, the ECT SHOULD be rejected. Implementations SHOULD cache cycle detection results for previously @@ -1061,6 +1060,7 @@ Internet-Draft WIMSE Execution Context February 2026 + Nennemann Expires 28 August 2026 [Page 19] Internet-Draft WIMSE Execution Context February 2026 @@ -1081,10 +1081,8 @@ Internet-Draft WIMSE Execution Context February 2026 14. Perform DAG validation per Section 6. - 15. If all checks pass and an audit ledger is available, the ECT - SHOULD be appended to the audit ledger. In point-to-point mode - (Section 8), the verified ECT is retained locally by the - receiving agent. + 15. If all checks pass, the ECT MUST be appended to the audit + ledger. If any verification step fails, the ECT MUST be rejected and the failure MUST be logged for audit purposes. Error messages SHOULD NOT @@ -1093,11 +1091,11 @@ Internet-Draft WIMSE Execution Context February 2026 When ECT verification fails during HTTP request processing, the receiving agent SHOULD respond with HTTP 403 (Forbidden) if the WIT - and WPT are valid but the ECT is invalid, and HTTP 401 (Unauthorized) - if the ECT signature verification fails. The response body SHOULD - include a generic error indicator without revealing which specific - verification step failed. The receiving agent MUST NOT process the - requested action when ECT verification fails. + is valid but the ECT is invalid, and HTTP 401 (Unauthorized) if the + ECT signature verification fails. The response body SHOULD include a + generic error indicator without revealing which specific verification + step failed. The receiving agent MUST NOT process the requested + action when ECT verification fails. 7.2. Verification Pseudocode @@ -1114,6 +1112,8 @@ Internet-Draft WIMSE Execution Context February 2026 return reject("Prohibited algorithm") // Look up public key + public_key = trust_domain_keys.get(header.kid) + if public_key is null: @@ -1122,8 +1122,6 @@ Nennemann Expires 28 August 2026 [Page 20] Internet-Draft WIMSE Execution Context February 2026 - public_key = trust_domain_keys.get(header.kid) - if public_key is null: return reject("Unknown key identifier") // Verify signature @@ -1171,6 +1169,8 @@ Internet-Draft WIMSE Execution Context February 2026 ["approved", "rejected", "pending_human_review"]: return reject("Invalid pol_decision value") + // Validate DAG (against ledger or inline parent ECTs) + Nennemann Expires 28 August 2026 [Page 21] @@ -1178,52 +1178,52 @@ Nennemann Expires 28 August 2026 [Page 21] Internet-Draft WIMSE Execution Context February 2026 - // Validate DAG (against ledger or inline parent ECTs) - result = validate_dag(payload, ect_store, + result = validate_dag(payload, ledger, clock_skew_tolerance) if result is error: return reject("DAG validation failed") - // All checks passed - if ledger is available: - ledger.append(payload) - else: - // Point-to-point mode: retain locally - local_ect_cache.store(payload) + // All checks passed; append to ledger + ledger.append(payload) return accept Figure 7: ECT Verification Pseudocode -8. Operational Modes +8. Audit Ledger Interface - ECTs can be deployed in three operational modes depending on the - availability and requirements of the deployment environment. All - modes use the same ECT format and verification procedure; they differ - in how parent ECTs are resolved during DAG validation and where - verified ECTs are stored. + ECTs are designed to be recorded in an immutable audit ledger for + compliance verification and post-hoc analysis. This specification + defines required properties for the ledger but does not mandate a + specific storage technology. Implementations MAY use append-only + logs, databases with cryptographic commitment schemes, distributed + ledgers, or any storage mechanism that provides the required + properties. -8.1. Point-to-Point Mode + An audit ledger implementation MUST provide: - In point-to-point mode, agents pass parent ECTs directly to - downstream agents via multiple Execution-Context HTTP headers. No - centralized ledger is required. The receiving agent verifies each - parent ECT independently and validates the DAG against the set of - ECTs received in the request. + 1. Append-only semantics: Once an ECT is recorded, it MUST NOT be + modified or deleted. - This mode is suitable for: + 2. Ordering: The ledger MUST maintain a total ordering of ECT + entries via a monotonically increasing sequence number. - * Cross-organizational workflows where no shared ledger exists + 3. Lookup by ECT ID: The ledger MUST support efficient retrieval of + ECT entries by "jti" value. - * Lightweight deployments where infrastructure is constrained + 4. Integrity verification: The ledger SHOULD provide a mechanism to + verify that no entries have been tampered with (e.g., hash chains + or Merkle trees). - * Early adoption scenarios before ledger infrastructure is available + The ledger SHOULD be maintained by an entity independent of the + workflow agents to reduce the risk of collusion. - Limitations of point-to-point mode: +9. Use Cases - * No persistent audit trail unless agents independently retain ECTs - - * Global replay detection relies solely on "jti" caches at each - agent; there is no centralized "jti" uniqueness check + This section describes representative use cases demonstrating how + ECTs provide execution records in regulated environments. These + examples demonstrate ECT mechanics; production deployments would + include additional domain-specific requirements beyond the scope of + this specification. @@ -1234,131 +1234,11 @@ Nennemann Expires 28 August 2026 [Page 22] Internet-Draft WIMSE Execution Context February 2026 - * The parent ECT chain grows with each hop, increasing HTTP header - size - - * Post-hoc audit reconstruction requires collecting ECTs from - multiple agents - - Agents operating in point-to-point mode MUST retain verified parent - ECTs for at least the duration of the workflow to support DAG - validation of downstream requests. Agents SHOULD persist ECTs - locally for audit purposes even when no centralized ledger is - available. - -8.2. Deferred Ledger Mode - - In deferred ledger mode, agents create and verify ECTs in-flight - using point-to-point delivery, and submit collected ECTs to an audit - ledger after the workflow completes or at periodic intervals. - - This mode decouples real-time workflow execution from ledger - availability. DAG validation during execution uses inline parent - ECTs; full DAG validation against the complete workflow is performed - at ledger submission time. - - Agents MUST include all collected ECTs when submitting to the ledger. - The ledger MUST re-validate the complete DAG upon submission. - -8.3. Full Ledger Mode - - In full ledger mode, every verified ECT is immediately appended to an - audit ledger. DAG validation is performed against the ledger, which - serves as the authoritative ECT store. This is the RECOMMENDED mode - for regulated environments where persistent, centralized audit trails - are required. - -9. Audit Ledger Interface - -9.1. Overview - - Use of an audit ledger is RECOMMENDED for regulated environments and - any deployment requiring persistent, centralized audit trails. ECTs - are designed to be recorded in an immutable audit ledger for - compliance verification and post-hoc analysis. This specification - defines the logical interface for the ledger but does not mandate a - specific storage technology. Implementations MAY use append-only - logs, databases with cryptographic commitment schemes, distributed - ledgers, or any storage mechanism that provides the required - properties. - - - - -Nennemann Expires 28 August 2026 [Page 23] - -Internet-Draft WIMSE Execution Context February 2026 - - -9.2. Required Properties - - An audit ledger implementation MUST provide: - - 1. Append-only semantics: Once an ECT is recorded, it MUST NOT be - modified or deleted. - - 2. Ordering: The ledger MUST maintain a total ordering of ECT - entries via a monotonically increasing sequence number. - - 3. Lookup by task ID: The ledger MUST support efficient retrieval of - ECT entries by "jti" value. - - 4. Integrity verification: The ledger SHOULD provide a mechanism to - verify that no entries have been tampered with (e.g., hash chains - or Merkle trees). - - The ledger SHOULD be maintained by an entity independent of the - workflow agents to reduce the risk of collusion. - -9.3. Ledger Entry Structure - - Each ledger entry is a logical record containing: - - { - "ledger_sequence": 42, - "ect_jti": "550e8400-e29b-41d4-a716-446655440001", - "agent_id": "spiffe://example.com/agent/clinical", - "action": "recommend_treatment", - "parents": [], - "ect_jws": "eyJhbGciOiJFUzI1NiIs...", - "signature_verified": true, - "verification_timestamp": "2026-02-24T15:42:31.000Z", - "stored_timestamp": "2026-02-24T15:42:31.050Z" - } - - Figure 8: Ledger Entry Example - - The "ect_jws" field contains the full JWS Compact Serialization and - is the authoritative record. The other fields ("agent_id", "action", - "parents") are convenience indexes derived from the ECT payload; if - they disagree with the JWS payload, the JWS payload takes precedence. - Implementations SHOULD validate that convenience index fields match - the corresponding values in the JWS payload at write time to prevent - desynchronization between the authoritative JWS and the indexed - fields. - - - - - -Nennemann Expires 28 August 2026 [Page 24] - -Internet-Draft WIMSE Execution Context February 2026 - - -10. Use Cases - - This section describes representative use cases demonstrating how - ECTs provide execution records in regulated environments. These - examples demonstrate ECT mechanics; production deployments would - include additional domain-specific requirements beyond the scope of - this specification. - Note: task identifiers in this section are abbreviated for readability. In production, all "jti" values are required to be UUIDs per Section 4.2.2. -10.1. Medical Device SDLC Workflow +9.1. Medical Device SDLC Workflow In a medical device software development lifecycle (SDLC), AI agents assist across multiple phases from requirements analysis through @@ -1393,14 +1273,7 @@ Internet-Draft WIMSE Execution Context February 2026 pol_enforcer: spiffe://meddev.example/human/release-mgr-42 witnessed_by: [spiffe://meddev.example/audit/qa-observer-1] - Figure 9: Medical Device SDLC Workflow - - - -Nennemann Expires 28 August 2026 [Page 25] - -Internet-Draft WIMSE Execution Context February 2026 - + Figure 8: Medical Device SDLC Workflow ECTs record that requirements were reviewed before implementation began, that tests were executed against the implemented code, that @@ -1408,7 +1281,16 @@ Internet-Draft WIMSE Execution Context February 2026 explicitly approved the release. The DAG structure ensures no phase was skipped or reordered. -10.1.1. FDA Audit with DAG Reconstruction + + + + +Nennemann Expires 28 August 2026 [Page 23] + +Internet-Draft WIMSE Execution Context February 2026 + + +9.1.1. FDA Audit with DAG Reconstruction During a regulatory audit, an FDA reviewer requests evidence of the development process for a specific software release. The auditing @@ -1429,7 +1311,7 @@ Internet-Draft WIMSE Execution Context February 2026 v task-005 (approve_release) [human, witnessed] - Figure 10: Reconstructed DAG for FDA Audit + Figure 9: Reconstructed DAG for FDA Audit The reconstructed DAG provides cryptographic evidence that: @@ -1449,25 +1331,25 @@ Internet-Draft WIMSE Execution Context February 2026 * [FDA-21CFR11] Section 11.10(e): Computer-generated audit trails that record the date, time, and identity of the operator. - - - - -Nennemann Expires 28 August 2026 [Page 26] - -Internet-Draft WIMSE Execution Context February 2026 - - * [EU-MDR] Annex II: Technical documentation traceability for the software development lifecycle. * [EU-AI-ACT] Article 12: Automatic logging capabilities for high- risk AI systems involved in the development process. + + + + +Nennemann Expires 28 August 2026 [Page 24] + +Internet-Draft WIMSE Execution Context February 2026 + + * [EU-AI-ACT] Article 14: ECTs can record evidence that human oversight events occurred during the release process. -10.2. Financial Trading Workflow +9.2. Financial Trading Workflow In a financial trading workflow, agents perform risk assessment, compliance verification, and trade execution. The DAG structure @@ -1488,7 +1370,7 @@ Internet-Draft WIMSE Execution Context February 2026 exec_act: execute_trade pol: execution_policy_v3 pol_decision: approved - Figure 11: Financial Trading Workflow + Figure 10: Financial Trading Workflow This can contribute to compliance with: @@ -1500,7 +1382,7 @@ Internet-Draft WIMSE Execution Context February 2026 * [EU-AI-ACT] Article 12: Logging of decisions made by AI-driven systems. -10.3. Compensation and Rollback +9.3. Compensation and Rollback When a compliance violation is discovered after execution, ECTs provide a mechanism to record authorized compensation actions with a @@ -1509,7 +1391,13 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 27] + + + + + + +Nennemann Expires 28 August 2026 [Page 25] Internet-Draft WIMSE Execution Context February 2026 @@ -1531,13 +1419,13 @@ Internet-Draft WIMSE Execution Context February 2026 "compensation_reason": "policy_violation_in_parent_trade" } - Figure 12: Compensation ECT Example + Figure 11: Compensation ECT Example The "par" claim links the compensation action to the original trade, creating an auditable chain from execution through violation discovery to remediation. -10.4. Autonomous Logistics Coordination +9.4. Autonomous Logistics Coordination In a logistics workflow, multiple compliance checks complete before shipment commitment. The DAG structure records that all required @@ -1565,7 +1453,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 28] +Nennemann Expires 28 August 2026 [Page 26] Internet-Draft WIMSE Execution Context February 2026 @@ -1595,18 +1483,18 @@ Internet-Draft WIMSE Execution Context February 2026 exec_act: commit_shipment pol: commitment_policy_v1 pol_decision: approved - Figure 13: Logistics Workflow with Parallel Tasks + Figure 12: Logistics Workflow with Parallel Tasks Note that tasks 002 and 003 both depend only on task-001 and can execute in parallel. Task 004 depends on both, demonstrating the DAG's ability to represent parallel execution with a join point. -11. Security Considerations +10. Security Considerations This section addresses security considerations following the guidance in [RFC3552]. -11.1. Threat Model +10.1. Threat Model The following threat actors are considered: @@ -1621,7 +1509,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 29] +Nennemann Expires 28 August 2026 [Page 27] Internet-Draft WIMSE Execution Context February 2026 @@ -1629,7 +1517,7 @@ Internet-Draft WIMSE Execution Context February 2026 * Time manipulator: An entity attempting to manipulate timestamps to alter perceived execution ordering. -11.2. Self-Assertion Limitation +10.2. Self-Assertion Limitation ECTs are self-asserted by the executing agent. The agent claims what it did, and this claim is signed with its private key. A compromised @@ -1652,11 +1540,11 @@ Internet-Draft WIMSE Execution Context February 2026 independent third-party observers at critical decision points. However, the "witnessed_by" claim is self-asserted by the ECT issuer: the listed witnesses do not co-sign the ECT and there is no - cryptographic proof within a single ECT that the witnesses actually - observed the task. An issuing agent could list witnesses that did - not participate. + cryptographic evidence within a single ECT that the witnesses + actually observed the task. An issuing agent could list witnesses + that did not participate. -11.2.1. Witness Attestation Model +10.2.1. Witness Attestation Model To address the self-assertion limitation of the "witnessed_by" claim, witnesses SHOULD submit their own independent signed ECTs to the @@ -1677,7 +1565,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 30] +Nennemann Expires 28 August 2026 [Page 28] Internet-Draft WIMSE Execution Context February 2026 @@ -1693,7 +1581,7 @@ Internet-Draft WIMSE Execution Context February 2026 independently signs their own ECT using their own key, and the ledger records both the original task ECT and the witness attestation ECTs. -11.3. Organizational Prerequisites +10.3. Organizational Prerequisites ECTs operate within a broader trust framework. The guarantees provided by ECTs are only meaningful when the following @@ -1711,7 +1599,7 @@ Internet-Draft WIMSE Execution Context February 2026 * Agent deployment governance: Agents are deployed and maintained in a manner that preserves their integrity. -11.4. Signature Verification +10.4. Signature Verification ECTs MUST be signed with the agent's private key using JWS [RFC7515]. The signature algorithm MUST match the algorithm specified in the @@ -1733,12 +1621,12 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 31] +Nennemann Expires 28 August 2026 [Page 29] Internet-Draft WIMSE Execution Context February 2026 -11.5. Replay Attack Prevention +10.5. Replay Attack Prevention ECTs include short expiration times (RECOMMENDED: 5-15 minutes) to limit the window for replay attacks. The "aud" claim restricts @@ -1754,7 +1642,7 @@ Internet-Draft WIMSE Execution Context February 2026 to detect replayed ECTs within the expiration window. An ECT with a duplicate "jti" value MUST be rejected. -11.6. Man-in-the-Middle Protection +10.6. Man-in-the-Middle Protection ECTs do not replace transport-layer security. ECTs MUST be transmitted over TLS or mTLS connections. When used with the WIMSE @@ -1772,7 +1660,7 @@ Internet-Draft WIMSE Execution Context February 2026 * ECT (execution accountability layer): Records what the agent did and under what policy. -11.7. Key Compromise +10.7. Key Compromise If an agent's private key is compromised, an attacker can forge ECTs that appear to originate from that agent. To mitigate this risk: @@ -1789,7 +1677,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 32] +Nennemann Expires 28 August 2026 [Page 30] Internet-Draft WIMSE Execution Context February 2026 @@ -1802,7 +1690,7 @@ Internet-Draft WIMSE Execution Context February 2026 flagged in the ledger as "signed with subsequently revoked key" for audit purposes. -11.8. Collusion and False Claims +10.8. Collusion and False Claims A single malicious agent cannot forge parent task references because DAG validation requires parent tasks to exist in the ledger. @@ -1823,7 +1711,7 @@ Internet-Draft WIMSE Execution Context February 2026 * Out-of-band audit: External auditors periodically verify ledger contents against expected workflow patterns. -11.9. Denial of Service +10.9. Denial of Service ECT signature verification is computationally inexpensive (approximately 1ms per ECT on modern hardware for ES256). DAG @@ -1845,12 +1733,12 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 33] +Nennemann Expires 28 August 2026 [Page 31] Internet-Draft WIMSE Execution Context February 2026 -11.10. Timestamp Accuracy +10.10. Timestamp Accuracy ECTs rely on timestamps ("iat", "exp") for temporal ordering. Clock skew between agents can lead to incorrect ordering judgments. @@ -1867,7 +1755,7 @@ Internet-Draft WIMSE Execution Context February 2026 The temporal ordering check in DAG validation incorporates the clock skew tolerance to account for minor clock differences between agents. -11.11. ECT Size Constraints +10.11. ECT Size Constraints ECTs with many parent tasks or large extension objects can increase HTTP header size. Implementations SHOULD limit the "par" array to a @@ -1876,9 +1764,9 @@ Internet-Draft WIMSE Execution Context February 2026 SHOULD NOT exceed 4096 bytes when serialized as JSON and SHOULD NOT exceed a nesting depth of 5 levels (see also Section 4.2.7). -12. Privacy Considerations +11. Privacy Considerations -12.1. Data Exposure in ECTs +11.1. Data Exposure in ECTs ECTs necessarily reveal: @@ -1901,7 +1789,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 34] +Nennemann Expires 28 August 2026 [Page 32] Internet-Draft WIMSE Execution Context February 2026 @@ -1910,7 +1798,7 @@ Internet-Draft WIMSE Execution Context February 2026 * Personally identifiable information (PII) -12.2. Data Minimization +11.2. Data Minimization Implementations SHOULD minimize the information included in ECTs. The "exec_act" claim SHOULD use structured identifiers (e.g., @@ -1927,7 +1815,7 @@ Internet-Draft WIMSE Execution Context February 2026 SHOULD review "compensation_reason" values for potential information leakage before deploying to production. -12.3. Storage and Access Control +11.3. Storage and Access Control ECTs stored in audit ledgers SHOULD be access-controlled so that only authorized auditors and regulators can read them. Implementations @@ -1939,15 +1827,15 @@ Internet-Draft WIMSE Execution Context February 2026 controls, since auditors may need to verify hash correctness but general access to the data values is not needed. -12.4. Regulatory Access +11.4. Regulatory Access ECTs are designed for interpretation by qualified human auditors and regulators. ECTs provide structural records of execution ordering and policy evaluation; they are not intended for public disclosure. -13. IANA Considerations +12. IANA Considerations -13.1. Media Type Registration +12.1. Media Type Registration This document requests registration of the following media type in the "Media Types" registry maintained by IANA: @@ -1957,7 +1845,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 35] +Nennemann Expires 28 August 2026 [Page 33] Internet-Draft WIMSE Execution Context February 2026 @@ -1997,7 +1885,7 @@ Internet-Draft WIMSE Execution Context February 2026 Change controller: IETF -13.2. HTTP Header Field Registration +12.2. HTTP Header Field Registration This document requests registration of the following header field in the "Hypertext Transfer Protocol (HTTP) Field Name Registry" @@ -2013,12 +1901,12 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 36] +Nennemann Expires 28 August 2026 [Page 34] Internet-Draft WIMSE Execution Context February 2026 -13.3. JWT Claims Registration +12.3. JWT Claims Registration This document requests registration of the following claims in the "JSON Web Token Claims" registry maintained by IANA: @@ -2069,7 +1957,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 37] +Nennemann Expires 28 August 2026 [Page 35] Internet-Draft WIMSE Execution Context February 2026 @@ -2089,7 +1977,7 @@ Internet-Draft WIMSE Execution Context February 2026 Table 1: JWT Claims Registrations -13.4. ECT Policy Decision Values Registry +12.4. ECT Policy Decision Values Registry This document establishes the "ECT Policy Decision Values" registry under the "JSON Web Token (JWT)" group. Registration policy is @@ -2116,7 +2004,7 @@ Internet-Draft WIMSE Execution Context February 2026 Table 2: ECT Policy Decision Values -13.5. ECT Regulated Domain Values Registry +12.5. ECT Regulated Domain Values Registry This document establishes the "ECT Regulated Domain Values" registry under the "JSON Web Token (JWT)" group. Registration policy is @@ -2125,7 +2013,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 38] +Nennemann Expires 28 August 2026 [Page 36] Internet-Draft WIMSE Execution Context February 2026 @@ -2147,9 +2035,9 @@ Internet-Draft WIMSE Execution Context February 2026 Table 3: ECT Regulated Domain Values -14. References +13. References -14.1. Normative References +13.1. Normative References [I-D.ietf-wimse-arch] Salowey, J. A., Rosomakho, Y., and H. Tschofenig, @@ -2181,7 +2069,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 39] +Nennemann Expires 28 August 2026 [Page 37] Internet-Draft WIMSE Execution Context February 2026 @@ -2216,7 +2104,7 @@ Internet-Draft WIMSE Execution Context February 2026 IDentifiers (UUIDs)", RFC 9562, DOI 10.17487/RFC9562, May 2024, . -14.2. Informative References +13.2. Informative References [DORA] European Parliament and Council of the European Union, "Regulation (EU) 2022/2554 on digital operational @@ -2237,7 +2125,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 40] +Nennemann Expires 28 August 2026 [Page 38] Internet-Draft WIMSE Execution Context February 2026 @@ -2293,7 +2181,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 41] +Nennemann Expires 28 August 2026 [Page 39] Internet-Draft WIMSE Execution Context February 2026 @@ -2349,7 +2237,7 @@ OAuth 2.0 Token Exchange and the "act" Claim -Nennemann Expires 28 August 2026 [Page 42] +Nennemann Expires 28 August 2026 [Page 40] Internet-Draft WIMSE Execution Context February 2026 @@ -2405,7 +2293,7 @@ Distributed Tracing (OpenTelemetry) -Nennemann Expires 28 August 2026 [Page 43] +Nennemann Expires 28 August 2026 [Page 41] Internet-Draft WIMSE Execution Context February 2026 @@ -2420,7 +2308,7 @@ Blockchain and Distributed Ledgers agnostic to the storage mechanism. ECTs can be stored in append-only logs, databases with cryptographic commitments, blockchain networks, or any storage providing the required properties defined in - Section 9. + Section 8. SCITT (Supply Chain Integrity, Transparency, and Trust) @@ -2461,7 +2349,7 @@ Minimal Implementation -Nennemann Expires 28 August 2026 [Page 44] +Nennemann Expires 28 August 2026 [Page 42] Internet-Draft WIMSE Execution Context February 2026 @@ -2478,8 +2366,7 @@ Internet-Draft WIMSE Execution Context February 2026 4. Perform DAG validation (parent existence, temporal ordering, cycle detection). - 5. Store verified ECTs (append to audit ledger in full ledger mode, - or retain locally in point-to-point mode per Section 8). + 5. Append verified ECTs to the audit ledger. Storage Recommendations @@ -2517,7 +2404,8 @@ Interoperability -Nennemann Expires 28 August 2026 [Page 45] + +Nennemann Expires 28 August 2026 [Page 43] Internet-Draft WIMSE Execution Context February 2026 @@ -2573,7 +2461,7 @@ Example 1: Simple Two-Agent Workflow -Nennemann Expires 28 August 2026 [Page 46] +Nennemann Expires 28 August 2026 [Page 44] Internet-Draft WIMSE Execution Context February 2026 @@ -2629,7 +2517,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 47] +Nennemann Expires 28 August 2026 [Page 45] Internet-Draft WIMSE Execution Context February 2026 @@ -2685,7 +2573,7 @@ Example 2: Medical Device SDLC with Release Approval -Nennemann Expires 28 August 2026 [Page 48] +Nennemann Expires 28 August 2026 [Page 46] Internet-Draft WIMSE Execution Context February 2026 @@ -2741,7 +2629,7 @@ Internet-Draft WIMSE Execution Context February 2026 -Nennemann Expires 28 August 2026 [Page 49] +Nennemann Expires 28 August 2026 [Page 47] Internet-Draft WIMSE Execution Context February 2026 @@ -2797,7 +2685,7 @@ Example 3: Parallel Execution with Join -Nennemann Expires 28 August 2026 [Page 50] +Nennemann Expires 28 August 2026 [Page 48] Internet-Draft WIMSE Execution Context February 2026 @@ -2853,4 +2741,4 @@ Author's Address -Nennemann Expires 28 August 2026 [Page 51] +Nennemann Expires 28 August 2026 [Page 49] diff --git a/draft-nennemann-wimse-execution-context-00.xml b/draft-nennemann-wimse-execution-context-00.xml index a7eb59c..3d0bf17 100644 --- a/draft-nennemann-wimse-execution-context-00.xml +++ b/draft-nennemann-wimse-execution-context-00.xml @@ -37,17 +37,18 @@ This document defines Execution Context Tokens (ECTs), an extension to the Workload Identity in Multi System Environments (WIMSE) architecture for distributed agentic workflows in regulated -environments. ECTs provide cryptographic proof of task execution -order, policy enforcement decisions, and compliance state across +environments. ECTs provide signed, structured records of task +execution order, policy evaluation outcomes, and compliance state +across agent-to-agent communication. By extending WIMSE Workload Identity Tokens with execution context claims in JSON Web Token (JWT) format, this specification enables regulated systems to maintain structured audit trails that support compliance verification. ECTs use a directed acyclic graph (DAG) structure to represent task dependencies, record policy evaluation outcomes at each decision -point, and integrate with WIMSE Workload Identity Tokens (WIT) and -Workload Proof Tokens (WPT) using the same signing model and -cryptographic primitives. A new HTTP header field, +point, and integrate with WIMSE Workload Identity Tokens (WIT) +using the same signing model and cryptographic primitives. A new +HTTP header field, Execution-Context, is defined for transporting ECTs alongside existing WIMSE headers. ECTs are a technical building block that supports, but does not by itself constitute, compliance with @@ -64,7 +65,7 @@ regulatory frameworks. - +
    Introduction @@ -79,31 +80,16 @@ each other across call chains using the Workload-Identity and Workload-Proof-Token HTTP headers. However, workload identity alone does not address execution -accountability. Knowing who performed an action does not prove +accountability. Knowing who performed an action does not record what was done, what policy was applied, or whether compliance -requirements were satisfied at each decision point. +requirements were evaluated at each decision point. Regulated environments increasingly deploy autonomous agents that coordinate across organizational boundaries. Multiple regulatory -frameworks motivate the need for structured execution records: - - - The EU Artificial Intelligence Act Article 12 -requires high-risk AI systems to be designed with capabilities -enabling automatic recording of events ("logs") while the -system is operating. - The U.S. FDA 21 CFR Part 11 requires -computer-generated, timestamped audit trails that independently -record the date, time, operator identity, and actions taken -(Section 11.10(e)). - The Markets in Financial Instruments Directive (MiFID II) - requires firms to maintain records of transactions -and orders that are sufficient to enable supervisory authorities -to monitor compliance. - The Digital Operational Resilience Act (DORA) Article 12 -requires financial entities to have logging policies that record -ICT activities and anomalies. - +frameworks — including , , , +and — require structured, auditable records of automated +decision-making and execution (see for a +detailed mapping). This document defines an extension to the WIMSE architecture that addresses the gap between workload identity and execution @@ -149,8 +135,6 @@ regulatory audit scenarios. Integration with the WIMSE identity framework () An HTTP header for ECT transport () - Operational modes including ledger-optional deployment -() Audit ledger interface requirements () @@ -323,27 +307,34 @@ following mechanisms: key identifier from the agent's WIT. The ECT "iss" claim MUST use the WIMSE workload identifier format (a SPIFFE ID ). - The ECT MUST be signed with the same private key used to -generate the agent's WPT. + The ECT MUST be signed with the same private key associated +with the agent's WIT. The ECT signing algorithm (JOSE header "alg" parameter) MUST match the algorithm used in the corresponding WIT. -When an agent makes an HTTP request to another agent, the three -tokens are carried in their respective HTTP header fields: +When an agent makes an HTTP request to another agent, the +Execution-Context header is carried alongside WIMSE identity +headers:
    - Workload-Proof-Token: Execution-Context: ]]>
    +When a Workload Proof Token (WPT) is available per +, agents SHOULD include it +alongside the WIT and ECT. ECT verification does not depend +on the presence of a WPT; the ECT is independently verifiable +via the WIT public key. + The receiving agent (Agent B) verifies in order: - WIT and WPT (WIMSE layer): Proves who Agent A is and that the -request is authentic. + WIT (WIMSE layer): Verifies Agent A's identity within the +trust domain. WPT verification, if present, per +. ECT (this extension): Records what Agent A did, what policy was evaluated, and what precedent tasks exist. Ledger: Appends the verified ECT to the audit ledger. @@ -757,13 +748,12 @@ parts separated by period (".") characters. An agent sending a request to another agent includes the Execution-Context header alongside the WIMSE Workload-Identity -and Workload-Proof-Token headers: +header:
    @@ -792,12 +782,8 @@ enabling auditors to reconstruct the complete workflow and verify that required predecessor tasks were recorded before dependent tasks. -DAG validation can be performed against an audit ledger (when -available) or against parent ECTs received inline via -Execution-Context headers (in point-to-point mode per -). The validation rules below use the term -"ECT store" to refer to either the ledger or the set of inline -parent ECTs available to the verifier. +DAG validation is performed against the audit ledger, which +serves as the authoritative store of previously verified ECTs.
    Validation Rules @@ -848,15 +834,14 @@ relationship has been established. The following pseudocode describes the DAG validation procedure:
    = ect.iat + clock_skew_tolerance: @@ -864,14 +849,14 @@ function validate_dag(ect, ect_store, clock_skew_tolerance): // Step 3: Cycle detection (with traversal limit) visited = set() - result = has_cycle(ect.jti, ect.par, ect_store, visited, + result = has_cycle(ect.jti, ect.par, ledger, visited, max_ancestor_limit) if result is error or result is true: return error("Circular dependency or depth limit exceeded") return success -function has_cycle(target_jti, parent_ids, ect_store, +function has_cycle(target_jti, parent_ids, ledger, visited, max_depth): if visited.size() >= max_depth: return error("Maximum ancestor traversal limit exceeded") @@ -881,9 +866,9 @@ function has_cycle(target_jti, parent_ids, ect_store, if parent_id in visited: continue visited.add(parent_id) - parent = ect_store.get(parent_id) + parent = ledger.get(parent_id) if parent is not null: - result = has_cycle(target_jti, parent.par, ect_store, + result = has_cycle(target_jti, parent.par, ledger, visited, max_depth) if result is error or result is true: return result @@ -947,10 +932,8 @@ present and well-formed. present and that "pol_decision" is one of "approved", "rejected", or "pending_human_review". Perform DAG validation per . - If all checks pass and an audit ledger is available, the ECT -SHOULD be appended to the audit ledger. In point-to-point -mode (), the verified ECT is retained -locally by the receiving agent. + If all checks pass, the ECT MUST be appended to the audit +ledger. If any verification step fails, the ECT MUST be rejected and the @@ -960,7 +943,7 @@ ledger, to prevent information disclosure. When ECT verification fails during HTTP request processing, the receiving agent SHOULD respond with HTTP 403 (Forbidden) if the -WIT and WPT are valid but the ECT is invalid, and HTTP 401 +WIT is valid but the ECT is invalid, and HTTP 401 (Unauthorized) if the ECT signature verification fails. The response body SHOULD include a generic error indicator without revealing which specific verification step failed. The receiving @@ -1034,110 +1017,28 @@ function verify_ect(ect_jws, verifier_id, return reject("Invalid pol_decision value") // Validate DAG (against ledger or inline parent ECTs) - result = validate_dag(payload, ect_store, + result = validate_dag(payload, ledger, clock_skew_tolerance) if result is error: return reject("DAG validation failed") - // All checks passed - if ledger is available: - ledger.append(payload) - else: - // Point-to-point mode: retain locally - local_ect_cache.store(payload) + // All checks passed; append to ledger + ledger.append(payload) return accept ]]>
    -
    -
    -
    Operational Modes - -ECTs can be deployed in three operational modes depending on the -availability and requirements of the deployment environment. All -modes use the same ECT format and verification procedure; they -differ in how parent ECTs are resolved during DAG validation and -where verified ECTs are stored. - -
    Point-to-Point Mode - -In point-to-point mode, agents pass parent ECTs directly to -downstream agents via multiple Execution-Context HTTP headers. -No centralized ledger is required. The receiving agent verifies -each parent ECT independently and validates the DAG against the -set of ECTs received in the request. - -This mode is suitable for: - - - Cross-organizational workflows where no shared ledger exists - Lightweight deployments where infrastructure is constrained - Early adoption scenarios before ledger infrastructure is -available - - -Limitations of point-to-point mode: - - - No persistent audit trail unless agents independently retain -ECTs - Global replay detection relies solely on "jti" caches at each -agent; there is no centralized "jti" uniqueness check - The parent ECT chain grows with each hop, increasing HTTP -header size - Post-hoc audit reconstruction requires collecting ECTs from -multiple agents - - -Agents operating in point-to-point mode MUST retain verified -parent ECTs for at least the duration of the workflow to support -DAG validation of downstream requests. Agents SHOULD persist -ECTs locally for audit purposes even when no centralized ledger -is available. - -
    -
    Deferred Ledger Mode - -In deferred ledger mode, agents create and verify ECTs in-flight -using point-to-point delivery, and submit collected ECTs to an -audit ledger after the workflow completes or at periodic intervals. - -This mode decouples real-time workflow execution from ledger -availability. DAG validation during execution uses inline parent -ECTs; full DAG validation against the complete workflow is -performed at ledger submission time. - -Agents MUST include all collected ECTs when submitting to the -ledger. The ledger MUST re-validate the complete DAG upon -submission. - -
    -
    Full Ledger Mode - -In full ledger mode, every verified ECT is immediately appended -to an audit ledger. DAG validation is performed against the -ledger, which serves as the authoritative ECT store. This is -the RECOMMENDED mode for regulated environments where persistent, -centralized audit trails are required. -
    Audit Ledger Interface -
    Overview - -Use of an audit ledger is RECOMMENDED for regulated environments -and any deployment requiring persistent, centralized audit trails. -ECTs are designed to be recorded in an immutable audit ledger for +ECTs are designed to be recorded in an immutable audit ledger for compliance verification and post-hoc analysis. This specification -defines the logical interface for the ledger but does not mandate +defines required properties for the ledger but does not mandate a specific storage technology. Implementations MAY use append-only logs, databases with cryptographic commitment schemes, distributed ledgers, or any storage mechanism that provides the required properties. -
    -
    Required Properties - An audit ledger implementation MUST provide: @@ -1145,7 +1046,7 @@ required properties. modified or deleted. Ordering: The ledger MUST maintain a total ordering of ECT entries via a monotonically increasing sequence number. - Lookup by task ID: The ledger MUST support efficient retrieval + Lookup by ECT ID: The ledger MUST support efficient retrieval of ECT entries by "jti" value. Integrity verification: The ledger SHOULD provide a mechanism to verify that no entries have been tampered with (e.g., @@ -1155,35 +1056,6 @@ hash chains or Merkle trees). The ledger SHOULD be maintained by an entity independent of the workflow agents to reduce the risk of collusion. -
    -
    Ledger Entry Structure - -Each ledger entry is a logical record containing: - -
    ", - "signature_verified": true, - "verification_timestamp": "2026-02-24T15:42:31.000Z", - "stored_timestamp": "2026-02-24T15:42:31.050Z" -} -]]>
    - -The "ect_jws" field contains the full JWS Compact Serialization -and is the authoritative record. The other fields ("agent_id", -"action", "parents") are convenience indexes derived from the -ECT payload; if they disagree with the JWS payload, the JWS -payload takes precedence. Implementations SHOULD validate that -convenience index fields match the corresponding values in the -JWS payload at write time to prevent desynchronization between -the authoritative JWS and the indexed fields. - -
    Use Cases @@ -1439,7 +1311,7 @@ regulated environments SHOULD use the "witnessed_by" mechanism to include independent third-party observers at critical decision points. However, the "witnessed_by" claim is self-asserted by the ECT issuer: the listed witnesses do not co-sign the ECT and -there is no cryptographic proof within a single ECT that the +there is no cryptographic evidence within a single ECT that the witnesses actually observed the task. An issuing agent could list witnesses that did not participate. @@ -2393,7 +2265,7 @@ been incorporated into this document. This document obsoletes RFC - +
    Related Work @@ -2540,9 +2412,7 @@ matching the WIT (ES256 recommended). Verify ECT signatures against WIT public keys. Perform DAG validation (parent existence, temporal ordering, cycle detection). - Store verified ECTs (append to audit ledger in full ledger -mode, or retain locally in point-to-point mode per -). + Append verified ECTs to the audit ledger.
    @@ -2882,578 +2752,541 @@ tracing is built.