Skip to content

fix(ci): stop a superseded run from deciding the release - #16

Merged
owjs3901 merged 1 commit into
mainfrom
fix/release-staleness-guard
Sep 8, 2026
Merged

fix(ci): stop a superseded run from deciding the release#16
owjs3901 merged 1 commit into
mainfrom
fix/release-staleness-guard

Conversation

@owjs3901

@owjs3901 owjs3901 commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

This also carries the changepack that gets the release unstuck.

What happened

The \changepacks\ job runs after \�erify\ (~10 min), so by the time it evaluates, main may already be several commits further on — and it judges a state that no longer exists.

On 2026-09-08 three merges landed inside one such window. Each stale run opened a fresh Update Versions PR instead of releasing (#11, #14, #15), all three were merged, and the workspace went 0.2.1 → 0.3.0 → 0.3.1 while the newest release stayed 0.2.1. No tag, no release.

Re-running the last workflow does not recover it: the action only cuts a release in the run that actually consumes changepacks, and by then there were none left. A version that moved without releasing cannot be un-moved — so 0.3.0 and 0.3.1 stay phantom, and the next real release is 0.3.2.

The guard

The job compares its own commit with the tip of main and stands down when it has been replaced, leaving the decision to the run for the commit that replaced it. A superseded run can no longer open a stale PR or consume changepacks against a state that has moved.

Getting the release out

Merging this puts exactly one changepack on main, which produces exactly one Update Versions PR. Merge that one and wait for its run to finish before merging anything else — that run is the one that tags, drafts, builds, bundles and publishes.

The changepacks job runs after verify, which takes about ten minutes, so
by the time it evaluates, main may already be several commits further on
and it judges a state that no longer exists.

On 2026-09-08 three merges landed inside one such window. Each stale run
opened a fresh Update Versions pull request instead of releasing, all
three were merged, and the workspace went 0.2.1 -> 0.3.0 -> 0.3.1 while
the newest release stayed 0.2.1. Nothing was tagged, and re-running could
not recover it: the action only cuts a release in the run that actually
consumes the changepacks, and by then there were none left. A version
that moved without releasing cannot be un-moved.

The job now compares its own commit with the tip of main and stands down
when it has been replaced, leaving the decision to the run for the
commit that replaced it.
@owjs3901
owjs3901 merged commit c3118e6 into main Sep 8, 2026
8 checks passed
@owjs3901
owjs3901 deleted the fix/release-staleness-guard branch September 8, 2026 11:39
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