Files
PaperClipAI/packages
Priya RamanandPaperclip f09d5ba416 fix(sandbox): make a pre-response duplex forward failure non-retryable for a mutating method
The duplex broker forwarded each request and mapped a forward rejection to a
retryable 502 when its controller was not aborted. A fetch can reject after the
request bytes reach the host and the host commits a mutation, but before the
response headers arrive. A retry then sent a new request id outside the broker
deduplication set, so the host applied the mutation twice.

The broker now classifies a non-aborted forward rejection by method safety. A
safe method (GET, HEAD, OPTIONS, TRACE) never changes host state, so its
rejection stays a retryable 502. Any other method may have committed, so the
broker returns a non-retryable 504 and marks the outcome indeterminate. The
in-sandbox gateway maps the indeterminate outcome to a terminal 409, so a caller
never repeats a possibly-committed mutation. Add broker coverage for both paths.

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-08-20 06:28:17 +00:00
..