Interactive lab / Agents and Protocols

A2A tasks under failure: reattach, retry, reconcile

Follow 240 synthetic A2A tasks through dropped streams, webhook outages, lost acks and an agent restart. Recover every outcome in four missions.

By Sandeep Belgavi · Published 2026-10-30

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

All AI in Production labs · Lab catalog

Views are my own and do not represent any employer, past or present.