Skip to content

Keep 3.x releases from becoming the latest GitHub release - #1210

Merged
laughingman7743 merged 1 commit into
3.xfrom
ci/3.x-release-not-latest
Oct 16, 2026
Merged

laughingman7743 merged 1 commit into
3.xfrom
ci/3.x-release-not-latest

Conversation

@laughingman7743

Copy link
Copy Markdown
Member

WHAT

The Release step of .github/workflows/release.yaml on 3.x passes make_latest: false to softprops/action-gh-release, so a GitHub release created from a 3.x tag is not marked as the repository's latest release.

3.x only. Master's release workflow keeps the GitHub default (the newest release becomes the latest).

WHY

Trivial fix, no issue. The step did not set make_latest, so the GitHub API default marked the newest release as the latest. v3.40.0, published on 2026-10-16 after v4.1.0, became the repository's latest release, and v4.1.0 had to be marked as latest again by hand (gh release edit v4.1.0 --latest). This happens with every 3.x release published after a 4.x release.

TEST

Tested commit: 44f10a0

  • The pinned action (softprops/action-gh-release@153bb8e0, v2.6.1) declares the make_latest input in action.yml and passes 'true' | 'false' | 'legacy' to the release API (src/github.ts); other values are dropped.
  • release.yaml parses with PyYAML; the Release step's make_latest is false, which Actions passes to the action as the string false.
  • actionlint .github/workflows/release.yaml reports only the existing matrix.python-version reference without a matrix (line 36), which this change does not touch.
  • just lint: passed.

Not run: a release. The next 3.x tag exercises this step; check afterwards that gh release list still shows the 4.x release as Latest.

🤖 Generated with Claude Code

The release step let GitHub mark the newest release as the latest, so
v3.40.0, published after v4.1.0, replaced it as the repository's latest
release until it was reset by hand. A release from this maintenance
branch now passes make_latest: false.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
dist/*.tar.gz
generate_release_notes: true
# A release of this maintenance line does not replace the latest release of master.
make_latest: false

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review round one (implementation behavior): CLEAN.

Scope: base 7fb102a, head 44f10a0; the single changed step.

  • The pinned action (153bb8e0, v2.6.1) reads INPUT_MAKE_LATEST through parseMakeLatest() (src/util.ts:120) and passes it to both the create and the update release calls (src/github.ts:192, :586). A YAML false reaches it as the string false, which it accepts; anything other than true/false/legacy would be dropped to the API default.
  • Only the Release step creates a GitHub release on 3.x, so every 3.x release is covered; PyPI publishing and the test gate are untouched.
  • Pre-existing, out of scope: actionlint reports matrix.python-version without a matrix at line 36 (already known; harmless).

dist/*.whl
dist/*.tar.gz
generate_release_notes: true
# A release of this maintenance line does not replace the latest release of master.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Self-review round two (claims, operations): CLEAN.

  • PR body claims: the action's input contract and value handling are checked above. v3.40.0 was marked Latest after its publish and v4.1.0 was restored with gh release edit v4.1.0 --latest (gh release list before and after). Master's release.yaml is unchanged and keeps the default.
  • Operations: the effect shows only at the next 3.x tag; the PR body says to check gh release list then. A 3.x release can still be made Latest by hand if ever needed.
  • Docs: no repository doc or skill mentions make_latest or the Latest marker, so nothing else needs updating.

dist/*.tar.gz
generate_release_notes: true
# A release of this maintenance line does not replace the latest release of master.
make_latest: false

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent review (relayed): Codex CLI 0.162.1, model gpt-6-astra, reasoning effort max, codex exec -s read-only, session 01a1455a-8674-7e02-bdff-508016f1c2c4. Static review only (the action's input semantics were assessed from the reviewer's knowledge; no network). Snapshot: detached worktree at 44f10a0; range 7fb102a..44f10a0; prompt without the PR number, description, or prior findings.

Result: CLEAN.

Covered: the diff, tag trigger, release creation, action input handling, PyPI publishing, artifacts, generated notes, and the reusable test gate. make_latest: false applies unconditionally to the sole GitHub release step, so every release created by this workflow revision receives it. GitHub Actions passes the unquoted YAML boolean as the string "false", which the pinned action accepts. Build, PyPI publishing, asset uploads, generate_release_notes, and needs: test are unchanged.

The author verified the input handling against the pinned action's source (round one). The independent review of this PR is complete.

@laughingman7743
laughingman7743 marked this pull request as ready for review October 16, 2026 15:37
@laughingman7743
laughingman7743 merged commit 27c6829 into 3.x Oct 16, 2026
11 checks passed
@laughingman7743
laughingman7743 deleted the ci/3.x-release-not-latest branch October 16, 2026 15:40
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