From f531fe1367857317ce6a2a02a423dd3871ea52a1 Mon Sep 17 00:00:00 2001 From: Hongming Wang Date: Mon, 27 Apr 2026 07:16:16 -0700 Subject: [PATCH] =?UTF-8?q?fix:=20drop=20state=5Ftransition=5Fhistory=20fi?= =?UTF-8?q?eld=20=E2=80=94=20removed=20in=20a2a-sdk=201.x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit a2a-sdk 1.x's AgentCapabilities only exposes 4 fields: streaming, push_notifications, extensions, extended_agent_card. The state_transition_history field was removed in the v1 protobuf schema. main.py still passed it as a kwarg, so every workspace that reached the AgentCard construction step (line 188) crashed: ValueError: Protocol message AgentCapabilities has no "state_transition_history" field Symptom: every claude-code + hermes workspace stuck in `provisioning` forever — caught when the user provisioned a Design Director crew manually via the canvas while harness 5 was running. Why every prior smoke gate missed it: - runtime-pin-compat.yml smokes `from molecule_runtime.main import main_sync` — only imports the module. AgentCapabilities() runs inside `async def main()`, not at module load. - Template image boot smoke does `import every /app/*.py` — same story. main.py imports fine; the field error only fires at call. The fix is one line — drop the kwarg. Fields we actually need (streaming + push_notifications) are still passed. Follow-up worth filing: smoke step that instantiates Adapter() + calls a no-op setup() against a stub config. That would have caught this before publish. Co-Authored-By: Claude Opus 4.7 (1M context) --- workspace/main.py | 1 - 1 file changed, 1 deletion(-) diff --git a/workspace/main.py b/workspace/main.py index a947123c..e70b0f7a 100644 --- a/workspace/main.py +++ b/workspace/main.py @@ -188,7 +188,6 @@ async def main(): # pragma: no cover capabilities=AgentCapabilities( streaming=config.a2a.streaming, push_notifications=config.a2a.push_notifications, - state_transition_history=True, ), skills=[ AgentSkill(