Skip to content

Releases v0.5.0 - #37

Merged
johnnyt merged 1 commit into
mainfrom
sd-w40-release-0-5-0-prep
Sep 26, 2026
Merged

johnnyt merged 1 commit into
mainfrom
sd-w40-release-0-5-0-prep

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 26, 2026

Copy link
Copy Markdown
Member

Release prep for statifier_datamodel 0.5.0, a minor under 0.x: it adds StatifierDatamodel.Schema and the shipped draft-07 schema file priv/schemas/datamodel-document.schema.json, and changes no existing signature. The version bump and changelog promotion only; the tag follows the merge and the Hex publish is the operator's.

The recipe, as .claude/wurk/release.md states it

  • "Insert a new ## [X.Y.Z] YYYY-MM-DD section into CHANGELOG.md directly above the previous version's section." Done: ## [0.5.0] 2026-09-26, directly above ## [0.4.0] 2026-09-06.
  • "The date is the operator's local date, not UTC ... Take the date from date +%F on the machine cutting the prep and write that." Done: date +%F printed 2026-09-26.
  • "Under the heading, write a short lead paragraph saying what the release is, then the fragments' bullets grouped by heading and ordered Added, Changed, Deprecated, Removed, Fixed, Security." Done: the only fragment on main, changelog.d/sd-630.md, carries only ### Added.
  • "Carry every bullet over byte for byte." Done; checked by exact substring match of the fragment's bullet (read from origin/main) against the new section.
  • "Delete the promoted fragment files in the same commit. README.md stays." Done.
  • "This file's changelog has no link-reference block at the end" - none added.
  • "The pin is written to the exact minor that the release cuts, patch component 0 included - ~> 0.5.0 for a 0.5.0 release, not ~> 0.5." Done.
  • "No second version carrier" - mix.exs @version is the only version string moved.
  • "The files a release commit touches": mix.exs, README.md, CHANGELOG.md, changelog.d/*.md (deleted). The commit touches exactly mix.exs, README.md, CHANGELOG.md and changelog.d/sd-630.md (deleted).

The extension's closing "no tag" sentence is superseded for this prep by CLAUDE.md's "Release preps" paragraph (recorded 2026-09-25 by the operator): the tag goes on the merged commit after merge. This request does not tag.

What the release carries

A check of git diff v0.4.0..origin/main -- lib/ mix.exs priv/:

  • lib/statifier_datamodel/schema.ex - a new module, StatifierDatamodel.Schema, with path/0 and json/0. New surface, additive.
  • lib/statifier_datamodel/types.ex - moduledoc only (a section on a consumer's own relation above satisfies/3); no code change. It documents that t:reason/0 may gain members; it adds none.
  • mix.exs - the docs group for Schema, priv/schemas in the package files, ex_quality ~> 0.15 (dev only), and ex_json_schema ~> 0.11 (only: :test, runtime: false).
  • priv/schemas/datamodel-document.schema.json - the new shipped file.

No existing closed set or public union a host pattern-matches gains a member. No runtime dependency is added: mix hex.build on this branch lists no requirements, and it lists priv/schemas/datamodel-document.schema.json among the package files.

Review (in-turn, gate tier)

A release prep changes no contract surface of its own. I re-read the diff against the bead's acceptance: @version reads 0.5.0; the new section's heading carries the local date; the one bullet is byte-identical to the deleted fragment; git diff origin/main -- CHANGELOG.md shows zero removed lines, so no published section moved; the README pin reads {:statifier_datamodel, "~> 0.5.0"}; the fragment directory holds only its README.md; the commit's name-status lists exactly the four paths above. The lead paragraph's claims were checked against the code: the schema is draft-07 and advisory (StatifierDatamodel.Schema moduledoc, "Advisory, never admission"), nothing in lib/ calls path/0 or json/0, and the one dependency added since 0.4.0 is test-only.

Gate

mix quality on the committed tree, quoted whole from the stage summary:

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

Running analysis stages in parallel...

○ Doctor: skipped (:doctor not installed)
○ Gettext: skipped (:gettext not installed)
○ Sobelow: skipped (:sobelow not installed)
✓ Doc links: 1 link checked (10ms)
✓ Dependencies: No unused dependencies (373ms)
✓ Credo: No issues (765ms)
✓ Docs: No warnings (793ms)
✓ Tests: 137 of 137 passed, 99.1% coverage (804ms)
⋯ Dialyzer: building PLT (this is a one-time cost)
✓ Dialyzer: No warnings (PLT built this run) (35.1s)

✓ All quality checks passed!

The commit was made with a bare git commit on a staged tree byte-identical (git write-tree) to the tree that run was green on, with the gate lock held across both.

Refs: sd-w40

- `mix.exs` moves `@version` from 0.4.0 to 0.5.0. A MINOR under
  `0.x`: it adds `StatifierDatamodel.Schema` and a shipped schema
  file, and changes no existing signature.
- `README.md`'s install pin moves to `~> 0.5.0`.
- `CHANGELOG.md` gains a `## [0.5.0] 2026-09-26` section - the local
  date - assembled from the one fragment byte for byte under
  `Added`. Its lead paragraph says what a host gains, that the
  schema is advisory, and that upgrading needs no migration and
  adds no runtime dependency.
- `changelog.d/sd-630.md` is deleted, promoted into that section.
  `changelog.d/README.md` stays.

No tag and no publish here: the tag follows the merge, and the
publish is the operator's.

Refs: sd-w40
@johnnyt
johnnyt merged commit 71de7e0 into main Sep 26, 2026
1 check passed
@johnnyt
johnnyt deleted the sd-w40-release-0-5-0-prep branch September 26, 2026 20:20
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