Skip to content

docs: record the lockfile step and the approval gate in the release flow - #63

Merged
imakecodes merged 1 commit into
mainfrom
docs/release-lockfile-and-approval-gate
Sep 11, 2026
Merged

imakecodes merged 1 commit into
mainfrom
docs/release-lockfile-and-approval-gate

Conversation

@imakecodes

Copy link
Copy Markdown
Member

Two gaps the 1.2.0 release walked into. Neither is a code change; both cost time because the documented flow was incomplete.

make lock is part of the bump

The package is a member of its own workspace, so uv.lock records project.version. Bumping pyproject.toml alone leaves the two disagreeing, and every uv sync --locked then fails:

The lockfile at `uv.lock` needs to be updated, but `--locked` was provided.

That includes the release workflow's own sync step, so a release bumped this way fails before it builds anything. Step 1 in CLAUDE.md now moves both files together, and the CONTRIBUTING.md flow gains the make lock line it was missing.

A green matrix is not a published release

The pypi environment carries a required reviewer. After Build Release uploads the artifacts, the run parks at waiting and publishes nothing until someone approves the deployment.

The old CONTRIBUTING.md sentence read:

After the tag is pushed, the PyPI workflow publishes that version if CI passes and the tag matches the package version.

Both conditions can hold with the package still unpublished, which invites reading a paused release as a finished one. During 1.2.0 the run sat at waiting with all 21 checks green and 1.1.2 still the latest on PyPI. Both documents now say the approval is a third condition, and that the run's own status is what to check.

Verification

Documentation only, no code or workflow changes. CI on this PR still exercises the full matrix.

🤖 Generated with Claude Code

Two things the 1.2.0 release hit that neither document mentioned.

`make lock` belongs to the version bump. The package is a member of its
own workspace, so uv.lock records project.version. Bumping pyproject.toml
alone leaves the two disagreeing, and every `uv sync --locked` then fails:

    The lockfile at `uv.lock` needs to be updated, but `--locked` was provided.

That includes the release workflow's own sync step, so the release fails
before it builds anything. Both files now move together in step 1.

The `pypi` environment has a required reviewer. The run parks at `waiting`
after the artifacts are built and publishes nothing until someone approves
the deployment. The previous wording ("the workflow publishes that version
if CI passes and the tag matches") reads as if a green matrix were enough,
which invites treating a paused release as a finished one.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@imakecodes
imakecodes merged commit 619e2ae into main Sep 11, 2026
21 checks passed
@imakecodes
imakecodes deleted the docs/release-lockfile-and-approval-gate branch September 11, 2026 15:58
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