s3: bound multipart ops; rtcrec: log failed recording commits
Addresses the two Greptile P1s on #1209: - MultipartWriter's S3 calls had no deadline (the SDK's default HTTP client has none), so a stalled connection could block its caller forever — notably a debug-recording commit, whose writer deliberately runs on a non-cancellable ctx so session teardown can't abort it. Every operation now carries a generous per-op timeout (10m per part, 2m for create/complete/abort), so a genuine stall errors out and surfaces instead of leaking a wedged goroutine + dangling multipart upload. - rtcrec's finishRecording discarded pc.file.Close()'s error, so a failed S3 commit looked identical to success. The outcome is now logged either way; recDone still means "attempt finished" — with the session over there's nothing better to do with a failure than say so loudly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>