Skip to content

2.0.1-beta4

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 May 12:45
ci(release): --clobber fallback for force-pushed tags

PUSH-REORGANIZATION §3.6 incident postmortem (2026-05-25): after
force-pushing the `2.0.1-beta4` tag from the Phase 2 commit to
the Phase 6 commit, CI re-ran on the force-push event, built the
fresh main.js with Phase 6 code, but the `Create release` step
failed with:

  a release with the same tag name already exists: 2.0.1-beta4
  Process completed with exit code 1.

`gh release create` does not replace an existing release. The
newly-built artifact was discarded; the GitHub release page kept
serving the old Phase 2 binary; `Settings → Community plugins →
Update` re-downloaded the same old binary because the version
string hadn't changed.

Fix: pipe `gh release create` to `gh release upload --clobber`
when the release already exists. The upload variant accepts the
file list and overwrites assets in place, which is exactly the
semantic we want for force-pushed tags.

Behavior after this patch:
  - First push of a new tag → create succeeds, files uploaded.
    Identical to before.
  - Force-push of an existing tag → create fails ('release exists'),
    fallback uploads files via --clobber, release artifacts
    refreshed in place. Users who manually trigger update from
    Settings → Community plugins now get the latest binary even
    though the version string stayed the same.
  - The shell short-circuit (`|| ...`) leaves the exit code of
    the successful upload as the step's exit code, so CI passes.

Same pattern applied to both the -beta and non-beta branches of
the conditional.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>