Skip to content

Releases 2.10.0 - #355

Merged
johnnyt merged 2 commits into
mainfrom
st-p2a2-release-2-10-0
Sep 30, 2026
Merged

johnnyt merged 2 commits into
mainfrom
st-p2a2-release-2-10-0

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 30, 2026

Copy link
Copy Markdown
Member

The statifier 2.10.0 release prep: two commits.

  1. Adds the 2.9.0 and 2.10.0 steps to the upgrading page - docs/upgrading.md now runs from 2.5 to 2.10.0 (title and intro range), with a ## 2.9.0 section and a ## 2.10.0 section in the page's "must change / may start" shape. Both "must change" lines are NONE. The page carried one section per release from 2.6.0 on, so 2.9.0 gets its own NONE section to keep it continuous. The 2.10.0 section names the Basic HTTP Event I/O Processor under both type strings (requires ~> 2.10), the front around decode/1, the scxml-send-key header a front dedupes on, and the {module, opts} registration with the optional ioprocessors_entry/2, and links docs/basichttp.md. It is a commit of its own because .claude/wurk/release.md names the only files a release commit touches.
  2. Releases 2.10.0 - @version to 2.10.0, the changelog.d/st-gje8.md and changelog.d/st-8kn8.md fragments promoted byte for byte under ## [2.10.0] 2026-09-30 with a lead paragraph and deleted, the README install pin moved from ~> 2.9 to ~> 2.10. It touches exactly mix.exs, README.md, CHANGELOG.md and the deleted fragments, the set the release extension lists (the 2.9.0 prep f2365bb is the shape reference).

Why a minor

The public surface only grows (the commit body says it in full):

  • New modules: Statifier.Send.BasicHTTP (lib/statifier/send/basic_http.ex), the Statifier.Send.BasicHTTP.Transport behaviour and its Transport.Httpc default.
  • A new optional callback, Statifier.Send.Processor.ioprocessors_entry/2, with its entry_context type (lib/statifier/send/processor.ex); a processor that implements only /1 is asked as before.
  • A :send_types value may be {module, opts} beside the bare module it already accepted (Statifier.Send.Types.registration/0); a bare module plans, records and writes _ioprocessors as before (Statifier.Session.Effects processor_for/2, Statifier.Session.Recording registration_names/1).
  • %Statifier.Send.Types{} gains a processors field, defaulting to %{}; the existing types and entries fields are unchanged.
  • Statifier.Testing.Case.test_scxml/5 takes a :send_types option; a call without it starts its session as before.
  • The case schema's host object gains event_io_processors (conformance/schema/case.json), and a w3c case may now carry that one host key: a new member of a closed set.

No removed function, narrowed union or changed return was found in the lib/ diff since v2.9.0 or in either promoted fragment. The dependencies in mix.exs are unchanged: the processor's default transport is OTP's :httpc.

Provenance

  • The README sentence that points at the upgrading page named the range "2.5 to 2.8.1"; commit 1 moves it to "2.5 to 2.10.0" with the page title, so the two agree. It rides the upgrading commit, not the release commit.
  • The CHANGELOG.md header's link to changelog.d/README.md stays pinned at v2.9.0: that pin was set outside a release prep, the file there is unchanged, and the release extension moves no link.

Gate

The full mix quality, run on the staged tree of the release commit (both commits applied), quoted whole:

Running quality checks...

✓ Format: No changes needed (391ms)
✓ Compile: dev + test compiled (warnings as errors) (2.0s)

Running analysis stages in parallel...

○ Gettext: skipped (:gettext not installed)
○ ADR judge: skipped (disabled in .quality.exs)
✓ Doc links: 38 links checked (51ms)
✓ Dependencies: No unused dependencies (924ms)
✓ Gate guard: No unjustified gate changes (1.3s)
✓ ADR guard: No likely ADR violations (1.8s)
✓ Sobelow: No findings (2.1s)
✓ Doctor: Passed (2.7s)
✓ Conformance corpus: Passed (6.5s)
✓ Docs: No warnings (6.5s)
✓ Credo: No issues (11.0s)
✓ Dialyzer: No warnings (12.8s)
✓ Regression ratchet: Passed (17.5s)
✓ Tests: 3,142 of 3,142 passed, 96.3% coverage (21.6s)

✓ All quality checks passed!

mix quality --profile merge on the same tree: all stages passed; the ADR judge skipped because no file in the diff is in a judged ADR scope. The release commit is a bare commit on that byte-identical staged tree (git write-tree before and after both runs), with the repo gate lock and one machine slot held throughout.

This PR bumps the version only. The tag follows the merge and the Hex publish stays the operator's.

docs/upgrading.md now runs from 2.5 to 2.10.0, and the README
sentence that points at it names the same range.

- 2.9.0: must change NONE (MachineState.last_selection is not in a
  position blob); may start Statifier.Publish.findings/2 and read
  last_selection. The page carried a section per release from 2.6.0
  on, so 2.9.0 gets one to keep it continuous.
- 2.10.0: must change NONE (a session that registers no send type
  sees nothing new, and ~> 2.9 already accepts 2.10.0); may start
  the Basic HTTP Event I/O Processor under both type strings, the
  front around decode/1, the scxml-send-key header a front dedupes
  on, and the {module, opts} registration with the optional
  ioprocessors_entry/2. It links docs/basichttp.md.

A commit of its own, ahead of the release commit: the release
extension names the only files a release commit touches.

Refs: st-p2a2
Assembles the fragments for the Basic HTTP Event I/O Processor, its
dedup key header, the {module, opts} send type registration, the
test_scxml/5 option and the corpus claims into a 2.10.0 section and
deletes them, and moves the README requirement to ~> 2.10. The lead
paragraph says a session that registers nothing sees nothing new and
that a sibling implementation re-vendors the corpus at this tag.

ADR-0066's SemVer commitment makes this a minor release. The public
surface only grows: a new module, Statifier.Send.BasicHTTP, with its
Transport behaviour and the Httpc adapter; a new optional callback,
Statifier.Send.Processor.ioprocessors_entry/2, with its entry_context
type; a :send_types value may be {module, opts} beside the bare module
it already accepted, with a registration type; the
Statifier.Send.Types struct gains a processors field; and
test_scxml/5 takes a :send_types option. No existing function changes
what it answers for an input it accepted in 2.9.0: a bare-module
registration plans, records and writes _ioprocessors as before, and a
session that registers nothing is unchanged. The case schema's host
object gains event_io_processors, a new member of a closed set, and a
w3c case may now carry that one host key: a closed-set
growth. mix.exs's dependencies are unchanged; the
processor's default transport is OTP's :httpc.

Committed on the staged tree the full mix quality and mix quality
--profile merge ran green on (write-tree 62cbefe before the commit).
Prep only: the tag and the Hex publish are not part of this commit.

Refs: st-p2a2
@johnnyt
johnnyt merged commit c8894ae into main Sep 30, 2026
1 check passed
@johnnyt
johnnyt deleted the st-p2a2-release-2-10-0 branch September 30, 2026 15:32
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