Repository navigation
Releases 2.14.0 - #456
Merged
Merged
Releases 2.14.0#456
Conversation
The title and the intro's range move from 2.13.0 to 2.14.0. The intro's sentence that no release in the range has a Breaking entry now says that only 2.14.0 has one, and the intro gains one sentence naming the hosts 2.14.0's changed answers reach. A 2.14.0 section closes the page in the house shape, written from the fragments' host-facing sentences: - a host must change only where one of three answers reaches it: the validator refuses a document that writes one attribute twice on one element (the Breaking entry, with what to do about it); cancel/1 reaches a budget-halted session past queued events and halts it :cancelled; a delayed send fired to an internal target or an unreachable route under a budget halt is dropped without stepping; - a host may start nothing new; - the corpus hash moves (two library cases join the statifier suite and the registry claims both), so a sibling re-vendors at the v2.14.0 tag, and the case schema's description changes change no verdict. Documentation only: no changelog.d fragment, as changelog.d/README.md excludes documentation. Refs: st-ejq9
Assembles the fragments for the duplicate-attribute refusal, cancel/1
behind a budget halt's queue and the fired delayed send under a budget
halt into a 2.14.0 section and deletes them, and moves the README
requirement to ~> 2.14. The lead paragraph names the Breaking entry and
the two session answers that change. Every bullet is carried byte for
byte.
ADR-0066's SemVer commitment and the ruling on the refusal (ruled by
the operator, 2026-10-10: a validator refusal released in a minor) make
this a minor release: Statifier.Validator.Error's closed reason union
grows by {:duplicate_attribute, element, attribute}, the Breaking entry
the Changed section carries. The other answers that change are each
named by their fragment: a budget-halted session's cancel/1 reaches it
past queued events (Fixed); a delayed send fired to an internal target
or an unreachable route under a budget halt is dropped without stepping
(Fixed). Two library cases join the statifier suite and the corpus hash
moves; conformance fixtures take no bullet.
Committed on the staged tree the full mix quality and mix quality
--profile merge ran green on (write-tree deac9e8 before the commit).
Prep only: the tag and the publish are not part of this commit.
Refs: st-ejq9
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.
Release prep for statifier 2.14.0. The prep only: the conductor merges, tags v2.14.0 at the merge SHA and pushes the tag; release.yml publishes on the tag push.
The version and why
2.14.0, a minor. The validator's closed reason union,
Statifier.Validator.Error'st:reason/0, grows by{:duplicate_attribute, element, attribute}: a document that writes one attribute twice on one element is refused where it compiled. The refusal was ruled by the operator, 2026-10-10 (a validator refusal, error severity, located at the repeated occurrence, released in a minor), and its fragment carries the Breaking entry. The other fragments are two Fixed entries; none is a Removed or Deprecated entry.The closed-set answer
Read from
git diff v2.13.0..origin/main -- lib privand each fragment, for a new member of a closed vocabulary a host pattern-matches:Statifier.Validator.Errort:reason/0gains{:duplicate_attribute, element :: binary(), attribute :: binary()}, and soStatifier.Validator.Error.code/1can answer:duplicate_attribute. This is the one new member. Its constructor,Statifier.Validator.Error.duplicate_attribute/3, is new beside the other reason constructors in that module.Statifier.Session: the budget-haltedhandle_info/2clause for a fired delayed send and the drain'sdrain_halted/1are private; no new message, halt reason or reply shape reaches a host. The halted messages a host can receive are unchanged in shape; only when{:halted, :cancelled}arrives after a budget halt, and that no further{:halted, :budget_exhausted}follows a dropped fire, change (both Fixed).Statifier.Session.Inbox.take_cancel/1is@doc false;Statifier.Replay'sdrain_halted/1is private.Statifier.Publish.findings/2: its doc only (row S3 and a generated invoke id); no finding changes.lib/mix/(the ADR guard, its task, the host case runner): docs and gate tooling, not in the Hex package.No runtime dependency requirement moves. Since v2.13.0 the only requirement and lock lines that moved are the dev-only
ex_qualityones (~> 0.16, locked at 0.16.0), which are not part of the Hex package's requirements.Fragments promoted
Into
## [2.14.0] 2026-10-11, each bullet byte for byte, then deleted (changelog.d/README.mdstays):changelog.d/st-6lu.md(the Breaking entry, carried exactly as written)changelog.d/st-2w9k.md,changelog.d/st-jdxs.mdThe heading carries no dash and the file gains no link reference (
.claude/wurk/release.mdstep B). The lead paragraph names the Breaking entry and the two session answers that change; it makes no "registers nothing" claim, as no send type changes.The upgrading page
A separate commit, as
docs/upgrading.mdis outside the release commit's files. The title and the intro's range move to 2.14.0. The intro's sentence that no release in the range has a Breaking entry now says only 2.14.0 has one, and a new intro sentence names the hosts 2.14.0's changed answers reach. The 2.14.0 section, written from the fragments' host-facing sentences:cancel/1reaching a budget-halted session past queued events; a delayed send fired under a budget halt to an internal target or an unreachable route dropped without stepping. A~> 2.13requirement already accepts 2.14.0.loan_renew_refused_by_standingandloan_dispute_restores_late_shallowly, the registry claims both, and the corpus hash moves, so a sibling implementation that vendors the corpus re-vendors at the v2.14.0 tag. No case repeats an attribute, so the refusal moves no case. The case schema's description changes change no verdict.The commits
.claude/wurk/release.md's files,mix.exs@version "2.14.0", the README pin{:statifier, "~> 2.14"}, theCHANGELOG.mdsection and the deleted fragments. Committed on the staged tree the fullmix qualityandmix quality --profile mergeran green on, with no change between the green runs and the commit, the repository's gate lock and a machine slot held across both runs and the commit.Gate
Full
mix qualitygreen on the final tree (3,305 of 3,305 tests, 96.3% coverage, Dialyzer clean, regression ratchet and conformance corpus passed, README stage green), andmix quality --profile mergegreen; its ADR judge skipped, as no file in this diff is in a judged scope.After the merge
The conductor merges, pulls main, tags v2.14.0 at the merge SHA and pushes the tag once every other round that reads this repository at a tag reads closed; release.yml publishes on that tag push. Nothing in this PR tags or publishes.