Accepts ADR-0075 and its two Amendments - #356
Merged
Merged
Conversation
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 c8894ae), and every claim was verified against main at 3994282, which differs from the tag only by the second Amendment. It reads decision 8 point b with that Amendment. The Context was checked at dc1900d, 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
johnnyt
force-pushed
the
st-mgxq-accept-adr-0075
branch
from
September 30, 2026 16:11
6313339 to
12db633
Compare
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.
Accepts ADR-0075 (the Basic HTTP Event I/O Processor) and its two Amendments of 2026-09-30: every POST carries the send's dedup key, and a registration's options reach only the planning callbacks. Their code shipped in statifier 2.10.0, which is published; the tag
v2.10.0is atc8894aea.mainis at39942820, which differs from the tag only by the second Amendment.What changes
docs/adr/0075-basichttp-event-io-processor.md: the record's Status word and both Amendments' Status words flip from proposed to accepted in place. One dated acceptance Note goes at the foot, after the second Amendment.docs/adr/README.md: the 0075 row's status cell reads accepted.git diff origin/main -- docs/adr/removes four lines: the three Status lines and the README row, each changed only in its status word.Per-record paragraph
ADR-0075 and its two Amendments, statifier 2.10.0, verified at
39942820. The Context was checked atdc1900d0, where it says it was read. Every Decision, Consequence and Amendment claim was checked at39942820, which is thev2.10.0tag (c8894aea) plus the second Amendment. No file underlib/,test/,tools/orconformance/differs from the tag. The claims checked, each with its anchor:c8894aea:needs_basichttpin both exclusion files, and none is in the corpus or the ratchettools/corpus/scxml_w3/exclusions.exs,conformance/exclusions.json,conformance/corpus/w3c.json,test/passing_tests.json, all atdc1900d0ioprocessors_entry/1receives the type alone; a:send_typesvalue is a bare module; noApplicationenvironment is read underlib/Statifier.Send.Processor,Statifier.Send.Types.from_send_types/1's spec atdc1900d0; noApplication.get_envunderlib/statifierdata; the session ignoresperform/2's return;failed_send/3is a cast; the case schema refuseshostonw3cStatifier.Machine.Content.Send's privatedata/3,Statifier.Session's privateperform_instruction/3,Statifier.Session.failed_send/3,conformance/schema/case.json, all atdc1900d0Statifier.Send.BasicHTTP, shipped here; the decoder is pure; the durable front is statifier_router'sStatifier.Send.BasicHTTP,decode/1basichttpare both registered; a built-in spelling is refused when the session startsStatifier.Send.BasicHTTPmoduledoc "Registering it";Statifier.Session.start_link/2's built-in refusal_ioprocessorskeys hold one location, the base URL,/and the session idStatifier.Send.BasicHTTP.ioprocessors_entry/2; the test "both registered keys carry one location"ioprocessors_entry/2with the session id and the options; the registered set keeps module and options;SystemVariables.initial/3asks/2, else the/1entryStatifier.Send.Processor,Statifier.Send.Types,Statifier.Evaluator.SystemVariables.initial/3Statifier.Evaluator.SystemVariablesmoduledoc;Statifier.Positiondropssend_typesonly_scxmleventnameand the parameters as a POST form body; content as the body, the name in the query; the shape ofdatadecides; last duplicate wins; no target planserror.communicationwith the send id; a failed POST reaches the senderStatifier.Send.BasicHTTP'sdeliver/3and privatepost/2andpost_now/2;Statifier.EventData.coerce/1's params rung_scxmleventname, query before body, elseHTTP.POST; form parameters and a text body through the text rung;origintypeis the URI; 204 / 405 withAllow: POST/ 400 / the front's 404Statifier.Send.BasicHTTP.decode/1;Mix.Statifier.BasicHTTPFront:httpcdefault that verifies the peer, uses the system CA store and checks the host name, and starts:inetsand:sslitself; no new dependency; thereqrecipe as textStatifier.Send.BasicHTTP.Transport,Statifier.Send.BasicHTTP.Transport.Httpc;mix.exs(noreq,extra_applicationsunchanged);docs/basichttp.mdhost.event_io_processorswith a closed item set of one URI; allowed onw3ccases as the onlyhostkey;scioncarries nohostconformance/schema/case.jsonconformance/corpus/w3c.json,conformance/registry.json,test/passing_tests.json,tools/corpus/scxml_w3/conf_predicator.xslStatifier.Evaluator.SystemVariables.initial/3withsend_typesnil;Statifier.Position:optsreachesdeliver/3andcancel/2, notperform/2:base_urlis required and its absence refuses the start;:transportdefaults to the:httpcadapter; the recording writes options as stringsioprocessors_entry/2'sArgumentError;post/2;Statifier.Session.RecordingStatifier.Send.BasicHTTP's privatepost/2anddata/2; the corpus entriesfailed_send/3viaStatifier.Registry; with no live session,{:error, reason}onlyStatifier.Send.BasicHTTP's privatereport/3andwhereis/1test/statifier/send/basic_http_test.exs,test/statifier/send/basic_http_session_test.exs;mix adr.checkgreen with the delayed-send timerlib/and with the corpus; the sentences made stale are rewritten; a slow location holds the session, bounded by a timeout; four documents assert less, and test567 keeps its checkStatifier.Testing.Case.test_scxml/5's:send_types;Mix.Statifier.Corpus.HostCase;Statifier.Send.Target.supported_type?/1;tools/corpus/README.md;Statifier.Effect.Send; the 5-second timeouts in the:httpcadapter; the XSL's stubbed templatesscxml-send-key; eight fields in ADR-0054 decision 3 / ADR-0059 order joined by/; scope and send id percent-encoded over RFC 3986 unreserved; counters decimal; owner spellings; missing component emptyStatifier.Send.BasicHTTP's privatesend_key/2,escape/1,field/1,owner/1{module, opts}registration's options reachdeliver/3's andcancel/2's context under:optsStatifier.Session.Effects's privateprocessor_for/2perform/2receives the session's plan context without:opts, since a handler instruction names no registrationStatifier.Session's privateperform_instruction/3andplan_context/1Statifier.Send.BasicHTTPcarries its transport so; the moduledoc namesdeliver/3andcancel/2; a bare module gets no:optsStatifier.Send.BasicHTTP's privatepost/2;Statifier.Send.Processormoduledoc "Registration options"perform/2callsperform/2decode/1takes optional:send_key, sets no event field from it (sendidstays unset); a malformed key is{:error, {:malformed_send_key, value}}, answered 400; the loopback front does not deduplicatedecode/1's privatecheck_send_key/1;Mix.Statifier.BasicHTTPFrontProvenance
mainwithout the Note. The acceptance Note cites the Amendment by its date._event.datanext to a form body's parameters. For any other body it uses only the event name from the query. Since the record makes no claim here, nothing fails, and this PR adds no Note about it.Gate
Docs only: no Elixir code changes.
mix adr.checkandmix quality --profile mergeran green on this tree. The ADR judge skipped: no file in this diff is in one of its judged scopes.