Skip to content

Accepts ADR-0010, the snooze answer - #144

Merged
johnnyt merged 1 commit into
mainfrom
sob-n8f-flip-adr-0010
Sep 29, 2026
Merged

johnnyt merged 1 commit into
mainfrom
sob-n8f-flip-adr-0010

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 29, 2026

Copy link
Copy Markdown
Member

Flips ADR-0010 (a timer delivery may answer a snooze) from proposed to accepted. Bead: sob-n8f.

ADR-0010

  • Version: the code that implements the record, 05d461f (sob-46l), shipped in the published release 0.17.0.
  • SHA verified at: cab60c5, which is tag v0.17.0 and origin/main at the flip (git log v0.17.0..origin/main is empty). Oban is the 2.23.1 that mix.lock resolves.
  • Claims checked, by anchor:
    • Decision 1: t:StatifierOban.Timer.Delivery.snooze/0 is {:snooze, pos_integer()} and the deliver/2 callback's return type carries it.
    • Decision 2: StatifierOban.Timer.Worker.perform/1 answers {:snooze, seconds} unchanged; Oban 2.23.1's Oban.Engines.Basic.snooze_job/3 sets the row scheduled and raises max_attempts by one, and Oban.Engines.Lite delegates to it.
    • Decision 3: StatifierOban.Timer.Delivery.Session.deliver/2 answers only :delivered or {:discarded, reason}.
    • Decision 4: StatifierOban.Timer.cancel/3 and pending_for/2 cover scheduled; the worker's uniqueness is every state, infinite period, on scope and ordinal.
    • Decision 5: StatifierOban.Telemetry has no snooze event; Oban's Oban.Queue.Executor.emit_event/1 reports a :snoozed run on [:oban, :job, :stop]; the attempt measurement of the fired and discarded events is the job's attempt.
    • Decision 6: the snooze clause's guard is is_integer(seconds) and seconds > 0.
    • Decision 7: nothing under lib/ counts or caps snoozes.
    • Consequences: the moduledoc section and the README's durable-execution arm teach the snooze; the "not available from inside it" sentence is gone; the parked-execution test file pins the snooze; the 0.17.0 changelog section names the answer.
    • Superseded sentences: the Context's last paragraph and the last Consequences bullet ("once the record is accepted") are superseded by the record's own dated Note of 2026-09-28 on main, which records that the code shipped at proposed. The Context's statements anchored at 835ad52 describe the seam before the code and stay true of that commit.

Shape

The status word flips in place on the head Status line and in the ADR index row (docs/adr/README.md), the house shape of the earlier ADR-0009 flip; git diff origin/main -- docs/ removes exactly those two lines. The dated Note is appended at the foot. No lib/ edit, no changelog fragment (ADRs are excluded by changelog.d/README.md).

Gate

The branch touches no gated path (docs/ only, outside gate.build_paths), so there is no gate to run, per the repo's CLAUDE.md authority table.

Provenance

  • The ADR index row flips with the status line, as the previous flip did; the bead names only the record file.

ADR-0010's head Status line flips from proposed to accepted in place,
and the ADR index row with it. The code that implements the record is
05d461f (sob-46l), carried by the published release 0.17.0 (tag
v0.17.0, cab60c5). A dated Note at the foot (zero removed lines
otherwise) checks each decision and the Consequences by anchor at that
tag, which is also main, and names the two sentences the 2026-09-28
Note already superseded.

Docs only: the diff is outside gate.build_paths, so the gate does not
apply (CLAUDE.md authority table); no changelog fragment per
changelog.d/README.md (ADRs excluded).
@johnnyt
johnnyt merged commit 7ba6b83 into main Sep 29, 2026
1 check passed
@johnnyt
johnnyt deleted the sob-n8f-flip-adr-0010 branch September 29, 2026 10:43
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