diff --git a/draft-nennemann-wimse-execution-context-00.html b/draft-nennemann-wimse-execution-context-00.html index eb55c17..3cb16b6 100644 --- a/draft-nennemann-wimse-execution-context-00.html +++ b/draft-nennemann-wimse-execution-context-00.html @@ -1447,194 +1447,211 @@ regulatory frameworks.¶
11.2. Self-Assertion Limitation
+An HTTP header for ECT transport (Section 5)¶
Audit ledger interface requirements (Section 8)¶
+Operational modes including ledger-optional deployment +(Section 8)¶
+The following are out of scope and are handled by WIMSE:¶
@@ -2236,7 +2257,7 @@ evaluated for this task (e.g.,REQUIRED. String. The result of the policy evaluation. MUST be one of the values registered in the ECT Policy Decision -Values registry (Section 12.4). Initial values +Values registry (Section 13.4). Initial values are:¶
OPTIONAL. String. The regulatory domain applicable to this task. Values MUST be registered in the ECT Regulated Domain -Values registry (Section 12.5).¶
+Values registry (Section 13.5).¶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.¶
Task ID Uniqueness: The "tid" claim MUST be unique within the applicable scope (the workflow identified by "wid", or the -entire ledger if "wid" is absent). If a task with the same +entire ECT store if "wid" is absent). If a task with the same "tid" already exists, the ECT MUST be rejected.¶
Parent Existence: Every task identifier listed in the "par" -array MUST correspond to a task that has been previously -recorded in the ledger. If any parent task is not found, the -ECT MUST be rejected.¶
+array MUST correspond to a task that is available in the ECT +store (either previously recorded in the ledger or received +inline as a verified parent ECT). If any parent task is not +found, the ECT MUST be rejected.¶Temporal Ordering: The "iat" value of every parent task MUST NOT be greater than the "iat" value of the current task plus a
@@ -2578,7 +2606,7 @@ That is, for each parent: parent.iat < child.iat +
clock_skew_tolerance. The tolerance accounts for clock skew
between agents; it does not guarantee strict causal ordering
from timestamps alone. Causal ordering is primarily enforced
-by the DAG structure (parent existence in the ledger), not by
+by the DAG structure (parent existence in the ECT store), not by
timestamps. If any parent task violates this constraint, the
ECT MUST be rejected.¶
-function validate_dag(ect, ledger, clock_skew_tolerance):
+function validate_dag(ect, ect_store, clock_skew_tolerance):
+ // ect_store: ledger or local cache of verified ECTs
// Step 1: Uniqueness check
- if ledger.contains(ect.tid, ect.wid):
- return error("Task ID already exists in ledger")
+ if ect_store.contains(ect.tid, ect.wid):
+ return error("Task ID already exists")
// Step 2: Parent existence and temporal ordering
for parent_id in ect.par:
- parent = ledger.get(parent_id)
+ parent = ect_store.get(parent_id)
if parent is null:
return error("Parent task not found: " + parent_id)
if parent.iat >= ect.iat + clock_skew_tolerance:
@@ -2629,15 +2658,15 @@ function validate_dag(ect, ledger, clock_skew_tolerance):
// Step 3: Cycle detection (with traversal limit)
visited = set()
- result = has_cycle(ect.tid, ect.par, ledger, visited,
+ result = has_cycle(ect.tid, ect.par, ect_store, 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_tid, parent_ids, ledger, visited,
- max_depth):
+function has_cycle(target_tid, parent_ids, ect_store,
+ visited, max_depth):
if visited.size() >= max_depth:
return error("Maximum ancestor traversal limit exceeded")
for parent_id in parent_ids:
@@ -2646,9 +2675,9 @@ function has_cycle(target_tid, parent_ids, ledger, visited,
if parent_id in visited:
continue
visited.add(parent_id)
- parent = ledger.get(parent_id)
+ parent = ect_store.get(parent_id)
if parent is not null:
- result = has_cycle(target_tid, parent.par, ledger,
+ result = has_cycle(target_tid, parent.par, ect_store,
visited, max_depth)
if result is error or result is true:
return result
@@ -2750,8 +2779,10 @@ verifier's current time, to account for clock skew).Perform DAG validation per Section 6.¶
If all checks pass, the ECT MUST be appended to the audit -ledger.¶
+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 any verification step fails, the ECT MUST be rejected and the @@ -2837,14 +2868,18 @@ function verify_ect(ect_jws, verifier_id, ["approved", "rejected", "pending_human_review"]: return reject("Invalid pol_decision value") - // Validate DAG - result = validate_dag(payload, ledger, + // Validate DAG (against ledger or inline parent ECTs) + result = validate_dag(payload, ect_store, clock_skew_tolerance) if result is error: return reject("DAG validation failed") - // All checks passed; append to ledger - ledger.append(payload) + // All checks passed + if ledger is available: + ledger.append(payload) + else: + // Point-to-point mode: retain locally + local_ect_cache.store(payload) return accept
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.¶
+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 "tid" 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.¶
+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.¶
+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.¶
+ECTs are designed to be recorded in an immutable audit ledger for +
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.¶
+required properties.¶An audit ledger implementation MUST provide:¶
-Append-only semantics: Once an ECT is recorded, it MUST NOT be -modified or deleted.¶
+An audit ledger implementation MUST provide:¶
+Append-only semantics: Once an ECT is recorded, it MUST NOT be +modified or deleted.¶
Ordering: The ledger MUST maintain a total ordering of ECT -entries via a monotonically increasing sequence number.¶
+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 -of ECT entries by "tid" value.¶
+Lookup by task ID: The ledger MUST support efficient retrieval +of ECT entries by "tid" value.¶
Integrity verification: The ledger SHOULD provide a mechanism +
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).¶The ledger SHOULD be maintained by an entity independent of the -workflow agents to reduce the risk of collusion.¶
+The ledger SHOULD be maintained by an entity independent of the +workflow agents to reduce the risk of collusion.¶
Each ledger entry is a logical record containing:¶
+Each ledger entry is a logical record containing:¶
{
"ledger_sequence": 42,
@@ -2931,45 +3058,45 @@ workflow agents to reduce the risk of collusion.Ledger Entry Example
The "ect_jws" field contains the full JWS Compact Serialization +
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 authoritative JWS and the indexed fields.¶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 "tid" values are required to be -UUIDs per Section 4.2.2.¶
+UUIDs per Section 4.2.2.¶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): tid: task-001 par: [] @@ -3003,24 +3130,24 @@ Human Release Manager: 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.¶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) | @@ -3041,42 +3168,42 @@ task-005 (approve_release) [human, witnessed] 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.¶
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): tid: task-001 par: [] @@ -3116,33 +3243,33 @@ Agent C (Execution): 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.¶
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",
@@ -3150,6 +3277,7 @@ a cryptographic link to the original task: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.¶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): tid: task-001 par: [] @@ -3213,72 +3341,72 @@ System (Commitment): 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.¶This section addresses security considerations following the -guidance in [RFC3552].¶
+This section addresses security considerations following the +guidance in [RFC3552].¶
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.¶
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 @@ -3286,306 +3414,306 @@ 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.¶
+list witnesses that did not participate.¶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 "tid" in the "par" array, -linking the attestation to the original task.¶
+MUST include the observed task's "tid" 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.¶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.¶
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.¶
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.¶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.¶
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.¶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.¶
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.¶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.¶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.8).¶
+5 levels (see also Section 4.2.8).¶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)¶
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.7) +embedding policy content.¶
+The "compensation_reason" claim (Section 4.2.7) 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 @@ -3593,167 +3721,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.¶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.¶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.¶This document requests registration of the following media type -in the "Media Types" registry maintained by IANA:¶
-application¶
+This document requests registration of the following media type +in the "Media Types" registry maintained by IANA:¶
+application¶
wimse-exec+jwt¶
+wimse-exec+jwt¶
none¶
+none¶
none¶
+none¶
8bit; an ECT is a JWT that is a JWS using the Compact +
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.¶See the Security Considerations section of this document.¶
+See the Security Considerations section of this document.¶
none¶
+none¶
This document¶
+This document¶
Applications that implement regulated agentic workflows requiring -execution context tracing and audit trails.¶
+Applications that implement regulated agentic workflows requiring +execution context tracing and audit trails.¶
Magic number(s): none +
Magic number(s): none File extension(s): none -Macintosh file type code(s): none¶
+Macintosh file type code(s): none¶Christian Nennemann, ietf@nennemann.de¶
+Christian Nennemann, ietf@nennemann.de¶
COMMON¶
+COMMON¶
none¶
+none¶
Christian Nennemann¶
+Christian Nennemann¶
IETF¶
+IETF¶
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:¶
-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:¶