93e7046332
Parallelize the enqueueForUpload collect loop (preparer's internal bounded semaphore from the previous task keeps IO in check). Also two test hardenings from that task's code review: pin that failed and thrown prepare operations release their concurrency slot (cap=1, subsequent prepare still completes), and pin the maxConcurrentPrepares <1 -> 1 clamp (peak 1, no deadlock). Co-Authored-By: Claude Code <noreply@anthropic.com>