Repository navigation
Keep 3.x releases from becoming the latest GitHub release - #1210
Conversation
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 |
There was a problem hiding this comment.
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_LATESTthroughparseMakeLatest()(src/util.ts:120) and passes it to both the create and the update release calls (src/github.ts:192, :586). A YAMLfalsereaches it as the stringfalse, which it accepts; anything other thantrue/false/legacywould be dropped to the API default. - Only the
Releasestep 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-versionwithout 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. |
There was a problem hiding this comment.
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 listbefore and after). Master'srelease.yamlis unchanged and keeps the default. - Operations: the effect shows only at the next 3.x tag; the PR body says to check
gh release listthen. A 3.x release can still be made Latest by hand if ever needed. - Docs: no repository doc or skill mentions
make_latestor 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 |
There was a problem hiding this comment.
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: falseapplies 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, andneeds: testare unchanged.
The author verified the input handling against the pinned action's source (round one). The independent review of this PR is complete.
WHAT
The
Releasestep of.github/workflows/release.yamlon3.xpassesmake_latest: falsetosoftprops/action-gh-release, so a GitHub release created from a 3.x tag is not marked as the repository's latest release.3.xonly. 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
softprops/action-gh-release@153bb8e0, v2.6.1) declares themake_latestinput inaction.ymland passes'true' | 'false' | 'legacy'to the release API (src/github.ts); other values are dropped.release.yamlparses with PyYAML; theReleasestep'smake_latestisfalse, which Actions passes to the action as the stringfalse.actionlint .github/workflows/release.yamlreports only the existingmatrix.python-versionreference 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 liststill shows the 4.x release as Latest.🤖 Generated with Claude Code