Rename the 'par' (Parent Task Identifiers) JWT claim to 'pred'
(Predecessor Task Identifiers) to avoid collision with RFC 9126
(Pushed Authorization Requests) which already registers 'par' in
the IANA JWT Claims registry. Fix IETF area from ART to SEC since
WIMSE is in the Security area.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Drop versioned directories and archive/ in favor of git tags (draft-00,
draft-01) for frozen submissions. Rename source to
draft-nennemann-wimse-ect.md (version comes from docname in front matter).
Update build.sh to extract docname automatically. Ignore generated outputs.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduces three assurance levels (L1 unsigned JSON, L2 JOSE signing,
L3 JOSE signing with audit ledger) so deployments can choose the
appropriate trade-off between simplicity and regulatory compliance.
Decouples ECTs from WIMSE/SPIFFE hard dependencies by introducing an
abstract identity binding model with concrete profiles for WIMSE,
X.509, and JWK sets. The typ header moves from wimse-exec+jwt to
exec+jwt (with backward compatibility).
Includes blog article (blog-ect-assurance-levels.md) explaining the
assurance levels change and identity-framework agnostic design.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move Go reference implementation to refimpl/go-lang/ and add new
Python reference implementation in refimpl/python/. Update build.sh
with renamed draft and simplified tool paths.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Address 11 items from peer review:
- Fix area designation from Security to ART (WIMSE is in ART area)
- Switch inp_hash/out_hash to fixed SHA-256 without algorithm prefix,
matching DPoP (RFC 9449) and WIMSE WPT tth claim patterns
- Add partial DAG verification guidance for unavailable parents
- Add DAG integrity attacks subsection (false parents, pruning, shadow DAGs)
- Add privilege escalation subsection (ECTs are not authorization)
- Add revocation propagation semantics through the DAG
- Add W3C PROV Data Model to Related Work
- Strengthen Txn-Token differentiation with fan-in/convergence bullet
- Add explicit token binding paragraph to replay prevention
- Switch verification step 3 to algorithm allowlist model
- Add par/ext claim naming justification notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove all companion draft (ect-pol) references, regulatory
compliance mappings, pre-defined extension keys, witness concept,
pseudocode blocks, implementation guidance appendix, and redundant
examples. Keep only the core token format, DAG validation,
verification procedure, and one cross-organization use case.
Draft reduced from ~40 pages to 27 pages.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use cases (medtech SDLC, financial trading, logistics) are
motivating examples, not protocol definition. Moving them to
the appendix keeps the normative body focused on format,
transport, validation, and security.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move all policy evaluation (pol, pol_decision, pol_enforcer) and
compensation claims to I-D.nennemann-wimse-ect-policy-compensation.
Base spec now focuses on execution ordering, DAG structure, and
audit trail. All examples, diagrams, and prose updated accordingly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Restore from pre-linter base (898b0f8) and re-apply targeted
changes to avoid unintended structural rewrites:
- Remove sub claim (always equals iss, adds no information)
- Move compensation_required and compensation_reason to ext keys
- Trim witness attestation section to concise guidance
- Fix ledger-mandatory language in verification step 15 and
minimal implementation step 5
- Add RFC 8126 to normative references
Policy evaluation claims (pol, pol_decision, pol_enforcer) remain
as registered JWT claims in this spec.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
RFC 8126 (IANA Considerations guidelines) was used inline
but missing from the normative references list.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove sub claim (always equals iss, added no information)
- Move compensation_required and compensation_reason to ext keys
- Move pol, pol_decision, pol_enforcer to ext keys
- IANA JWT Claims table reduced from 11 to 6 registered claims
- Trim witness attestation section to concise guidance
- Fix remaining ledger-mandatory language in verification
step 15 and minimal implementation guidance
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move 6 metadata claims (pol_timestamp, inp_classification,
exec_time_ms, regulated_domain, model_version, witnessed_by)
from registered JWT claims to recommended ext extension keys.
Use short key names for spec-defined extensions.
Make audit ledger explicitly optional: rename pseudocode
parameter from ledger to ect_store, mark architecture diagram
ledger layer as optional, add conditional append logic, and
soften Audit Ledger Interface language.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow any URI scheme for the iss claim (SPIFFE, HTTPS, URN:UUID)
to support non-WIMSE deployments that want DAG tracing without
SPIFFE infrastructure. SPIFFE format remains SHOULD for WIMSE
deployments.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Use correct IETF reverse domain notation for spec-defined
extension keys within the ext object.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Remove Operational Modes section (point-to-point, deferred,
full ledger) to reduce surface area for a -00 submission
- Trim Ledger Interface to essential properties only, remove
ledger entry JSON example
- Condense regulatory motivation in Introduction to 2 sentences
with forward reference to compliance mapping table
- Reframe "cryptographic proof" to "signed, structured records"
in abstract and introduction to accurately reflect self-assertion
- Make WPT co-presence RECOMMENDED rather than assumed, hedging
against s2s-protocol evolution; ECT is independently verifiable
via WIT public key
- Fix broken reference: draft-oauth-transaction-tokens-for-agents
(not an ietf- WG draft)
- Add jti to all JSON examples (required claim was missing from 9
of 10 examples)
- Clean up dangling cross-references to removed sections
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Eliminate the "tid" claim; "jti" now serves as both token ID (for
replay detection) and task ID (for DAG parent references in "par")
- Make "pol" and "pol_decision" OPTIONAL (must be paired when present)
- Regulated deployments SHOULD still include policy claims
- Reduces required ECT-specific claims to just "exec_act" and "par"
- Remove "tid" from IANA JWT Claims registration
- Update all examples, pseudocode, and DAG validation rules
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ect library: create, verify, DAG validation, ledger interface
- In-memory ledger and ECTStore for full ledger mode
- Test vectors and unit tests; two-agent demo (cmd/demo)
- README: document refimpl scope and usage
Co-authored-by: Cursor <cursoragent@cursor.com>
ECTs can now be deployed without a centralized ledger. Three modes
are defined: point-to-point (agents pass parent ECTs inline via HTTP
headers), deferred ledger (collect ECTs in-flight, submit later), and
full ledger (immediate append, RECOMMENDED for regulated environments).
DAG validation is generalized to work against an "ECT store" which
can be either a ledger or the set of inline parent ECTs received in
the request.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add paragraph in Policy Claims section explicitly stating that
policy definition, distribution, and evaluation are out of scope.
The pol claim is an opaque identifier; any policy engine may be
used provided outcomes are faithfully recorded.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add build.sh that auto-discovers kramdown-rfc2629 and xml2rfc
regardless of PATH configuration, generates XML, TXT, and HTML
in one step.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove RFC 2119 and RFC 8174 from normative YAML block since the
BCP 14 boilerplate directive adds them automatically, causing
duplicate reference warnings. Rebuild draft with zero warnings.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove RFC 3339 from normative references (not cited in text;
timestamps use NumericDate per RFC 7519). Change bank.com to
bank.example in compensation use case per RFC 2606.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The ECT workflow identifier (wid) can serve as a correlation point
in SCITT Signed Statements, bridging per-step execution accountability
with end-to-end supply chain transparency.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the clinical treatment recommendation workflow with a
software development lifecycle (SDLC) workflow covering spec
review, code generation, autonomous testing, build validation,
and HITL release approval. Add FDA audit subsection showing DAG
reconstruction for regulatory evidence review. Update Example 2
in appendix with matching detailed JSON examples for all 5 SDLC
phases.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Initial submission of draft-nennemann-wimse-execution-context-00,
defining Execution Context Tokens (ECTs) as a WIMSE extension for
distributed agentic workflows in regulated environments.
ECTs provide cryptographic proof of task execution order, policy
enforcement decisions, and compliance state using JWT/JWS format
with DAG-structured task dependencies.
Key features:
- 17 new JWT claims for execution context tracing
- Execution-Context HTTP header for token transport
- DAG validation with cycle detection and temporal ordering
- Audit ledger interface specification
- Integration with WIMSE WIT/WPT signing model
- Use cases: medtech, finance, logistics, compensation/rollback
Includes master-prompt.md with design rationale and iteration plan.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>