Skip to content

fix(ci): release.yml refuses a version below the highest release and a major tag move that is not a fast-forward - #48

Merged
using-system merged 1 commit into
mainfrom
fix/release-tag-monotonicity
Sep 19, 2026
Merged

using-system merged 1 commit into
mainfrom
fix/release-tag-monotonicity

Conversation

@using-system

Copy link
Copy Markdown
Owner

What

release.yml gains one fail-closed step before the release is created: the pushed version must sort strictly above the highest vX.Y.Z already cut (across majors), and the tagged commit must descend from the commit of that highest release and from the commit vX names (or be that commit, on a re-run). A git ls-remote that cannot be read fails the step. AGENTS.md and .claude/commands/publish.md note that a fix to the workflow never reaches a stored run (a re-run replays the tagged commit's revision; the ruleset closes that path). The root README and the four action READMEs say what a tag does: never deleted or rewound (the v* ruleset blocks both, for admins too), still movable forward by a writer; a commit SHA freezes.

Why

Closes #42. The rulesets and the remote tag state were read and recorded on the issue, with the amended choices (equality allowed on a re-run, no run_attempt binding, the cross-major floor).

How to test

The step was replayed on a scratch remote under bash -e: rollback tag on an older commit, lower version at the tip, re-run of an older release once a newer exists, v2.0.0 on an old commit and an unreachable remote are refused; a normal release, a re-run of the latest, v2.0.0 at the tip and a first release ever are accepted. actionlint 1.7.12 is clean.

Review

Review subagent: green after one round (fail-open on a failed remote lookup, fixed). Security review: no findings after one round (the cross-major hole, fixed). Minors all fixed.

🤖 Generated with Claude Code

…a major tag move that is not a fast-forward

Closes #42

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@using-system
using-system merged commit e3a17d8 into main Sep 19, 2026
16 checks passed
@using-system
using-system deleted the fix/release-tag-monotonicity branch September 19, 2026 21:04
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.

fix(ci): release.yml enforces neither monotonicity nor a forward-only move of the floating major tag

1 participant