Aglet

Triage rejected or misassembled upload chunks

Chunk failures can be caused by a wrong range endpoint, a declared size that differs from payload length, or assembly that accepts pieces in the wrong order. Triage should capture one rejected request and one assembled result, using raw byte counts rather than relying on progress percentages.

Establish what is happening

  1. Record one chunk exactly

    Capture file length, chunk index, byte start and end, declared size, payload length, upload identity, and response. Include whether the range endpoint is inclusive or exclusive, because that convention determines every expected size.

  2. Compare assembly evidence

    For a completed or partial object, compare chunk order, received lengths, gaps, overlaps, and total assembled bytes with the source. Keep a small byte-patterned fixture so an incorrectly ordered chunk is distinguishable from a coincidentally matching length.

  3. Classify the mismatch

    Classify the case as range arithmetic, metadata disagreement, ordering, duplicate acceptance, or receiver validation. Record the first conflicting field and state whether the next investigation needs request traces, stored part records, or source-byte comparison.

What to carry forward

Triage is complete when a specific chunk has declared and observed lengths, a known range convention, and an assembly comparison. If only a receiver error text is available, record the missing byte evidence rather than inferring which field failed.

Technical background: tus protocol documentation.

Keep the decision with the work.

Use a Work Item in Aglet to record the problem, the evidence you have, and the next decision. Add an owner and priority, then keep updates in the discussion so the next person can follow the reasoning.

Create an account See the product workflow