Files
ietf-draft-analyzer/workspace/SESSION-2026-04-12.md
Christian Nennemann 37859beef6 feat: interop test package + session handoff doc
Cross-spec interop validation between ietf-act and ietf-ect:
- new packages/interop/ sibling package (ietf-act-ect-interop)
- 32 tests pass: shared claims, algorithm matrix, DAG structure,
  divergence handling, anti-goals
- documents ES256 raw signature wire-compatibility
- documents airtight typ separation (act+jwt vs exec+jwt)

Hazards surfaced:
- ACTLedger.append() silently accepts ECT Payload via duck-typing
  (both have .jti) — documented in interop README as a production
  hazard requiring external isinstance checks

Session handoff:
- SESSION-2026-04-12.md — snapshot of decisions, artifacts, open
  actions, and next-session starting points

Also: session-end commit of hash-format fix propagation to
packages/ect/ (the fix was applied to the old refimpl location
but did not propagate through the parallel package-move agent).
2026-04-12 07:39:41 +02:00

172 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Session Handoff — 2026-04-12 (ACT / ECT IETF Strategy)
**Purpose**: Cold-start snapshot for the next session. Read this plus
`workspace/STRATEGY.md` to pick up without re-discovery.
---
## 1. Session Date & Context
- **Date**: 2026-04-12
- **Trigger**: Between 2026-04-07 and 2026-04-11, 14+ competing IETF
individual drafts and 7+ high-relevance arXiv papers appeared in the
agent-authorization / execution-accountability space. The window to
plant ACT + ECT as the standards-track home for this family is now
narrow. IETF 123 (July 2026) is the landing target.
- **Work mode**: Strategic consolidation — renames, restructure, diff
documents, outreach drafts, interop plan. No new normative content
added beyond what the existing drafts already carried.
---
## 2. Key Decisions Made This Session
1. **`par``pred` claim rename** (ACT). Aligns the ACT predecessor
claim with ECT's identical `pred` claim so both specs use the same
wire token for DAG parent references. Applied across draft text,
refimpl, tests.
2. **"Agent Compact Token" → "Agent Context Token" rename** (ACT).
Preserves the "ACT" acronym. "Context" better describes what the
token carries (invocation context — DAG refs, task metadata,
capabilities, delegation chain, oversight) and creates a clean
semantic pair with ECT (Execution Context Token).
3. **Package split into sibling packages `ietf-act` + `ietf-ect`** (no
shared core). Moved from monorepo with shared module to
`workspace/packages/act/` and `workspace/packages/ect/` as
independent packages. Decision: do not build a shared-core library
— the two specs have intentionally different scope, and forcing
shared abstractions obscures that. Cross-spec guarantees are
documented and tested via a separate `packages/interop/` plan.
4. **Position Option B chosen**: ECT is a WIMSE profile that
**normatively references** ACT. ACT is the general-purpose
primitive, ECT is the WIMSE-identity-bound execution profile. This
lets ECT be submitted for WIMSE WG adoption while ACT stays on the
independent-submission path (no WG dependency), and they cite each
other cleanly.
5. **`inp_hash` / `out_hash` format divergence acknowledged, not
unified this session**. ACT emits plain base64url; ECT validator
requires `sha-256:<b64url>` prefix. Documented as expected-xfail in
the interop test plan rather than forced into alignment — spec-level
decision deferred.
---
## 3. Artifacts Produced / Updated This Session
| Path (relative to `workspace/`) | Purpose |
|---|---|
| `STRATEGY.md` | Master strategy doc — landscape, positioning, phased action plan, risk register, success criteria |
| `packages/act/draft-nennemann-act-01.md` | ACT -01 draft; new §1.4.1 Related Work (concurrent proposals), new §1.5 Applicability (MCP/OpenAI/LangGraph/A2A/CrewAI/ECT), new §7.3 DAG vs Linear Delegation Chains |
| `packages/act/` (`ietf-act` refimpl) | 103 tests passing after `pred` and Context rename |
| `packages/ect/` (`ietf-ect` refimpl) | 56 tests passing; `inp_hash` bug fixed (removed stale `sha-256:` transformation in emitter path) |
| `packages/INTEROP-TEST-PLAN.md` | Planned `packages/interop/tests/test_interop.py` structure — shared-claim consistency, algorithm matrix, DAG cross-reference, claim divergence, anti-goals; user-facing compatibility matrix |
| `drafts/ietf-wimse-ect/draft-nennemann-wimse-ect.md` | ECT -02 (docname `draft-nennemann-wimse-ect-02`); normative ref to `I-D.nennemann-act` added |
| `drafts/ietf-wimse-ect/DIFF-vs-txn-tokens-for-agents.md` | ~1235-word factual diff doc vs `draft-oauth-transaction-tokens-for-agents-06` — claim-level matrix, lifecycle comparison, composition scenarios |
| `drafts/ietf-wimse-ect/wimse-intro-email.md` | ~390-word introduction email for wimse@ietf.org |
| `drafts/ietf-wimse-ect/ietf123-slides-outline.md` | 10-minute WIMSE slot outline: 10 slides, pacing plan, Mermaid diagrams for WIT/WPT/ECT layering and DAG-vs-linear, speaker notes, timing-discipline cuts |
| `drafts/outreach/emirdag-liaison-email.md` | Liaison email to Dr. Emirdag on SCITT-AI-agent-execution overlap; proposes cross-citation, claim alignment, possible joint IETF 123 slot |
| `drafts/outreach/oauth-ml-response.md` | Short oauth@ietf.org response to Txn-Tokens-for-Agents-06; frames ACT `pred` DAG as generalization of Raut et al.'s linear `actchain` |
---
## 4. Open Action Items (what the user does next)
Phase A items from `STRATEGY.md` still require execution:
- [ ] **A1**: Update ECT HTTP header section — replace `Wimse-Audience`
header with `wimse-aud` signature metadata parameter per
`draft-ietf-wimse-http-signature-03` (breaking change upstream,
published 2026-04-07).
- [ ] **A2**: Update SCITT refs in ACT to `draft-ietf-scitt-architecture-22`
(AUTH48); note "to be RFC-XXXX upon publication".
- [ ] **A3**: Lock Txn-Tokens refs in ACT/ECT to
`draft-ietf-oauth-transaction-tokens-08`.
- [ ] **A7**: Commit workspace + `research.ietf` subrepo changes.
Phase B outreach items (drafted but not sent):
- [ ] **B1**: Send Emirdag liaison email (`drafts/outreach/emirdag-liaison-email.md`).
- [ ] **B2**: Submit ACT -01 to datatracker.
- [ ] **B3**: Submit ECT -02 to datatracker.
- [ ] **B4**: Post ECT intro email to wimse@ietf.org, link DIFF doc.
- [ ] **B5**: Post OAuth ML response to oauth@ietf.org.
- [ ] **B6**: Request 10-min WIMSE slot at IETF 123.
- [ ] **B7**: Watch DAWN WG charter formation.
---
## 5. Pending Decisions (need user input)
- **Emirdag engagement depth**: liaison citation only, co-authorship
offer on a joint anchoring section, or just passive cross-citation?
The drafted email leaves all three doors open — pick one before
sending.
- **Refimpl publication to PyPI**: package names `ietf-act` and
`ietf-ect` are reserved but not published. User approval required
before any `twine upload`.
- **Repo strategy**: single monorepo for both drafts, or split into
separate Git repos so each draft has its own "home" for
kramdown-rfc / datatracker watchers? Current state is monorepo.
- **IETF 123 travel**: in person (Madrid) or remote? Affects
slide-prep cadence and whether to plan side meetings with Emirdag
/ Bertocci.
- **Hash encoding alignment** (ACT plain b64url vs ECT `sha-256:`
prefix): decide which spec moves, or keep divergence documented.
Interop plan currently pins it as xfail.
---
## 6. Known Landscape Threats (top 3)
1. **`draft-oauth-transaction-tokens-for-agents-06`** (Raut / Amazon,
2026-04-11). Linear `actchain` at OAuth AS layer — directly in the
same conceptual neighborhood as ACT. If this gets OAuth WG adoption
before ACT is visible, ACT has to position as "DAG generalization /
no-AS variant" instead of the default.
2. **`draft-emirdag-scitt-ai-agent-execution-00`** (VERIDIC, 2026-04-07).
AIR (AgentInteractionRecord) as SCITT payload. Not a direct
competitor but overlapping on input/output hashing, reasoning
capture, causality. Risk: if adopted first, ACT looks redundant
unless positioned as the *lifecycle* that AIR *anchors*.
3. **arXiv 2603.24775 (AIP / IBCTs)**. Closest *technical* competitor —
JWT + Biscuit/Datalog, exposes auth gap on ~2000 MCP servers, same
peer-to-peer-without-AS story. Not an IETF draft so no WG adoption
risk, but could become the citation of record in academic /
industry press if ACT is not visible fast.
(Full landscape table: `STRATEGY.md` §3.)
---
## 7. Next Session Starting Points (first 3 things)
1. **Read** `docs/control-center.md` (workspace root) and
`workspace/STRATEGY.md`; confirm Phase A is still the active phase.
2. **Execute A1** — patch ECT's HTTP header section to the
`wimse-aud` signature parameter form. This is the most urgent
technical fix; it's a breaking upstream change from
`draft-ietf-wimse-http-signature-03` and blocks ECT -02 submission.
3. **Execute A2 + A3** — refresh SCITT and Txn-Tokens reference
versions in both drafts so the submission snapshot is current.
After A1A3, move to Phase B (submissions + outreach sends).
---
## 8. Reference State Snapshot
- ACT refimpl: `packages/act/` — 103 tests pass, `pred` + Context
rename done, EdDSA + ES256 both supported.
- ECT refimpl: `packages/ect/` — 56 tests pass, `inp_hash` fix
applied, ES256 only, `exec+jwt` typ (legacy `wimse-exec+jwt` still
accepted).
- Interop package: not yet created; plan is in
`packages/INTEROP-TEST-PLAN.md`.
- Draft versions: ACT at `-01`, ECT at `-02` (`docname:
draft-nennemann-wimse-ect-02`).
- No submissions on datatracker yet this session (pending Phase A
completion).