Skip to content

docs: cut the /release skill down to pipelex-sdk-python's specifics - #26

Merged
lchoquel merged 1 commit into
devfrom
docs/Release-skill
Sep 7, 2026
Merged

docs: cut the /release skill down to pipelex-sdk-python's specifics#26
lchoquel merged 1 commit into
devfrom
docs/Release-skill

Conversation

@lchoquel

@lchoquel lchoquel commented Sep 7, 2026

Copy link
Copy Markdown
Member

The repo's /release skill now carries only what is specific to pipelex-sdk-python and names the workspace release play, docs/releasing.md, for the procedure itself. Everything the play already does once for every repo is gone from the skill: the git status pre-flight that offered to fold uncommitted changes or unpushed commits into the release, the release branch created in place from the current HEAD, the numbered restatement of the changelog / bump / commit / pull-request steps, and the post-merge reminder that the merge is what publishes. What is left is the part that cannot be regenerated from the play — this repo's own facts, verified against the tree and .github/workflows/ rather than carried over on trust.

Under the six headings the play reads by name, the skill now declares:

  • What ships — the merge to main fires publish.yml on the push, so its run sits under main with the merge commit as its head SHA. Its jobs run in sequence: build makes the sdist and wheel once and every later job downloads that artifact; publish-to-pypi uploads to PyPI as pipelex-sdk through trusted publishing (OIDC, no token) with no skip-existing, which is the only thing standing between an unbumped push to main and a failed upload, since version-check.yml runs on pull requests only; github-release slices the changelog section for the version, signs the dists with Sigstore and creates the vX.Y.Z Release. Two failure shapes are written down because they are silent: signing is not continue-on-error and happens before the Release is created, so an outage leaves the version on PyPI with no Release and no tag (re-run the failed jobs, which reuse the stored build), and a missing ## [vX.Y.Z] - heading makes the extraction step warn and exit rather than fail, shipping a Release whose body is the placeholder Release vX.Y.Z. The landing verifies the run, the registry and the tag with three commands.
  • Version files and the lockpyproject.toml's [project].version is the one place the number is written, and it must stay the file's first version = line because four different readers grep it differently. uv.lock is regenerated by make li after the bump, and package-check.yml runs uv lock --locked on every pull request, so a stale lock is a red PR. Nothing else is stamped: pipelex_sdk/version.py derives __version__ from the installed distribution metadata, and the README carries no version badge.
  • Gatesmake agent-check (it rewrites files, so what it touched joins the release commit) and make agent-test, with the note that the test gate must run again after the bump and make li, because tests/unit/test_version.py compares __version__ read from installed metadata against the pyproject.toml version and skips itself entirely when the distribution is not installed. make check is explicitly not part of the release: it adds pylint and no workflow runs it.
  • The release commitpyproject.toml, CHANGELOG.md, uv.lock, and each file make agent-check rewrote, staged by name.
  • CI on the release pull requestguard-branches.yml (gate-main is what makes release/vX.Y.Z the only head that can reach main), version-check.yml, changelog-check.yml, package-check.yml, lint-check.yml, tests-check.yml and cla.yml, each with what it actually asserts and what it does not: version-check.yml compares only against the branch name and never against the version already on main, so a backwards bump passes it, and changelog-check.yml asserts nothing about [Unreleased], so removing a leftover heading is the skill's job rather than CI's.
  • Particulars — pre-release versions are refused (both guards anchor release/v[0-9]+\.[0-9]+\.[0-9]+ at both ends, and version-check.yml fails rather than skips on a non-matching head, even though publish.yml carries pre-release detection nothing can reach); the changelog heading carries the v; the tags are lightweight, created by gh release create, so tag reads need --tags; the Sigstore action is SHA-pinned because the enterprise Actions allowlist keys on the SHA, making a version move an out-of-band change needing an admin; the exact mthds==X.Y.Z pin belongs to the bump-mthds skill and must stay co-installable with pipelex's own exact pin; and ledger.toml declares no release_followups for this repo, so follow-ups are filed by hand.

The ledger item's 2026-09-07 survey disagreed with the tree in three places, and the tree won each time. The survey listed make agent-check as the whole of Gates, but make agent-test is a separate Makefile target and CI runs the same suite through make gha-tests in tests-check.yml — and the version-sync test makes the ordering around the bump load-bearing, which the survey did not capture. It recorded the changelog convention as "never recreates" an [Unreleased] section; what is true is that the release folds it into the new entry and leaves none behind, and the next change to land creates one again. And it proposed verifying the publish with pip index versions pipelex-sdk, which does not work from the release worktree: wt provisions through the Makefile's install target, and the uv-made .venv has no pip — the skill reads the PyPI JSON API instead and keeps the pip form as the alternative for a shell that has one.

Closes L-260907-6e6622

🤖 Generated with Claude Code

https://claude.ai/code/session_016F72qvy4QBZHe7XX24QmcT


Summary by cubic

Trims the /release skill to only what is specific to pipelex-sdk-python, pointing to the workspace release play for the general procedure.

Closes L-260907-6e6622

Changes

  • The skill now names the workspace play and keeps only this repo's own facts: the publish workflow's behavior and failure shapes, version file and lock handling, the agent-check and agent-test gates (including the version-sync test that must run again after the lock), the release commit contents, CI checks on the release PR, and particulars like the pre-release refusal, lightweight tags, SHA-pinned Sigstore action, exact mthds pin, and no automatic follow-ups.
  • Removed the generic procedure the play already covers: the git status pre-flight, branch creation from current HEAD, the numbered changelog/bump/commit/PR steps, and the post-merge publishing reminder.

Written for commit cada2f3. Summary will update on new commits.

Review in cubic

The skill now names the workspace release play and declares only what is this repo's own: what the push to main publishes through publish.yml and how the landing verifies it, the pyproject.toml version with the uv.lock that make li regenerates, the agent-check and agent-test gates including the version-sync test that must run again after the lock, the files the release commit carries by name, the workflows that gate a release pull request, and the particulars — the refused pre-release form, the lightweight tags, the SHA-pinned Sigstore action, the exact mthds pin, and the absence of automatic release follow-ups.

Dropped the procedure the play already carries once for every repo: the git status pre-flight that offered to fold uncommitted changes or unpushed commits into the release, the release branch created in place from the current HEAD, the numbered restatement of the changelog, bump, commit and pull request steps, and the post-merge reminder that the merge is what publishes.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016F72qvy4QBZHe7XX24QmcT
@lchoquel
lchoquel merged commit d05ddb5 into dev Sep 7, 2026
18 checks passed
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 7, 2026
@lchoquel
lchoquel deleted the docs/Release-skill branch September 7, 2026 22:17
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant