Aglet

Learn from API bulk operation windows

The lasting lesson is a lifecycle contract that separates submission from record completion and reconciliation. Preserve the operation handle, transition, and count mismatch that mattered. Keep result retention and partial failure assumptions visible for every batch consumer. Preserve the difference between accepted work and completed records.

Keep the lesson for the next incident

  1. Document the batch lifecycle

    Record submission, status, completion, result paging, expiry, failure items, duplicate submission, and local state for each bulk operation. Define when per-record reconciliation is required and who owns an unknown operation.

  2. Keep small batch fixtures

    Retain zero, partial, complete, failed, delayed, expired, restart, and duplicate cases with synthetic identifiers. Store expected counts, handles, and local outcomes. Include the original premature-completion shape for future client changes.

  3. Review job health

    Watch accepted jobs without progress, count mismatches, result retrieval failures, expired handles, and duplicate submissions. Assign an owner and threshold. Close the follow-up only when status, result, and local reconciliation checks run for real batch sizes.

What to carry forward

Close learning with lifecycle rules, per-record fixtures, reconciliation ownership, and job signals. Keep external result retention explicit. The durable outcome is a visible pending or partial state and a safe next action for every bulk window. Review status and result together after changes.

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