From 12db633613b104092716efe17f9ac6100e701a91 Mon Sep 17 00:00:00 2001 From: JohnnyT Date: Wed, 30 Sep 2026 10:11:34 -0600 Subject: [PATCH] Accepts ADR-0075 and its two Amendments Flips in place the record's Status word and the Status words of its two Amendments (the dedup-key header, and which callbacks receive :opts), and the index row's status cell with them. A dated Note goes at the foot, and no other line is removed. The Note records the acceptance: the code shipped in statifier 2.10.0 (tag v2.10.0 at c8894aea), and every claim was verified against main at 39942820, which differs from the tag only by the second Amendment. It reads decision 8 point b with that Amendment. The Context was checked at dc1900d0, where it says it was read. Docs only: no Elixir code is touched. mix adr.check and mix quality --profile merge ran green on this tree. Refs: st-mgxq --- docs/adr/0075-basichttp-event-io-processor.md | 54 +++++++++++++++++-- docs/adr/README.md | 2 +- 2 files changed, 52 insertions(+), 4 deletions(-) diff --git a/docs/adr/0075-basichttp-event-io-processor.md b/docs/adr/0075-basichttp-event-io-processor.md index c8290e98..7911e5b4 100644 --- a/docs/adr/0075-basichttp-event-io-processor.md +++ b/docs/adr/0075-basichttp-event-io-processor.md @@ -1,6 +1,6 @@ # ADR-0075: The Basic HTTP Event I/O Processor is a registered send type in statifier-ex, with a pure inbound decoder, an injected transport and a corpus host declaration -Status: proposed (2026-09-30) - builds on ADR-0069 (the processor is a +Status: accepted (2026-09-30) - builds on ADR-0069 (the processor is a registered send type in that record's sense); amends ADR-0069 decision 2 in part (a registration value may carry options) and adds an optional callback to its processor behaviour; amends ADR-0070 decision 5 in part @@ -364,7 +364,7 @@ nothing: ### Amendment 2026-09-30: every POST carries the send's dedup key, and the receiver deduplicates -Status: proposed (2026-09-30) - amends decision 4 (the outbound mapping) +Status: accepted (2026-09-30) - amends decision 4 (the outbound mapping) and decision 5 (the inbound decoder) by addition; every other decision, and the record's own Status above, are unchanged. The header, at-least-once delivery and deduplication by the receiver were ruled by @@ -427,7 +427,7 @@ restart, is the one that will. ### Amendment 2026-09-30: a registration's options reach the planning callbacks, and `perform/2` gets its configuration through the payload -Status: proposed (2026-09-30) - amends decision 8 point b in part (which +Status: accepted (2026-09-30) - amends decision 8 point b in part (which callbacks receive `:opts`); every other decision, the Amendment above, and the record's own Status are unchanged. @@ -456,3 +456,51 @@ names `deliver/3` and `cancel/2` as the callbacks whose context carries `:opts`, at `c8894aea`. A bare-module registration is unchanged: none of its callbacks receives an `:opts` key. This Amendment decides nothing beyond which callbacks receive `:opts`. + +## Note (2026-09-30): accepted + +This record and its two Amendments of 2026-09-30 are accepted on +2026-09-30. Their three Status lines are the only lines of the record +that change; no decision, consequence, Related entry or Amendment +paragraph changes here, and this Note decides nothing. + +Their code shipped in statifier 2.10.0: `Statifier.Send.BasicHTTP`, its +transport behaviour, the `:httpc` adapter, the optional +`ioprocessors_entry/2` callback and the `{module, opts}` registration came +in `15044527`; the `scxml-send-key` header in `b4e4a459`, and the +decoder's rule that sets no event field from it in `3ffcf9df`; the schema +key, the loopback front in the corpus host, the transform template and +the eleven claims in `b6f7fcab`. All four are in the `v2.10.0` tag +(`c8894aea`), and statifier 2.10.0 is published. Every claim above was +verified against `main` at `39942820`, which differs from that tag only +by the second Amendment above; nothing under `lib/`, `test/`, `tools/` +or `conformance/` differs. + +Decision 8 point b's sentence on "the plan context a processor's +callbacks receive" is read with the Amendment of 2026-09-30 on which +callbacks receive `:opts`: the options reach `deliver/3` and `cancel/2`, +and `perform/2` gets its configuration through the instruction payload. + +The Context describes the package at `dc1900d0`, as it says, and was +checked there: the twelve documents excluded as `:needs_basichttp` in +both exclusion files and absent from the corpus and the ratchet; +`ioprocessors_entry/1` taking the type string alone; a `:send_types` +value typed as a bare module; `Statifier.Machine.Content.Send`'s private +`data/3`; the handler clause of `Statifier.Session`'s private +`perform_instruction/3`; `failed_send/3` as a cast; and the `w3c` and +`scion` branches of `conformance/schema/case.json` each refusing `host`. +On `main` each of those is as the Decision directs: both exclusion files +carry none of the twelve, all twelve are in `conformance/corpus/w3c.json` +with `host.event_io_processors`, the eleven are in +`test/passing_tests.json` and `conformance/registry.json`, and test201 is +in neither. The sentences the Consequences name as made stale have each +been rewritten by that code. + +Decision 1's durable-execution front, and the front decisions 3 and 9 +leave to it, belong to statifier_router and are not built yet; nothing +on `main` here contradicts them. The Consequences bullet "Code builds +against this record at proposed. It stays proposed until the code that +implements it ships in a published version." is met here: the code +shipped in 2.10.0 and the record is accepted. Each Amendment's own +Status line, which says the record's Status is unchanged, speaks of what +that Amendment changes and still holds as written. diff --git a/docs/adr/README.md b/docs/adr/README.md index a7cebae8..d8741015 100644 --- a/docs/adr/README.md +++ b/docs/adr/README.md @@ -76,7 +76,7 @@ | [0072](0072-chart-diff-classes-and-position-compatibility.md) | Two compiled charts diff into four classes with their reasons: `Statifier.Chart.diff/3` answers Identical (`Identity.matches?/2`), Compatible, Mapped (from a caller-supplied `mapping:` option) or Breaking, over normalized fields; `Statifier.Position.compatible_at?/3` answers whether one execution's position is untouched, by byte-identical source slices of each active state's transitions, `` and ``, and is called by nothing in the library | accepted | | [0073](0073-one-publish-findings-function-holds-every-publish-time-check.md) | One pure publish findings function, `Statifier.Publish.findings/2`, over a compiled chart and the host's declaration (`send_types:`, `invoke_types:`, `accepts:`), returning findings that each name their row of `docs/publish-time-checks.md`; composes `Statifier.Send.Types.unsupported_sends/2` (S1) and `Statifier.Chart.check_accepts/2` (S15) unmoved; every literal-decided NONE row lands as one check inside it, never a module or a public function; `Statifier.Validator` and `compile/2` untouched | accepted | | [0074](0074-delayed-sends-across-a-persisted-resume.md) | Delayed sends across a persisted resume: the host stores the absolute fire time on its own timer row when first handed the send, never in the position; a step's timer-store writes, a cancel included, commit in the transaction that saves that step's position; the host drops a stale fire by an atomic claim on the send's row under `{session scope, send_id}` plus ADR-0054's liveness check, never by the session's configuration; the engine drops nothing | proposed | -| [0075](0075-basichttp-event-io-processor.md) | The Basic HTTP Event I/O Processor is a registered send type in statifier-ex: `Statifier.Send.BasicHTTP`, registered under the spec's URI and `basichttp`, one session-scoped location through an optional `ioprocessors_entry/2`, a `{module, opts}` registration value, a pure inbound decoder any front calls (statifier_router owns the durable-execution front), a transport behaviour with an always-compiled OTP `:httpc` default and no new dependency; the corpus gains `host.event_io_processors`, allowed on W3C cases, and eleven of the twelve documents are claimed, test201 unclaimed | proposed | +| [0075](0075-basichttp-event-io-processor.md) | The Basic HTTP Event I/O Processor is a registered send type in statifier-ex: `Statifier.Send.BasicHTTP`, registered under the spec's URI and `basichttp`, one session-scoped location through an optional `ioprocessors_entry/2`, a `{module, opts}` registration value, a pure inbound decoder any front calls (statifier_router owns the durable-execution front), a transport behaviour with an always-compiled OTP `:httpc` default and no new dependency; the corpus gains `host.event_io_processors`, allowed on W3C cases, and eleven of the twelve documents are claimed, test201 unclaimed | accepted | New ADRs: next number, same three-section format (Context, Decision, Consequences), drafted or reviewed at the direction level per `docs/workflow.md`. Pick the number