Aglet

Keep a durable partial-completion outcome taxonomy

The useful lesson is to make partial completion a first-class state rather than a count that readers must infer. Record which item outcomes are terminal, which require review, and what the batch consumer may do. Preserve that taxonomy as a contract shared by workers, reporting, and gates.

Keep the lesson for the next incident

  1. Name terminal meanings

    Define success, failure, skip, cancellation, and missing result in terms of item work and recovery. State whether retries replace or preserve earlier attempts. Link each meaning to the batch aggregation predicate so a new result cannot be silently classified as success.

  2. Retain the mixed fixture set

    Keep all-success, single-failure, skip, cancellation, combined, and missing-result examples with expected labels and gate outcomes. Run them after changes to retry handling, aggregation storage, result projection, or downstream eligibility. Compare labels and downstream gates after each replay so a passing count cannot conceal a changed decision.

  3. Watch for recurrence

    Review batches whose summary says complete while any selected item lacks a successful terminal result, and batches whose gate opens with a review state. When a new outcome appears, pause interpretation until its taxonomy and recovery action are documented.

What to carry forward

Preserve an explicit outcome taxonomy, aggregation predicate, and consumer gate for partial batches. Keep the mixed fixtures and recurrence queries tied to those rules. Reopen review when retries, new skip reasons, or downstream actions alter whether a terminal batch is safe to treat as successful.

Technical background: Celery 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