a2aproject / a2aproject/A2A

[Epic] Idempotency & safe retries

未关闭
#1,987 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
enhancement v1.1-candidate
主要语言
Shell
星标
25.7k
派生
2.6k
平均合并
3 天 6 小时
30 天内合并 PR
16

描述

## Idempotency & safe retries

### Problem

If a client crashes (or the connection drops) after sending the first message but before it receives and persists the server-generated `taskId`/`contextId`, it has no way to learn whether a task was started on its behalf — and no safe way to retry. There is no transport-level mechanism to deduplicate retried requests.

### Consolidated issues

- [ ] #928 — Idempotency hole when sending the first message *(anchor; `v1.1-candidate`, defines the problem)*
- [ ] #1893 — Standardize an `Idempotency-Key` header for the JSON-RPC/HTTP binding *(proposed mechanism)*

### Acceptance criteria

- The spec defines an idempotency mechanism for message send (client-supplied idempotency key and/or a defined retry/replay contract).
- Server-side deduplication semantics are specified (what a server MUST do on a repeated key).
- Mechanism is expressed consistently across all three bindings.
- Security considerations are addressed (idempotency keys MUST NOT enable unauthorized cross-client interaction with a task — the original reason compound/client-set IDs were removed).

### Notes

#928 is the problem statement; #1893 is one concrete solution (an `Idempotency-Key` header). Resolve them together so the chosen mechanism actually closes the #928 hole.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。