Adds ADR-0075: the Basic HTTP processor record - #352
Merged
Merged
Conversation
ADR-0075, at proposed, decides the Basic HTTP Event I/O Processor
(SCXML appendix C.2) as a registered send type in this package:
Statifier.Send.BasicHTTP under the spec's URI and the short form
basichttp; one session-scoped location written through an optional
ioprocessors_entry/2 callback; a {module, opts} registration value for
the base URL and the transport; the outbound POST mapping; a pure
inbound decoder any front calls, with statifier_router owning the
durable-execution front; a transport behaviour whose default is OTP
:httpc, with no new dependency; and a corpus host key,
host.event_io_processors, allowed on W3C cases, under which eleven of
the twelve Basic HTTP documents are claimed and test201 enters the
corpus unclaimed. It is written from the spike's findings on st-lhwd.
ADR-0069 gains a dated foot Note: its "the corpus names no type outside
the built-in set" is loose (test199, test201 and the statifier suite's
library and myapp types), and ADR-0075 answers its reopen trigger. The
Note decides nothing. docs/adr/README.md indexes the new record. No
lib/ or test/ change.
Refs: st-z0wg, st-swl8
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.
Summary
ADR-0075, at proposed, records the Basic HTTP Event I/O Processor
(SCXML appendix C.2) as a registered send type in this package, written
from the spike's findings on st-lhwd. ADR-0069 gains a dated foot Note
that names its loose "No conformance result moves" clause and points at
ADR-0075 as the answer to its reopen trigger.
docs/adr/README.mdindexes the new record. No
lib/ortest/change, and no changelogfragment (
changelog.d/README.mdexcludes ADRs).Refs: st-z0wg, st-swl8 (the ADR-0069 Note rides this PR and closes with it)
What ADR-0075 decides
Statifier.Send.BasicHTTPand itspure inbound decoder; statifier_router owns the durable-execution
inbound front, which calls that decoder.
basichttp, bothregistered; neither is a built-in spelling.
_ioprocessors. Both keys, one location (the base URL,/, thesession id), written through a new optional
ioprocessors_entry/2callback that receives the session id and the registration's options.
eventto_scxmleventname, namelistand params to form parameters,
<content>to the body (the name thenin the query string), a missing target to
error.communicationplanned in
deliver/3, a failed delivery toerror.communicationthrough
Statifier.Session.failed_send/3.Statifier.Send.BasicHTTP.decode/1,pure, with the status rule a front applies (204, 405 with
Allow: POST, 400, the front's 404).:httpcwith TLS verification set; no new dependency; a host injectsany other adapter.
host.event_io_processors, a closed set whose one memberis the Basic HTTP URI, allowed on W3C cases (the W3C ban on
hostlifted for that key only). The documents claimed once the processor
passes them: test509, test510, test518, test519, test520, test522,
test531, test532, test534, test567, test577. test201 leaves the
exclusions and enters the corpus unclaimed (an ordering property no
processor can meet).
The record also decides each contract gap the spike found (its
decision 8 table, with a column saying a session that registers nothing
sees no change for any of them) and dispositions each edge case the
spike listed (its decision 9 table).
Provenance
declaration in the case schema as a closed-set growth: ruled by the
operator, 2026-09-29.
reqdependency, with an OTP:httpcdefault transport: thespike's finding (st-lhwd), recorded here. It replaces the earlier plan
of an optional
reqdependency; the reason is ADR-0062 fact 2, whichthe record answers by adding no optional dependency.
record: the optional
ioprocessors_entry/2over the alternative thespike named; a
{module, opts}registration value over applicationenvironment; no effect field for params versus content; the processor
reporting its own failed delivery through
failed_send/3; the textrung for inbound form values; the key name
event_io_processorsandthe per-key lift of the W3C ban.
ADR-0070 decision 5 in part. Neither file's decisions are edited here;
ADR-0069 gains only the foot Note.
Direction check (in-turn)
Every claim ADR-0075 and the ADR-0069 Note make about code on
mainwas read at
dc1900d0(which isorigin/mainat this PR's base) andcites by anchor:
Statifier.Send.Processor'sioprocessors_entry/1callback and moduledoc,
Statifier.Send.Types.from_send_types/1,Statifier.Evaluator.SystemVariables.initial/3,Statifier.Machine.Content.Send'sdata/3,Statifier.EventData.coerce/1,Statifier.Session'sperform_instruction/3andfailed_send/3(acast),
t:Statifier.Session.Effects.instruction/0,conformance/schema/case.json's W3CallOfbranch,tools/corpus/scxml_w3/exclusions.exs, the Basic HTTP templates inconf_predicator.xsl, and the corpus files for the test199, test201 andstatifier-suite facts in the Note. Spec text is quoted from the local
spec cache. No
Applicationenvironment read exists underlib/(grepped).
git diff origin/main -- docs/adr/shows zero removedlines: the Note is appended at the foot of ADR-0069 and the README gains
one row.
Gate
mix gate.verifyon the committed tree, quoted whole:mix adr.check: "No likely ADR violations".mix quality --profile merge(the ADR judge step): green; the judge skipped because no file inthe diff is in a judged ADR scope. The commit was made on the tree the
gate ran green on, with the repository gate lock and a machine slot held
across both.