Skip to content

Releases v0.25.0 - #274

Merged
johnnyt merged 2 commits into
mainfrom
sp-ho6v-release-0-25-0
Oct 13, 2026
Merged

johnnyt merged 2 commits into
mainfrom
sp-ho6v-release-0-25-0

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 13, 2026

Copy link
Copy Markdown
Member

What

The 0.25.0 release prep for statifier_persistence, in two commits.

  1. Carries the upgrading page to 0.25.0 (docs only): docs/upgrading.md gains "0.24 to 0.25" > "0.25.0" (the statifier floor move to ~> 2.15 and what a host on statifier 2.9 to 2.14 does; where function_providers: goes; the {:function_providers, reason} arm a host that passes a list may match; the start_child_at/6 refusal in its own shape). The page title, intro and pin sequence move to 0.25.0, and the schema sentence runs through 0.25.0. This commit is its own, ahead of the release commit (decided by the conductor under a standing consent, 2026-10-13).
  2. Releases v0.25.0: mix.exs @version 0.24.2 to 0.25.0; README pin ~> 0.24.0 to ~> 0.25.0; the two changelog fragments promoted into a ## [0.25.0] 2026-10-13 section of CHANGELOG.md (date from the local date +%F, a lead paragraph, bullets byte for byte under Added then Changed, no link block, the header link moved to v0.25.0); both fragments deleted (changelog.d/README.md stays). It touches exactly the four paths .claude/wurk/release.md lists, and not CLAUDE.md.

Version: a minor, because function_providers: is new public surface and the statifier requirement moves. No tag, no publish: the conductor tags the merge SHA and the tag push publishes through the release workflow.

Prep checks

  • git diff v0.24.2..origin/main --stat -- lib priv: lib/statifier_persistence/driver.ex and lib/statifier_persistence/executions.ex only; priv is untouched. Every hunk belongs to the two fragments' beads (the option threading, the entry refusal, the start_child_at/6 refusal).
  • A changed answer outside the floor and the refusal-only-when-the-option-is-passed: none found. A driver or step call that passes no function_providers: takes the same path (Driver.function_providers/2 yields nil, initialize_opt/3 skips a nil, and Executions.check_function_providers/1 resolves nil to :ok). The one hunk that touches every step is the nil tripwire in Executions now also matching functions: nil, which holds on the statifier 2.15 lock and is exercised by the full suite.
  • Closed-set hits (a union or set a host pattern-matches that grew), each by anchor:
    • t:StatifierPersistence.Executions.error/0 gained {:function_providers, function_providers_reason()}.
    • t:StatifierPersistence.Executions.function_providers_reason/0 is a new type naming the three reasons Statifier.Evaluator.Functions.from_providers/1 answers; it is a new union, not a grown one.
    • StatifierPersistence.Driver.start_child_at/6's @spec refusal arm is now {:refused, {:function_providers, reason} | term()}; the arm is answered only when the driver carries a list that does not resolve.
    • t:StatifierPersistence.Executions.step_opt/0 gained {:function_providers, [module()] | nil}; this is an option union a host builds, not one it matches.
    • No telemetry event, no telemetry reason set and no schema moved: start_child_at/6 emits no [:statifier_persistence, :child, :refused] event for the new refusal, as documented.
      Each is a minor-sized addition already named in a fragment.

Gate

Full mix quality on the branch tip tree: format, compile with warnings as errors, doc links, deps, credo, docs, tests (1,447 of 1,447 passed), dialyzer. Postgres answered on localhost 5432 before the run. The release commit was cut bare on the byte-identical staged tree, holding the repo gate lock and a machine slot across the run and the commit.

Provenance

  • The upgrading page lands as its own commit ahead of the release commit (decided by the conductor under a standing consent, 2026-10-13); the claims in it were checked against lib/ and the fragments at the base commit.
  • Review tier: contract. The conductor dispatches the cold pass; none was run here.

The upgrading page now runs from 0.13 to 0.25.0. A "0.24 to 0.25"
section with a "### 0.25.0" subsection says the statifier floor moves
from ~> 2.9 to ~> 2.15, what a host on statifier 2.9 to 2.14 does, where
the new function_providers: option goes (step/5, initialize: on
create/4, Driver.new/3), the {:function_providers, reason} arm a host
that passes a list may match, and the start_child_at/6 refusal in its
own shape. The intro names the "~> 0.25.0" pin and the floor move, and
the migration sentence runs through 0.25.0.

Documentation only: no gated path changes, so there is no gate to run
and the commit rests on review of the diff.

Refs: sp-ho6v
Version 0.25.0, a minor release: the function_providers: option is new
public surface (step/5, initialize: on create/4, Driver.new/3) and the
statifier requirement moves from ~> 2.9 to ~> 2.15. Both changelog
fragments are promoted into CHANGELOG.md, the README pin moves to
~> 0.25.0, and the changelog header link names v0.25.0.

The release commit touches exactly mix.exs, README.md, CHANGELOG.md and
the deleted fragments. The full mix quality gate ran green on this
tree (1,447 tests, no warnings) with the gate lock and a machine slot
held across the commit. The tag is the conductor's, after the merge.

Refs: sp-ho6v
@johnnyt
johnnyt force-pushed the sp-ho6v-release-0-25-0 branch from 2a3935f to 7ffb5ef Compare October 13, 2026 14:42
@johnnyt
johnnyt merged commit 473bfd3 into main Oct 13, 2026
1 check passed
@johnnyt
johnnyt deleted the sp-ho6v-release-0-25-0 branch October 13, 2026 14:46
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