Skip to content

Adds a release recipe for /wurk:release - #78

Merged
johnnyt merged 1 commit into
mainfrom
sui-6i0-release-recipe
Sep 2, 2026
Merged

Adds a release recipe for /wurk:release#78
johnnyt merged 1 commit into
mainfrom
sui-6i0-release-recipe

Conversation

@johnnyt

@johnnyt johnnyt commented Sep 2, 2026

Copy link
Copy Markdown
Member

What

Gives this repo a /wurk:release recipe. .claude/wurk.json carried
"release": null, so the skill refused here and every Hex prep was done by
hand.

Two files, both under .claude/:

  • .claude/wurk.json gains a release block byte-identical to the one
    statifier_blocks carries: kind: "hex", version_file: "mix.exs",
    readme_pin: true. Deliberately no changelog key - changelog.mode
    here is fragments, there is no ## [Unreleased] heading, and pointing the
    skill at CHANGELOG.md would make its precondition read for a section that
    does not exist and its edit rename a heading that does not exist.
  • .claude/wurk/release.md is the extension that supplies what the recipe
    cannot: the changelog.d/ precondition that replaces the unreleased-section
    read, the fragment-promotion step, the README pin note, the table of files a
    release commit touches, and the restatement that tag/publish are never the
    skill's.

The precedent this is modeled on

1562d8c ("Cuts the 0.2.0 release"), the most recent prep here. Two places
where this repo differs from statifier_blocks and the extension says so
explicitly, because copying the sibling would have been wrong:

  • The heading form is ## [X.Y.Z] YYYY-MM-DD with no dash between version
    and date, not the skill's own ## [X.Y.Z] - YYYY-MM-DD.
  • No link reference is added. CHANGELOG.md here has no link-reference
    block at all and 1562d8c added none; introducing one is a human's decision,
    not a mechanical release step.

Findings recorded rather than fixed

  • No second version carrier in lib/ or docs/ - the version lives once,
    as @version in mix.exs. assets/package.json has a "version" field
    reading 0.2.0, and the extension names it explicitly as not a release
    carrier: it was created already carrying that string (61d647f), 1562d8c
    did not move it, and nothing asserts it against the project version. If it
    should track the Hex version that is a decision to record and a step to add,
    not something to infer from two strings matching today.
  • The README pin is stale: it reads {:statifier_ui, "~> 0.1"} while
    mix.exs reads 0.2.0, because 1562d8c bumped the version file without
    the pin. With readme_pin: true the next release repairs it. Not touched
    here - this PR changes no README.

Verification

  • ruby ~/.claude/skills/wurk:kit/scripts/lib/manifest.rb check -> valid: true.
    Positive control: temporarily setting kind to a bogus value also passed,
    so the lint does not inspect the release block. The substantive checks are
    therefore the direct comparison against the statifier_blocks block (equal)
    and reading the skill's kind: "hex" steps against this repo's files.
  • Every acceptance criterion machine-checked against the committed tree: the
    block matches the sibling's minus changelog; the extension carries the
    files table and cites 1562d8c; the diff touches only the two .claude/
    files - no version, changelog, README, lib/ or mix.exs change.
  • Quality gate: gate.rb reports applicable: false -
    "no changes under lib/, test/, config/, mix.exs, mix.lock, assets/,
    docs/wire-format.md". Docs-only under this repo's CLAUDE.md commit row; no
    gate ran locally, and CI replays it regardless.

What this PR is not

No version bump, no changelog promotion, no fragment deleted - all twelve
fragments in changelog.d/ are untouched. The release prep that uses this
recipe is a separate bead. mix.exs is untouched (sui-2ke owns it).

Refs: sui-6i0

Closes sui-6i0.

`.claude/wurk.json` carried `"release": null`, so the skill refused here
and every Hex prep was done by hand. The manifest now names the same
`kind: "hex"` block statifier_blocks carries - version file and README
pin, and no changelog key, since `changelog.mode` is `fragments` and
there is no `## [Unreleased]` heading for the skill's changelog step to
rename.

`.claude/wurk/release.md` supplies what the recipe cannot: the
`changelog.d/` precondition, the fragment-promotion step modeled on the
0.2.0 prep commit `1562d8c` (heading form with no dash, and no link
reference, since this CHANGELOG carries no link-reference block), the
finding that no second version carrier exists, and the table of files a
release commit touches.

Tooling only: no version, changelog, README or lib change.

Refs: sui-6i0
@johnnyt
johnnyt merged commit 0d4ae49 into main Sep 2, 2026
1 check passed
@johnnyt
johnnyt deleted the sui-6i0-release-recipe branch September 2, 2026 17: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