Wait for an upload's URL to expire before deleting its bytes

An image deleted while its presigned PUT was still in flight lost its row
before the bytes landed, so the object stayed in R2 with nothing left to
reclaim it. Intents now record when their upload URL expires, and the
physical-deletion claim skips an asset until that time plus a 15 minute
grace for a PUT that started just before expiry. The hourly sweep picks
it up afterwards.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2b1dffb395Dara Adedeji committed on 9/28/2026, 4:16:33 PMparentd7d9d58
4 files changedLine totals unavailable