- 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
56 lines
2.6 KiB
Markdown
56 lines
2.6 KiB
Markdown
# 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](../a2a-specification.md): current method mapping table (§5.3) and error-code table (§5.4).
|
|
- [Reference A2A driver](../cap-rs-a2a-driver.md): proves the CAP ecosystem speaks draft-style endpoints in practice.
|
|
- [CAP Core v1](../cap-core-v1.md): §6.5/§7.8/C.4 as the CAP-literal requirements.
|
|
- [A2A proto](../a2a-proto.md): 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. |
|