Skip to content

Notes on ADR-0010 the retry window the code documents - #141

Merged
johnnyt merged 1 commit into
mainfrom
sob-xgz-adr-0010-retry-window-note
Sep 29, 2026
Merged

johnnyt merged 1 commit into
mainfrom
sob-xgz-adr-0010-retry-window-note

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 29, 2026

Copy link
Copy Markdown
Member

Appends one dated foot Note to ADR-0010 (a timer delivery may answer a snooze). Refs: sob-xgz.

What the Note says

  • The retry window. The Context says Oban's default backoff spreads the timer job's retries over "about twelve days". The StatifierOban.Timer.Delivery moduledoc section "A parked execution retries; it is never discarded" now gives the range, twelve to thirteen and a half days, and the Note states it with the moduledoc's arithmetic; "about twelve days" is the no-jitter floor.
  • The code landed at proposed. The Context's last paragraph and the last Consequences bullet say the code follows the record once it is accepted. The operator ruled on 2026-09-28 that the code ships while the record is at proposed; it landed at 05d461f and is not yet in a published version. The Note records that and that the record stays proposed until that code ships, then flips. It does not reword either sentence.

The record stays at proposed. Additions only: git diff origin/main -- docs/adr/ shows zero removed lines.

Direction check (in-turn review, tier gate)

Each claim was read on main at 05d461f by anchor. The range and the sum ("15 + 2^n seconds plus a random 0-10% jitter", "about 12.1 days with no jitter and about 13.4 with the most") match the StatifierOban.Timer.Delivery moduledoc section named above and the README's "Delivering timers to a durable execution"; the arithmetic checks against the locked Oban 2.23.1 (Oban.Worker.backoff/1: Oban.Backoff.exponential/2 with min_pad: 15, then Oban.Backoff.jitter/2 in :inc mode with the default 0.1 multiplier; Oban.Job's default max_attempts of 20), and StatifierOban.Timer.Worker sets no max_attempts. The quoted record phrases match the Context's last paragraph and the last Consequences bullet word for word. The snooze arm is in c:StatifierOban.Timer.Delivery.deliver/2 and t:StatifierOban.Timer.Delivery.snooze/0, the clause in StatifierOban.Timer.Worker.perform/1; mix.exs reads @version "0.16.0" and the change's fragment is changelog.d/sob-46l.md, so the code is unpublished. The Note decides nothing and changes no Status line.

Gate

Docs only: the branch touches no gated path (gate.build_paths is lib/, test/, config/, mix.exs, mix.lock), so there is no gate to run. No changelog fragment: changelog.d/README.md excludes ADRs.

A dated foot Note on ADR-0010 gives the default retry window as the
StatifierOban.Timer.Delivery moduledoc now states it: Oban's default of
20 attempts spreads over twelve to thirteen and a half days (15 + 2^n
seconds after attempt n plus a 0-10% jitter), where the Context says
about twelve days, the no-jitter floor. The Note also records that the
snooze code landed at 05d461f while the record is at proposed, by the
operator's ruling of 2026-09-28, and that the record stays proposed
until that code ships in a published version. Claims read at 05d461f.
Additions only; the Note decides nothing and no Status line moves.

Docs only: the diff is outside gate.build_paths, so the gate does not
apply (the commit row's docs-only clause); no changelog fragment per
changelog.d/README.md (ADRs excluded).

Refs: sob-xgz
@johnnyt
johnnyt merged commit 09413d0 into main Sep 29, 2026
1 check passed
@johnnyt
johnnyt deleted the sob-xgz-adr-0010-retry-window-note branch September 29, 2026 04:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant