Summary
failedReason is plumbed from the archiver worker all the way to the client and then discarded. Both download-archive surfaces render one hardcoded string regardless of what actually failed:
"Something went wrong. Please check your connection and try again."
GetStemsArchiveJobStatusResponse in useDownloadTrackStems.ts declares failedReason?: string
- The archiver's
getJobStatus populates it, and removeInternalStatusFields strips only returnvalue, so it reaches the client intact
DownloadTrackArchiveModal.tsx:33 and the mobile drawer both render messages.error, a fixed string
Impact
The message is actively misleading. During the 2026-07-28 outage the archiver queue was wedged server-side, and every affected user was told to check their own internet connection — for seven hours. It also sends people into a pointless retry loop against a failure that retrying cannot fix.
Proposed fix
Surface failedReason when present, and distinguish server-side job failure from client-side network failure. A generic fallback is still right when failedReason is absent, but it should not assert a cause we haven't established.
Worth pairing with better copy for the timeout case specifically (job never started vs. job failed mid-run are different user stories).
Summary
failedReasonis plumbed from the archiver worker all the way to the client and then discarded. Both download-archive surfaces render one hardcoded string regardless of what actually failed:GetStemsArchiveJobStatusResponseinuseDownloadTrackStems.tsdeclaresfailedReason?: stringgetJobStatuspopulates it, andremoveInternalStatusFieldsstrips onlyreturnvalue, so it reaches the client intactDownloadTrackArchiveModal.tsx:33and the mobile drawer both rendermessages.error, a fixed stringImpact
The message is actively misleading. During the 2026-07-28 outage the archiver queue was wedged server-side, and every affected user was told to check their own internet connection — for seven hours. It also sends people into a pointless retry loop against a failure that retrying cannot fix.
Proposed fix
Surface
failedReasonwhen present, and distinguish server-side job failure from client-side network failure. A generic fallback is still right whenfailedReasonis absent, but it should not assert a cause we haven't established.Worth pairing with better copy for the timeout case specifically (job never started vs. job failed mid-run are different user stories).