Claims the Basic HTTP documents in the corpus - #354
Merged
Merged
Conversation
Member
Author
|
CI (workflow_dispatch on this branch, since the base is not main): run 36723868371 at a9e3d35, conclusion success. |
The twelve W3C documents that need the Basic HTTP Event I/O Processor leave the exclusions. Eleven join the ratchet and the registry; test201 enters the corpus unclaimed, for the reason ADR-0075 decision 7 gives. - The case schema gains host.event_io_processors, a closed set whose one member is the Basic HTTP URI, and the one host key a w3c case may carry. - The emitter declares it for a W3C document naming the processor as a send type; the corpus host and the generated modules register the processor behind a loopback front (HostCase). - conf:basicHTTPAccessURITarget emits the IRP's access URI spelling. - A guide, docs/basichttp.md, with a req transport recipe as text; the stale exclusion sentences and the emitted counts are updated. Refs: st-8kn8
docs/basichttp.md now says what a host needs from ADR-0075's Amendment: every POST carries the send's dedup key in the scxml-send-key header, delivery is at-least-once, a front dedupes on the header's value and answers a malformed one 400, and the default adapter answers an error when :ssl or :public_key cannot be loaded. Refs: st-8kn8
johnnyt
force-pushed
the
st-8kn8-basichttp-corpus
branch
from
September 30, 2026 15:21
a9e3d35 to
cf0d389
Compare
Member
Author
|
Full |
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.
The corpus half of ADR-0075, on main now that the processor (#353) has merged (decision 7, and row g of decision 8): the W3C documents that need the Basic HTTP Event I/O Processor leave the exclusions and enter the corpus, and eleven of them are claimed.
What changes
tools/corpus/scxml_w3/exclusions.exsdrops its twelve:needs_basichttpentries and the reason line;mix statifier.corpusre-emitsconformance/exclusions.jsonwithout them. The fiveneeds_invoke_srcentries (test216, test226, test239, test242, test276) are unchanged.conformance/schema/case.jsongainshost.event_io_processors: a non-empty, unique array whose item set is closed, its one member the Basic HTTP processor URI. The W3C branch's ban onhostis lifted for that key only: aw3ccase'shostmust carryevent_io_processorsand nothing else;scioncases still carry nohost(ADR-0075 decision 7).Mix.Statifier.Corpus.Upstreamdeclares the key for a W3C document that names the processor URI as a<send>'stype(HostCase.event_io_processors/1). Exactly the twelve documents do.Mix.Statifier.Corpus.HostCase.with_event_io_processors/2starts the parent's loopback front (Mix.Statifier.BasicHTTPFront), registersStatifier.Send.BasicHTTPunder the URI andbasichttpwith the front's base URL, and stops the front when the case ends;HostCase.run/2uses it beside the recordingsend_types.test_scxml/5insideHostCase.with_event_io_processors/2; every other generated module is byte-identical.conf:basicHTTPAccessURITargetemitstargetexpr="_ioprocessors['basichttp']['location']", the IRP's spelling.docs/basichttp.md: what the processor is, registration, the location, the front a host writes arounddecode/1and the status rule, thescxml-send-keyheader and at-least-once delivery (ADR-0075 Amendment of 2026-09-30), the mapping both ways, what is not supported (ADR-0075 decision 9's residue rows), and areqtransport recipe as text. Inmix.exs's extras and package files; linked fromdocs/extending.md.changelog.d/st-8kn8.mdunder Added.The counts, beside their enumerations
test/passing_tests.jsongrew by exactly these eleven paths (undertest/scxml_tests/optional/basic_http_event_processor/), added bymix test.baseline add, which ran each before writing;conformance/registry.jsongrew by the same elevencase_ids. Thew3c-optionalclaim goes from 2 cases (test193, test278) to 13 (those two plus the eleven).conformance/RATCHET.md("Thehostobject"),docs/basichttp.mdandtools/corpus/README.md: it expects an event delivered from outside the session ahead of a send the same step appends to the session's own external queue. Its generated module runs and fails, as test330 and test552 do today.tools/corpus/README.md.Provenance
docs/basichttp.mdnow covers what Adds the Basic HTTP Event I/O Processor #353 gained after this branch was cut. Every POST carries the send dedup key in anscxml-send-keyheader, and delivery is at-least-once. A front dedupes on the header value and answers a malformed one 400. The default adapter answers{:error, {:not_loadable, module, reason}}when:sslor:public_keycannot be loaded. Checked against main at 3ffcf9d; cites ADR-0075 and its Amendment.conformance/RATCHET.md's host section said every W3C case omitshost, so it now describes the new key (the contract a sibling port reads);README.md's anddocs/testing.md's emitted counts;docs/extending.mdnow names the{module, opts}registration value and the optionalioprocessors_entry/2the parent added, beside the link;Mix.Statifier.Corpus.Runner.start_runtime/0puts:inets,:ssland:public_keyon the code path withMix.ensure_application!/1, becausemix statifier.corpusruns in the dev environment, where Mix pruning leaves:public_keyoff and a delivery through:httpccannot be made without it; the generated modules aliasHostCase(Credo's alias rule).:needs_basichttpreason line intools/corpus/scxml_w3/exclusions.exs; the "out of scope" comment inconf_predicator.xsl;tools/corpus/README.md's exclusions bullet;docs/testing.md's list of excluded trees.Checks
mix qualitygreen on the restacked head, quoted whole in a comment below;mix quality --profile mergegreen (the ADR judge skipped: no file in the diff is in a judged scope).additionalPropertiesand itemenumremoved; and without theensure_application!call,mix statifier.corpus --checknames the eleven ratcheted cases as disagreeing. These checks ran before the restack.ci.ymlon this pull request (base main). An earlierworkflow_dispatchrun on the stacked head is linked in a comment below.