- keep_both_name(filename, counter) inserts counter before first extension - Handles compound extensions (archive.tar.gz → archive (1).tar.gz) - Handles extensionless files (README → README (1)) - Lives in services/cloud_operations as shared upload-queue helper - All 23 upload contract + keep-both naming tests pass