Skip to content

升级 a2a-sdk 至 1.1.5 并审计下游兼容层 #515

Closed

Description

@liujuanjuan1984

背景

本 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。

关联

验收标准

  • pyproject.toml 与 uv.lock 锁定 a2a-sdk 1.1.5
  • SDK contract/shape 审计结论可追踪
  • 不必要的 override 已删除,必要项有说明
  • ./scripts/doctor.sh 通过

交付状态

实现与审计已提交到 Draft PR #530,待人工审核合并。兼容层、安全下限、protobuf 6/7 与 typing overrides 的保留或移除依据已记录于兼容性文档,#530 合并后关闭本 issue。

Activity

  1. liujuanjuan1984 commented on Aug 24, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    审计进展(基于 #514 当前分支):

    • 上游 GitHub 已创建 v1.1.3 release/tag,但 PyPI 的 a2a-sdk 最新仍是 1.1.2,且 1.1.3 release 没有可下载 assets。uv lock 无法解析 a2a-sdk==1.1.3,因此当前不能生成可发布、可复现的正式依赖锁;不采用 Git commit 作为公共包运行依赖。
    • 已临时安装 release 精确 commit 4e71245bf2bf4b31f6429f12d97991f1f3d4b3f4(版本报告为 1.1.3)运行 235 项 client、transport contract、task-store shape/parity 与 extension contract 测试,全部通过。PyPI 发布后预计可直接升级。
    • 1.1.2→1.1.3 的运行时代码变更仅涉及 in-memory store/queue/active registry 的跨 event loop 锁,从 asyncio.Lock 切换到 threading.RLock;client HTTP header 通道与 database task store 形状均未变化。
    • 已在 fix(client): propagate outbound headers through SDK transports #514 删除无消费者的 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 更新。

  2. liujuanjuan1984 commented on Aug 24, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    上游 v1.1.3 不可从 PyPI 安装的原因已经确认:GitHub Release 对应的发布工作流在校验发行包时失败,报错为 Core Metadata 2.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;上游发布恢复后再完成依赖锁文件升级。

  3. liujuanjuan1984 commented on Sep 29, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    关联进展:#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 中自动关闭。

  4. liujuanjuan1984 commented on Sep 29, 2026

    @liujuanjuan1984
    CollaboratorAuthor

    审计已在 #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 描述。

  5. changed the title [-]升级 a2a-sdk 至 1.1.3 并审计下游兼容层[/-] [+]升级 a2a-sdk 至 1.1.5 并审计下游兼容层[/+] on Sep 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions