Aglet

Document the scheduled-run overlap policy and lease boundary

The lasting lesson is an explicit answer to what a due occurrence does while its predecessor is active. Document whether it skips, waits, locks, or runs concurrently, and how outputs are owned. Record lease expiry and recovery separately so a timing boundary cannot silently become duplicate processing.

Keep the lesson for the next incident

  1. Name the overlap rule

    State the schedule interval, active window, guard or lease owner, and behavior for a second due occurrence. Define how queued, skipped, concurrent, and interrupted runs are represented. Tie the rule to output identity and any idempotency readback.

  2. Retain overlap fixtures

    Keep finish-before, span-interval, queued-settlement, and lease-recovery cases with expected run IDs and outputs. Re-run them after changing recurrence intervals, job duration, lock lifetime, worker shutdown, or output writing. Record whether shared outputs are allowed or must be reconciled in every case.

  3. Watch recurrence signals

    Review pairs with simultaneous active windows, lease expiry before terminal state, or multiple writers for one output key. Compare policy and effect records before changing scheduling. Assign review when a new schedule or output path lacks an overlap case.

What to carry forward

Preserve a documented overlap policy, guard ownership, run identity, and output reconciliation with short and spanning fixtures. Recurrence checks should connect active windows to durable effects. Reopen review when schedule interval, runtime, lease, worker recovery, or output ownership changes overlap behavior.

Technical background: Rails guides.

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