Follow-up to #631 (shipped in #641). Rotation moves each object through `putObject` (`surface: "rotate"`), so rotating N attachments consumes N monthly uploads and can throw `InsufficientStorageError` near a plan cap mid-sweep (storage itself nets to zero — the delete releases per object).
Options: exempt the rotate surface from the upload counter (it is a move, not new content), or pre-check the cap for the sweep size before starting. Worth deciding before any sizeable tenant rotates.
Follow-up to #631 (shipped in #641). Rotation moves each object through `putObject` (`surface: "rotate"`), so rotating N attachments consumes N monthly uploads and can throw `InsufficientStorageError` near a plan cap mid-sweep (storage itself nets to zero — the delete releases per object).
Options: exempt the rotate surface from the upload counter (it is a move, not new content), or pre-check the cap for the sweep size before starting. Worth deciding before any sizeable tenant rotates.