Skip to content

Notes why the held-send map keeps its shape - #452

Merged
johnnyt merged 1 commit into
mainfrom
st-tl0k-adr-0069-held-cancel-note
Oct 11, 2026
Merged

johnnyt merged 1 commit into
mainfrom
st-tl0k-adr-0069-held-cancel-note

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 11, 2026

Copy link
Copy Markdown
Member

What

A dated foot Note on ADR-0069, "why the held-send map keeps its shape". The Amendment of 2026-10-09 gives Statifier.Replay's use of the held-send map as the reason a replace leaves the map as it is. The Note adds the stronger reason: held_sends is a typed optional key of the plan context Statifier.Session.Effects.plan/2 takes (t:Statifier.Session.Effects.context/0, its value t:Statifier.Session.Effects.held_sends/0), so recording the registration in the map's values would change a type a host that plans through plan/2 codes against.

The Note decides nothing and changes no answer. It says that routing a held send's cancel to the registration recorded when the send was handed over would need only a new optional plan-context key, and that this routing is not decided here: it is not taken this round (decided by the conductor under a standing consent, 2026-10-10: the Note only).

Direction check of the record text

Every claim was read on main at c2c69ef7 (an ancestor of origin/main) and re-read at this branch's base 02e729f3, which touches none of the cited files. The Amendment sentence the Note quotes is in its paragraph on <cancel>, verbatim. Statifier.Replay's plan_context/1 passes its own held_sends and it is kept by Statifier.Session.Effects.register_held_send/3. t:Statifier.Session.Effects.context/0 declares optional(:held_sends) => held_sends(), and t:Statifier.Session.Effects.held_sends/0 is send_id => [type] with the types sorted and unique. docs/extending.md, section "The <send> half: host-registered send types", tells a host planning through plan/2 that the context carries held_sends. The cancel arm of Statifier.Session.Effects.plan/2 looks each held type's processor up in the context's send_processors when the cancel is planned. git diff origin/main -- docs/adr/ shows zero removed lines. The Note sits after the last Note (2026-10-11, "two cases the replace call's answers leave out") and has no Status line.

Gate

Docs and record only; no changelog fragment (changelog.d/README.md: none for ADRs). mix quality --profile merge ran green on the rebased head (the ADR judge skipped: no file in a judged scope).

The ADR-0069 Amendment of 2026-10-09 gives Statifier.Replay's use of
the held-send map as the reason a replace leaves the map as it is. The
stronger reason is that held_sends is a typed optional key of
Statifier.Session.Effects.plan/2's public plan context, so recording
the registration in the map's values would change a type a host that
plans through plan/2 codes against.

A dated foot Note on ADR-0069 states that reason with anchors, zero
removed lines, and says that routing a held send's cancel to the
registration recorded when it was handed over would need only a new
optional context key. That routing is not decided here (decided by
the conductor under a standing consent, 2026-10-10: the Note only).

Record Note only; no fragment. mix quality --profile merge ran green
on this commit's tree.

Refs: st-tl0k
@johnnyt
johnnyt force-pushed the st-tl0k-adr-0069-held-cancel-note branch from 712326b to 1480efa Compare October 11, 2026 15:56
@johnnyt
johnnyt merged commit d366055 into main Oct 11, 2026
1 check passed
@johnnyt
johnnyt deleted the st-tl0k-adr-0069-held-cancel-note branch October 11, 2026 15:58
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