{"code":"BLOB_BAK_PUT_F","title":"Backup S3 PUT failed (R2 → Hetzner mirror)","description":"Scout's `sync-blob-backup` worker could not copy a blob from the primary R2 bucket into the Hetzner backup bucket. The row keeps `backup_date NULL` and is retried on the next 1-min tick. Investigate backup credentials, endpoint reachability, bucket quota, or the specific object (missing on primary?).","documented":true,"module":{"code":"BLOB","description":"Blob storage replication R2 → Hetzner (scout sync-blob-backup)"},"severity":"warning","impact":"none","retry":"auto","causes":["Copying a stored file to the backup bucket failed because the backup storage was unreachable or rejected the upload.","The original file is missing in primary storage."],"resolution":["No customer action is needed; the copy is retried automatically.","If the same file keeps failing, BizKitHub operations will check whether it still exists in primary storage."],"related":[{"code":"BLOB_BAK_CRASH","title":"File backup worker crashed mid-run","url":"https://docs.bizkithub.com/en/system-codes/BLOB_BAK_CRASH"},{"code":"BLOB_BAK_NOENV","title":"Blob backup worker ran without backup credentials","url":"https://docs.bizkithub.com/en/system-codes/BLOB_BAK_NOENV"}],"url":"https://docs.bizkithub.com/en/system-codes/BLOB_BAK_PUT_F"}