Skip to content

fix(release): advance immutable prerelease collisions #228

Description

@kattsushi

Problem

The final beta gate for promotion PR #225 predicts @effectify/react-query@1.0.0-beta.0, but that immutable version already exists on npm and has no corresponding repository tag or gitHead. Nx would silently skip that package while publishing six new beta artifacts.

Root cause

With independent releases, conventional commits, strictPreid: true, and no beta Git tag, Nx falls back to the manifest 1.0.0-alpha.7; changing preid resets the candidate to 1.0.0-beta.0. Importing a synthetic tag would falsify provenance.

Approved scope

  • tools/release-version-actions.cjs
  • tools/release-version-actions.test.cjs

Required behavior

  • Preserve the normal Nx candidate when npm reports it absent.
  • For an occupied prerelease on the requested channel, advance monotonically to the first unused prerelease.
  • Fail closed on registry/network ambiguity.
  • Fail on an occupied stable candidate; never silently increment stable releases.
  • Preserve existing root changelog behavior.
  • Surface collision advancement in release output.

Acceptance criteria

  • Strict RED/GREEN tests cover absent, beta.0 occupied, contiguous collisions, registry failure, stable collision and logging.
  • Release policy contract and existing release-action tests pass.
  • Exact beta dry-run predicts seven unused versions, including React Query beta.1.
  • Simulated registry failure stops before file/version/tag/push mutation.
  • The two tool files alone affect no configured release project on dev.
  • No manifests, lockfile, workflows, changelogs, versions, tags, releases or publication are changed.
  • PR chore(promotion): promote dev to master for beta #225 remains unmerged until its new immutable head passes the full final gate and receives fresh authorization.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:approvedApproved for implementation / PR linkagetype:bugBug fix

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions