fix: use float literals for progress_pct to satisfy beartype (#634)

beartype runtime type checking requires exact type matches.
`progress_pct=0` (int) fails validation against `float | None`.

fixes upload failure: "BeartypeCallHintParamViolation: parameter
progress_pct=0 violates type hint float | None"

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>

authored by zzstoatzz.io Claude Opus 4.5 and committed by GitHub 61c23f57 00634e9a

Changed files
+3 -3
backend
src
backend
_internal
api
tracks
+2 -2
backend/src/backend/_internal/background_tasks.py
··· 281 281 export_id, 282 282 JobStatus.PROCESSING, 283 283 f"downloading {total} tracks...", 284 - progress_pct=0, 284 + progress_pct=0.0, 285 285 result={"processed_count": 0, "total_count": total}, 286 286 ) 287 287 ··· 304 304 export_id, 305 305 JobStatus.PROCESSING, 306 306 "creating zip archive...", 307 - progress_pct=100, 307 + progress_pct=100.0, 308 308 result={ 309 309 "processed_count": len(successful_downloads), 310 310 "total_count": total,
+1 -1
backend/src/backend/api/tracks/uploads.py
··· 126 126 JobStatus.PROCESSING, 127 127 "uploading to storage...", 128 128 phase="upload", 129 - progress_pct=0, 129 + progress_pct=0.0, 130 130 ) 131 131 try: 132 132 async with R2ProgressTracker(