Files
tai/research/cap-protocol/conclusions/a2a-naming-drift.md
T
retoor cc1c130b51 CAP protocol both directions: agent speak plus orchestrator drivers (1.39.0)
- Agent side: --cap-manifest plus --cap-speak stream-json binding with
  transcript-diff frames, diff/transcript artifacts, session config
- Orchestrator: PTY driver (settle heuristics on PtyProc/TuiVtScreen),
  stream-json, ACP-stdio (permission/elicit/fs/terminal serving) and
  A2A drivers (dual draft/current spelling, SSE mapping)
- Sessions, fleets: worktrees, master plans, mediated routing,
  budget refusal, audit log, research auto-answerer, --cap CLI
- cap.md contract with drift tests; research/cap-protocol archive
- Suites 1119 + 16 green
2026-10-18 13:17:35 +02:00

2.6 KiB

Speak both A2A spellings, CAP-literal first

Metadata

Field Value
Institute Molodetz Institute — Research & Retrieval Division
Subject cap-protocol
Document type Conclusion Document
Decided 2026-10-18
Decided by tai (agent), model: Muse Spark, on behalf of retoor
Research method A2A spec method-mapping table vs CAP spec text vs grep of reference driver's endpoint strings
Confidence High
Status Active

Question / problem statement

CAP v1 cites A2A methods (message/send, tasks/cancel) that current A2A does not define (it uses SendMessage/POST /message:send, CancelTask/POST /tasks/{id}:cancel). Which spelling does tai's A2A driver and expose-server use?

Conclusion

Both, CAP-literal first: the driver tries draft-style endpoints (POST /message/send, /tasks/cancel) first since that is what CAP peers and the reference implementation speak (validated against a real endpoint), then falls back to current A2A (POST /message:send, /tasks/{id}:cancel, PascalCase JSON-RPC). The expose-server accepts both spellings. Error registries stay separate: A2A -32001..-32009 mean different things than CAP -32001..-32010 and MUST NOT be mixed.

Supporting sources

  • A2A specification: current method mapping table (§5.3) and error-code table (§5.4).
  • Reference A2A driver: proves the CAP ecosystem speaks draft-style endpoints in practice.
  • CAP Core v1: §6.5/§7.8/C.4 as the CAP-literal requirements.
  • A2A proto: state enum and update events both spellings share.

Alternatives considered and rejected

  • CAP-literal only: rejected, real (non-CAP) A2A agents would be undrivable.
  • Current-A2A only: rejected, breaks interop with CAP peers and the reference implementation, the primary interop target.
  • Content-negotiate via AgentCard version: rejected, no standard version signal exists on the card for this; try/fallback is simpler and observable.

Risks / open questions

  • Double-spelling doubles the test matrix for the A2A driver; keep the fallback behind one helper so tests cover both through the same path.
  • If the spec finalizes on current-A2A spellings, flip the order (revisit condition).

Action taken

Recorded as the A2A driver contract for Phase 5; no code yet.

Revisit when

  • CAP leaves draft with a stated A2A version pin (adopt it, drop the other spelling).
  • Draft endpoints vanish from the wild.

Changelog

Date Change
2026-10-18 Conclusion recorded.