Skip to content

Prepares the 9.4.4 release - #246

Merged
johnnyt merged 1 commit into
mainfrom
px-neop-release-9-4-4
Oct 10, 2026
Merged

johnnyt merged 1 commit into
mainfrom
px-neop-release-9-4-4

Conversation

@johnnyt

@johnnyt johnnyt commented Oct 10, 2026

Copy link
Copy Markdown
Member

Prepares the predicator 9.4.4 release: @version moves to 9.4.4, the one changelog.d/ fragment is assembled into a dated 9.4.4 section of CHANGELOG.md with a lead paragraph, and the fragment is deleted. The README install pin (~> 9.4) does not move: a patch leaves it.

No tag is created here. Once this merges, the tag v9.4.4 at the merge commit publishes through the release workflow.

What 9.4.4 releases

Since v9.4.3 two commits landed on main: the evaluator change that orders date members of lists by instant, and the acceptance of the release-workflow record (docs only, no fragment). The one changed answer: ordering two lists, or two maps, now compares two date members, or two datetime members, by instant, as a top-level pair already did. A pair at the same instant steps to the next member; equality, membership, mixed date and datetime members and every top-level answer keep their 9.4.3 answers.

The closed-set question

git diff v9.4.3..origin/main --stat -- lib conformance lists lib/predicator/evaluator.ex and four files under conformance/: the dates case file, the tier 1 corpus file, the manifest and the registry example.

  • lib/predicator/evaluator.ex: a new private compare_values/3 clause for two lists or two plain maps under an ordering operator, and the new private helpers order_members/2, order_map_values/2 and order_terms/2. All are defp; no public function, opcode, error reason, value type or other set a host pattern-matches gains a member.
  • conformance/manifest.json: isa_version stays 6 and every tier's opcode list is unchanged; tier 1's case_count and the corpus_hash move (below).

No promoted change grows a closed set or a public union, so the release is a patch.

Corpus

No corpus file changes in this PR. The corpus moved on main with the evaluator change: five dates/ member cases joined tier 1 (dates/date-list-level-member-steps-to-next, dates/datetime-list-level-member-steps-to-next, dates/gt-date-list-members-by-instant, dates/lt-date-list-members-by-instant, dates/lt-datetime-list-members-by-instant), and the corpus hash advanced from sha256:bb60ec82... to sha256:ddc5cf82.... A sibling implementation re-vendors the corpus at 9.4.4; the section's lead says so.

The CHANGELOG section

## [9.4.4] - 2026-10-10

One changed answer: ordering two lists, or two maps, now compares two date
members, or two datetime members, by instant, as a top-level pair already
did. Every other answer is the one 9.4.3 gives. The conformance corpus hash
moves with this release, so a sibling implementation re-vendors the corpus
at 9.4.4.

### Changed

- Ordering two lists, or two maps, now compares two date members, or two
  datetime members, by instant, as a top-level pair does:
  `[#2026-01-02#] > [#2025-12-31#]` is `true` where it was `false`; a pair
  at the same instant steps to the next member, and equality, membership and
  mixed date and datetime members keep their answers. The conformance corpus
  gains five `dates/` member cases, tier 1 moves from 65 to 70 cases, and
  the corpus hash advances from `sha256:bb60ec82...` to
  `sha256:ddc5cf82...`, so a sibling re-vendors at this release.

The bullet is the fragment's text, rewrapped.

Gate

mix quality on the staged tree of this commit, green. The quality report, whole:

==> predicator
Running quality checks...

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

Running analysis stages in parallel...

○ Doctor: skipped (:doctor not installed)
○ Gettext: skipped (:gettext not installed)
○ Sobelow: skipped (:sobelow not installed)
✓ Doc links: 54 links checked (43ms)
✓ Dependencies: No unused dependencies (701ms)
✓ Credo: No issues (4.2s)
✓ Docs: No warnings (4.5s)
✓ Tests: 2,934 of 2,934 passed, 95.6% coverage (5.2s)
⋯ Dialyzer: building PLT (this is a one-time cost)
✓ Dialyzer: No warnings (PLT built this run) (41.9s)

✓ All quality checks passed!

The lines before it in the run are dependency compilation in a fresh worktree.

`@version` moves to 9.4.4 and `CHANGELOG.md` gains a dated 9.4.4
section assembled from the one `changelog.d/` fragment, which this
commit deletes.

The functional change it releases: ordering two lists, or two maps,
now compares two date members, or two datetime members, by instant,
as a top-level pair already did. The section's lead names that one
changed answer and says the conformance corpus hash moved, so a
sibling implementation re-vendors at 9.4.4.

A patch: the change touches private functions in the evaluator only;
no opcode, error reason or public type is added, and the manifest's
`isa_version` stays 6. The README install pin (`~> 9.4`) does not
move.

No tag is created here; the tag push publishes through the release
workflow.

Refs: px-neop
@codecov

codecov Bot commented Oct 10, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@johnnyt
johnnyt merged commit ecff778 into main Oct 10, 2026
2 checks passed
@johnnyt
johnnyt deleted the px-neop-release-9-4-4 branch October 10, 2026 23:38
johnnyt added a commit that referenced this pull request Oct 11, 2026
ADR-0019's Status line now reads accepted, naming predicator 9.4.4,
the version that carries its code: the change landed in #245, the
release prep #246 merged at ecff778, and the tag v9.4.4 on that commit
published through run 38095733683 on its first attempt. The index row
in docs/adr/README.md reads accepted.

A dated foot Note records the evidence and the SHA of origin/main at
which every claim the record makes was re-verified today; no claim had
moved, so no sentence is superseded. The flip was decided by the
conductor under a standing consent, 2026-10-10.

Only docs/adr/ changes: the Status line and the index row are the only
removed lines. No Elixir touched, no gate run.

Refs: px-9seb
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