Skip to content

Notes on ADR-0005 that the run-time-bound change added functions - #138

Merged
johnnyt merged 1 commit into
mainfrom
sob-tbw-adr-0005-note-narrowed
Sep 29, 2026
Merged

johnnyt merged 1 commit into
mainfrom
sob-tbw-adr-0005-note-narrowed

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 29, 2026

Copy link
Copy Markdown
Member

What

A dated foot Note on ADR-0005 ("the run-time-bound Note's 'no new function' means the failure-delivery surface"). The 2026-09-24 Note ("a timed-out attempt fails inside the worker") says no new failure class, event name, function or error family is created; its change (sob-eh8, commits a7c6673 and fdc73a7) does add functions. The new Note reads that sentence as the failure-delivery surface (no new failure class, event name, delivery door or error family on the delivery path) and names what the change added:

  • timeout/1 on StatifierOban.Invoke.Worker, StatifierOban.Invoke.ChildStartWorker and StatifierOban.Timer.Worker, each overriding the Oban.Worker default of :infinity;
  • the @doc false helpers put/2, bound/1, backstop_margin_ms/0 and max_bound/1 in the @moduledoc false module StatifierOban.JobTimeout;
  • the private call_bounded/4 and capture/1 (invoke worker) and fetch_timeout/2 and timeout_kind/1 (config).

Additions only: zero removed lines. The Note decides nothing and no Status line moves. It follows the 2026-09-27 Note that narrowed the attempt-cap Amendment's identical sentence the same way.

Closes sob-tbw on merge (the conductor closes it).

Gate

Docs only: the diff is outside gate.build_paths, so the gate has nothing to run (the repo's docs-only commit clause and .claude/wurk/mr.md). No changelog fragment: changelog.d/README.md excludes ADRs.

Direction check (in-turn review)

Every claim was checked against main at e6bed65, by anchor. The quoted sentence is in the 2026-09-24 Note of docs/adr/0005-permanent-invoke-failure-delivers-on-the-terminal-attempt.md. timeout/1 is defined in lib/statifier_oban/invoke/worker.ex (the bound plus @backstop_margin_ms, :infinity passed through), and as JobTimeout.bound(job) in lib/statifier_oban/invoke/child_start_worker.ex and lib/statifier_oban/timer/worker.ex. The locked Oban (2.23.1) defines the default timeout/1 answering :infinity in Oban.Worker. lib/statifier_oban/job_timeout.ex is @moduledoc false and marks backstop_margin_ms/0, max_bound/1, put/2 and bound/1 @doc false. call_bounded/4 and capture/1 are defp in the invoke worker; fetch_timeout/2 and timeout_kind/1 are defp in lib/statifier_oban/config.ex. The function list was taken from the def/defp lines each commit adds under lib/ (git show a7c6673 -- lib/, git show fdc73a7 -- lib/), and every name is still present at e6bed65. A timed-out attempt raises Oban.TimeoutError from call_bounded/4, and the rescue arm around it calls maybe_fail/7 with "run_crashed"; maybe_fail/7 delivers only when attempt >= max_attempts. "run_crashed" is decision 3's class, and error.communication.invoke.<invoke_id> is the event name the 2026-09-24 Note gives. fetch_timeout/2 refuses with {:invalid_option, key, other}, the shape every other option's value check in config.ex answers. git diff origin/main -- docs/adr/ shows no removed lines.

Provenance

The file map named timeout/1 and "helpers for the job's run-time bound"; the Note also lists backstop_margin_ms/0, max_bound/1 and timeout_kind/1, which the same bead's second commit (fdc73a7) added. The failure path is unchanged, so they are named for completeness.

A dated foot Note on ADR-0005 narrows the 2026-09-24 Note's "no new
failure class, event name, function or error family" sentence to the
failure-delivery surface: no new failure class, event name, delivery
door or error family on the delivery path. It names the functions the
run-time-bound change did add: timeout/1 on the invoke, child start and
timer workers, the @doc false helpers put/2, bound/1,
backstop_margin_ms/0 and max_bound/1 in StatifierOban.JobTimeout, and
the private call_bounded/4, capture/1, fetch_timeout/2 and
timeout_kind/1. Claims read at e6bed65. 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-tbw
@johnnyt
johnnyt merged commit c942b80 into main Sep 29, 2026
1 check passed
@johnnyt
johnnyt deleted the sob-tbw-adr-0005-note-narrowed branch September 29, 2026 04:18
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