Keep the lesson for the next incident
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.
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.
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