S3 upload size mismatch
After writing to S3/CDN, HeadObject size did not match the declared sizeBytes. The product treats the object as bad and removes it.
Why this happens
Usually the origin’s Content-Length (or the size hint passed into writeStorageObject) disagrees with bytes actually stored — truncated stream, wrong header, or pipeline drift. When size is unknown (0), other “saved file size mismatch” wording may appear instead.
Diagnose and fix
1. Check the remote origin: curl -I Content-Length vs a full download size.
2. Use a direct file URL with accurate headers; avoid HTML interstitial pages.
3. Same S3 node checks as S3 object missing after upload (credentials, bucket, IAM).
4. Retry; if only one origin fails, the source is lying about length.
5. Tier max-upload limits are a different message — this one is store-vs-declared size after write.