## 背景 本 issue 创建时,PR #514 正在修复 #513 暴露的出站请求头传递问题。当时仓库锁定 `a2a-sdk==1.1.2`,上游最新正式版为 `1.1.3`。需要在同一分支升级 SDK,并系统审查现有 SDK compatibility layer、私有形状依赖、版本约束与 override 是否仍必要。 ## 当前交付目标 经 #530 的依赖升级与兼容性审计,原定 1.1.3 目标更新为 1.1.5;原问题与兼容层审计范围保持一致。 - 将 `a2a-sdk` 从 1.1.2 升级到 1.1.5,并更新 lockfile。 - 审查 1.1.2 到 1.1.5 的上游变更和依赖变化。 - 运行现有 SDK shape/contract 锁定测试,确认公开与私有依赖面是否漂移。 - 盘点并移除已经不再必要的 compatibility override/workaround;保留项需有当前版本证据和测试保护。 - 审查依赖安全风险与现有 transitive constraints 是否仍必要。 - 更新文档并运行 `./scripts/doctor.sh`。 ## 关联 - #513 - #514 ## 验收标准 - [x] `pyproject.toml` 与 `uv.lock` 锁定 `a2a-sdk 1.1.5` - [x] SDK contract/shape 审计结论可追踪 - [x] 不必要的 override 已删除,必要项有说明 - [x] `./scripts/doctor.sh` 通过 ## 交付状态 实现与审计已提交到 Draft PR #530,待人工审核合并。兼容层、安全下限、protobuf 6/7 与 typing overrides 的保留或移除依据已记录于兼容性文档,#530 合并后关闭本 issue。
Activity
liujuanjuan1984 commentedon Aug 24, 2026
审计进展(基于 #514 当前分支):
v1.1.3release/tag,但 PyPI 的a2a-sdk最新仍是1.1.2,且1.1.3release 没有可下载 assets。uv lock无法解析a2a-sdk==1.1.3,因此当前不能生成可发布、可复现的正式依赖锁;不采用 Git commit 作为公共包运行依赖。4e71245bf2bf4b31f6429f12d97991f1f3d4b3f4(版本报告为 1.1.3)运行 235 项 client、transport contract、task-store shape/parity 与 extension contract 测试,全部通过。PyPI 发布后预计可直接升级。asyncio.Lock切换到threading.RLock;client HTTP header 通道与 database task store 形状均未变化。ClientCallContext.state["headers"]/state["http_kwargs"]双写,只保留 SDK 官方service_parameters通道,并同步测试与维护文档。DatabaseTaskStoreCompat仍是 first-terminal-state-wins 原子写入所必需;SDK 仍无等价公共 API,shape/parity 测试通过,暂不删除。pyasn1>=0.6.4与click>=8.3.3仍需保留:上游包元数据仍允许解析到已知风险版本。pip-audit当前无已知漏洞。./scripts/doctor.sh已通过(817 项测试)。本 issue 保持 open,等待
a2a-sdk 1.1.3实际发布到 PyPI 后完成正式 pin/lock 更新。refactor(client): remove unused call context header state (#515)
docs: consolidate transport testing guidance (#515)
liujuanjuan1984 commentedon Aug 24, 2026
上游
v1.1.3不可从 PyPI 安装的原因已经确认:GitHub Release 对应的发布工作流在校验发行包时失败,报错为 Core Metadata2.5不受当前固定的pypa/gh-action-pypi-publish 1.14.0支持。上游已有 Dependabot PR #1187 升级到支持 Metadata 2.5 的
1.14.2,但尚未合并。为避免信息静默、推动维护者确认并重跑发布,已友善提交英文 bug:https://github.com/a2aproject/a2a-python/issues/1199。在
1.1.3真正发布到 PyPI 前,本分支继续锁定可安装的1.1.2;上游发布恢复后再完成依赖锁文件升级。liujuanjuan1984 commentedon Sep 29, 2026
关联进展:#530 已整合 #527 与 #528,将 a2a-sdk 从 1.1.2 升级至 1.1.5(超过本 issue 原定 1.1.3 目标)。现有 SDK shape/ORM 转换、跨实例终态保护、核心 JSON-RPC 方法和真实出站请求头回归通过。核查发现 SDK 1.1.5 的 DatabaseTaskStore.save 仍使用无终态保护的 ORM merge,因此保留 DatabaseTaskStoreCompat,并在兼容性文档记录依据。本次未放宽 protobuf 上界或移除 transitive security floors;完整兼容层与约束治理仍需本 issue 后续跟进,不在 #530 中自动关闭。
fix(deps): enforce published dependency floors and audit SDK compatib…
liujuanjuan1984 commentedon Sep 29, 2026
审计已在 #530 的 c21ec8e 中补齐:保留仍必要的 SDK 原子终态写入兼容层和无类型第三方模块 overrides;将 click/pyasn1 安全下限提升为发布包 Requires-Dist,移除 uv 专用重复配置;验证 protobuf 6.33.6 与 7.36.2 各 829 项测试通过,放宽至 <8 并移除旧 Dependabot ignore;同步 Ruff hook 与锁定版本。最终依赖集合审计无已知漏洞,wheel/sdist 安装及健康检查通过,实际 wheel 的解析器拒绝低于安全下限的版本组合。原始 1.1.3 升级目标由 1.1.5 取代,#530 已添加 Closes #515,待人工审核合并后关闭。详细保留依据与测试证据已写入 docs/compatibility.md 和 PR 描述。
[-]升级 a2a-sdk 至 1.1.3 并审计下游兼容层[/-][+]升级 a2a-sdk 至 1.1.5 并审计下游兼容层[/+]test(deps): enforce unconditional requirements and cover protobuf 6 i…