prepare source and resume an upload

Check captured inputs and recover an interrupted submission without creating a new job.

For: Advanced: source uploads and recovery

reviewed 2026-10-06 · versions & availability

Use this guide to check what a job will upload or resume an interrupted upload. You need an authorised checkout, the beta client and, for recovery, the original submission key and local recovery record.

captured files

Before submitting:

  1. Inspect tracked files and non-ignored untracked files in the repository. Both are included in the capture; ignored files are omitted.
  2. Keep credentials outside that selection and confirm any generated build inputs are included through a supported mechanism.
  3. Check symlinks. Relative links must stay within the captured tree; absolute or escaping links are unsupported.

The client uploads only when the server advertises a compatible source-transfer capability. If that check fails, confirm the client and service release rather than changing the source to bypass it.

upload limits

Check the selected source against these limits:

Limit Value
Regular-file content 1 GiB
File and link entries 250,000
Metadata 32 MiB
Transfer chunk 4 MiB

Scratch and execution capacity are separate limits. See the API reference for reservation and expiry behavior.

resume a submission

  1. Find the submission key printed by the interrupted command.
  2. Return to the original invocation directory, with the same endpoint and tenant.
  3. Repeat the original Cargo command and arguments, adding --submission-key <key>.

For an interrupted test --workspace invocation:

cargo sorus test --workspace --submission-key <key>

The client resumes the original capture. Later working-tree edits are not included. Changing the endpoint, tenant, invocation directory or Cargo options causes a conflict; submit changed inputs as a new job.

recovery records and expiry

Keep the original recovery data while diagnosing an upload that has not been acknowledged. It is stored under $XDG_STATE_HOME/sorus/submissions, or $HOME/.local/state/sorus/submissions when that variable is unset. These records do not contain credentials.

If the upload expired before admission, inspect the refusal and retain the local archive for diagnosis. The client does not recapture source or create another job automatically. If a job may already exist, use the job recovery guide to inspect it before submitting again.