Evidence label: deterministic synthetic model. This page runs a small JavaScript model of a client delegating 240 tasks to a remote A2A agent. Each synthetic task has a random duration, may pause for input, and reports state changes through the delivery mechanism you choose; the model injects dropped streams, a webhook receiver outage, lost acknowledgements and an agent restart, and tracks when, or whether, the client learns each outcome. It does not run any agent or network code; every number is a calculated estimate that makes lifecycle failures visible.
Play the lab
How to play
Choose streaming, push notifications or polling, then set what the client does when a stream drops, whether the agent deduplicates on messageId, the push retry count, whether the webhook handler is idempotent, the polling interval, a reconciliation poll for the stream and push modes, and whether the agent persists tasks. Inject Network flaps, a Webhook receiver outage, Lost acknowledgements or an Agent restart. Every change re-runs the same 240 tasks with the same seed; use New random seed to check that a fix is not luck.
Missions unlock in order. Each loads a broken setup and gives up to three stars for meeting the goal with fewer client requests or lower latency.
What the model assumes
Tasks start uniformly over two hours with log-normal durations (median six minutes, capped at an hour). Fifteen percent pause for input part-way through and fail if the client has not answered within 15 minutes; an answer takes 30 seconds. Streams drop about every 90 minutes normally and every 8 minutes with flaps; reattaching takes 2 seconds. Push retries wait 5 × 2k seconds; the receiver is down from minute 40 to 52 during the outage; with lost acknowledgements 15% of delivered events are delivered again. The restart at minute 60 deletes running tasks unless the agent persists them; clients that notice resubmit the task. Polling and reconciliation are charged one request per task per tick.
What it cannot tell you
Real agents differ in how they deduplicate, how long they keep finished tasks, how they recover work after a restart and how they schedule push retries, and real reconciliation with ListTasks costs far less than one request per task. The model also ignores artifact streaming, cancellation and multi-turn follow-ups beyond a single input request. Use it to reason about which mechanism fails how, then check your agent's documentation and test with fault injection.
Read the full explanation
- A2A Task Lifecycle Under Failure: Streaming, Push Notifications and Reconnects (companion article)
- Retrying Agent Tool Calls Without Executing the Same Action Twice
- Supervisor or Swarm: When Multi-Agent Systems Actually Beat One Agent
All AI in Production labs · Lab catalog
- A2A Protocol Specification (latest released version)
- A2A Protocol Specification v1.0.0
- A2A protocol repository: specification, a2a.proto and release notes
- A2A topic guide: streaming and asynchronous operations
- WHATWG HTML Living Standard: server-sent events
Views are my own and do not represent any employer, past or present.