You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Python: [Bug]: Terminal A2A Task snapshots omit status messages #8998
A terminal A2A Task snapshot with content in status.message drops that content in A2AAgent.run() and poll_task(). The terminal TaskStatusUpdateEvent path already surfaces the same status content. This can hide a failure explanation, including the kind of message emitted by the repository A2A hosting sample.
Expected: The failure note is available in the response, as it is for a terminal status-update event. Artifacts remain the protocol channel for task outputs.
Actual: The response text is empty although the terminal Task contains Agent execution failed..
Code Sample
This uses a mocked provider/client and makes no service request.
🤖 Automated triage reproduction notes(agent-authored — trust but verify)
Agent analysis
The bug reproduces in python/packages/a2a/agent_framework_a2a/_agent.py::_updates_from_task when a terminal Task has content only in status.message; both A2Agent.run() and poll_task() produce an empty response. Minimal repro: provide a mocked failed Task whose status message contains Agent execution failed., invoke either route, and assert that response.text preserves the message.
/plan Investigate the smallest backward-compatible fix through existing PR #8999 by quifox (@quifox), not a competing implementation. Current main terminal Task snapshots parse artifacts/history but omit status.message, whereas terminal status events expose it; a failure-only snapshot can therefore lose its explanation. Keep artifacts as task outputs and define supplemental status-message ordering/identity without duplicating history, standalone messages, repeated snapshots or status events. Reuse shared conversion/finalization helpers before adding parallel tracking abstractions; distinguish real final-response duplication from temporary metadata-only updates removed by finalization, and preserve task/message metadata. Compare current main rather than old patch snippets: terminal/background _operation_state and continuation clearing must survive every return path, including empty or fully deduplicated output, in both run modes and poll_task. Candidate PR touches more than a trivial boundary, so report a conservative production-code scope and meaningful compatibility choices before readiness. Reuse its existing tests and review evidence, then identify missing regressions for failed/completed/cancelled snapshots, status/history/artifact identity overlap, event-before-snapshot and reverse ordering, repeated tasks, metadata-only terminal updates and final continuation state. Coordinate with existing owner Eduard van Valkenburg (@eavanvalkenburg) and preserve #9051 closed state. No assignment, ready label, PR approval or reopening is implied.
Activity
github-actions commentedon Oct 3, 2026
🤖 Automated triage reproduction notes (agent-authored — trust but verify)
Agent analysis
The bug reproduces in
python/packages/a2a/agent_framework_a2a/_agent.py::_updates_from_taskwhen a terminal Task has content only instatus.message; bothA2Agent.run()andpoll_task()produce an empty response. Minimal repro: provide a mocked failed Task whose status message containsAgent execution failed., invoke either route, and assert thatresponse.textpreserves the message.python/packages/a2a/tests/test_a2a_agent.py1.0.0b2610021.0.0b261002eavanvalkenburg commentedon Oct 27, 2026
/plan Investigate the smallest backward-compatible fix through existing PR #8999 by quifox (@quifox), not a competing implementation. Current main terminal Task snapshots parse artifacts/history but omit status.message, whereas terminal status events expose it; a failure-only snapshot can therefore lose its explanation. Keep artifacts as task outputs and define supplemental status-message ordering/identity without duplicating history, standalone messages, repeated snapshots or status events. Reuse shared conversion/finalization helpers before adding parallel tracking abstractions; distinguish real final-response duplication from temporary metadata-only updates removed by finalization, and preserve task/message metadata. Compare current main rather than old patch snippets: terminal/background _operation_state and continuation clearing must survive every return path, including empty or fully deduplicated output, in both run modes and poll_task. Candidate PR touches more than a trivial boundary, so report a conservative production-code scope and meaningful compatibility choices before readiness. Reuse its existing tests and review evidence, then identify missing regressions for failed/completed/cancelled snapshots, status/history/artifact identity overlap, event-before-snapshot and reverse ordering, repeated tasks, metadata-only terminal updates and final continuation state. Coordinate with existing owner Eduard van Valkenburg (@eavanvalkenburg) and preserve #9051 closed state. No assignment, ready label, PR approval or reopening is implied.