Accepts the after_step: ADR-0008 amendment - #93
Merged
Conversation
sp-c48 landed at e3209bd on main (PR 91), so the 2026-09-08 amendment's status line flips in place from proposed to accepted and a dated Note at the foot of docs/adr/0008 records the merge and the five things re-read against main at 3fd45f7 before the flip. Every clause holds as written. Clause 1's whole effect list: persist_tail reports the list it was handed, never the executable subset, and DriverTest's "hands over the whole effect list" holds it. Clause 2's two entry points: the driver still calls Runs.create/4, Runs.step/5 and Runs.cascade_cancel/3 and no other, and only the first two step. Clause 3's ordering. Clause 4's propagating raise, with its test. Clause 5's observer posture. What the Note records rather than edits into the text: the seam clause 1 left open landed as a package-internal step_reporter: option in Runs' t:opt/0 union, so no public return widened; the per-call override landed as Keyword.get(opts, :after_step, driver.after_step) rather than the Keyword.put_new/3 spelling the closing section named, which is the same rule from the other end; the discarded delivery fires nothing, refused on both sides of the seam and tested; clause 3's "outside that run's own exclusion" holds by construction and no test asserts it, which is said plainly; the amendment's own "carries no lib/ change and no test, and waits for one" is now false and is met here, not edited; and the seam section's "decision 5 below says why" reads as clause 5, the amendment's own fifth clause, since this record's decision 5 is the cascade. Additive: the only removed lines in docs/adr/ are the two the status text occupied, and the Note is appended at the end of the file. Gate: not run, and no gate applies - the diff touches one Markdown file under docs/adr/ and no Elixir code, which is the authority table's "a change touching no Elixir code has no gate to run and may commit on review of the diff alone". No changelog fragment: changelog.d/README.md lists documentation and ADRs on its "do not write a fragment" side. sp-nhl
Member
Author
|
Direction review pass 1: UNQUALIFIED, 0 findings. Merged --rebase at d72bbf6. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Flips the 2026-09-08
after_step:amendment indocs/adr/0008-durable-subchart-child-runs.mdfrom proposed to accepted,now that
sp-c48is onmainate3209bd(PR 91). Docs-only: oneMarkdown file under
docs/adr/, nolib/, notest/, no fragment.What changed
proposed->accepted (2026-09-08, sp-nhl; ... flipped once sp-c48 landed). Those two linesare the only removed lines in
git diff origin/main -- docs/adr/.re-read against
mainat3fd45f7before the flip. Amend-by-addition:nothing above it is reworded.
Verified before the flip (against main at 3fd45f7 = e3209bd + the 0.11.0 prep)
Every clause of the amendment, its worked example and its "what this
section does not decide" hold as written. By anchor:
report_step/3is reached fromdefp persist_tail(store, run_id, machine_state, effects, executor, write, reporter)inruns.exwith that function's owneffectsparameter;
Enum.split_with/2never rebinds it, so the reporter getsthe pre-split list.
DriverTest's "hands over the whole effect list,lifecycle effects included" asserts a
{:done, _}reaches the callbackand not the executor.
package-internal
step_reporter:option inStatifierPersistence.Runs't:opt/0union, documented there as this package's own and never ahost's. No public
Runsfunction's return changed; the arity changesare all private (
persist_tail/6->/7,stepped/6->/7).Runsfunctions -
Runs.create/4fromcreate/3,Runs.step/5fromdefp step(driver, run_id, opts, event, ref), andRuns.cascade_cancel/3,which steps nothing. The two step-taking ones are the two the clause
names, and the driver drains the reporter's buffer and fires the host's
callback from those two sites after the entry point returns.
latter with a test ("a raise inside the callback propagates to the
caller").
driver.exandruns.ex. The one cite whose spelling moved is clause1's
persist_tailhead, which gained the reporter argument; the Notesays so.
Recorded in the Note rather than edited into the text
Keyword.get(opts, :after_step, driver.after_step), not theKeyword.put_new/3spelling the closingsection named - the same rule ("the caller's option outranks the
driver's field") written from the other end, since the default lives on
the struct.
seam, with a test whose recorded sabotage needed both halves broken.
it:
serialized/5closes before the entry point returns and thecallback fires after that return. Said plainly rather than papered over.
lib/change and no test,and waits for one" is falsified by the flip; per the record-flip rule it
is met in the Note, not reworded.
the amendment's own fifth clause. This record's decision 5 is the
cascade, and the section's other self-references say "clause N". Left as
written, corrected in the Note (residue the pass-2 reviewer of PR 89
left).
Gate
Not run, and none applies: the diff touches one Markdown file under
docs/adr/and no Elixir code - the authority table's "a change touchingno Elixir code has no gate to run and may commit on review of the diff
alone". No changelog fragment:
changelog.d/README.mdputs documentationand ADRs on its "do not write a fragment" side.
Closes sp-nhl.