- 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
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. |