Skip to content

fix(release): annotate-shipped passes over a reverted cut instead of reading it as the version commit - #25607

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-2iyh8e
Oct 24, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/project-thread-2iyh8e

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Clause-②: no
Metadata-protocol: none

Release fix for 18.1.0. This is the second landing the merge freeze lets through, after #25605.

Defect

#25605 reverted the unpublished 18.1.0 version commit 74fa3cb6d, which moved packages/cli/package.json back to 18.0.0. When the refresh stroke regenerated the Version Packages PR as #25606, the root version script's first step, release-pending-publish.mjs annotate-shipped, went wrong:

  • locateLastVersionCommit took the revert as the commit that introduced 18.0.0.
  • 18.0.0 is on npm, so it gave every changeset the revert restored the lead line "Shipped in 18.0.0, whose CHANGELOG missed this entry; listed here one release late."
  • chore: version packages #25606's CHANGELOGs carry that line 412 times. The true count is 8.

Fix

  • A commit that moves the CLI version back did not introduce the version it returns to. The walk passes over it and over the reverted cut's span, and keeps looking for the forward commit that did.
  • compareVersions orders X.Y.Z and X.Y.Z-tag.N. A prerelease sorts before its release, and numeric prerelease ids compare as numbers.
  • findVersionCommit, the release gate's select, is unchanged. After the next cut, the head's version (18.1.0) is introduced by a forward commit, so it never meets this case.

Evidence

  • node scripts/release-pending-publish.mjs --self-test: 115 cases across 29 batteries pass. That includes a new battery that builds the 18.1.0 shape: a cut that leaves one changeset unconsumed, then a later cut that consumes everything, is never published, and is reverted. Only the first cut's leak is annotated.
  • On main (393769720), annotate-shipped with this change reads the last version commit as 06cab4849a (18.0.0-next.5 → 18.0.0) and annotates 8 changesets. Their adding commits are 6b9e6df, 7cacad5, 950f949, 9a06f0b, abd5acd, de9cd1f, df8bb40 and e5b3de0, exactly the 8 that 74fa3cb6d's own cut annotated.

After it lands

The relay's refresh stroke regenerates the Version Packages PR again. Its CHANGELOGs then carry the 8 true "Shipped in 18.0.0" lines and no others.

skip-changeset: scripts/ publishes nothing from any released package.


🤖 Generated with Claude Code

…reading it as the version commit

#25605 reverted the unpublished 18.1.0 version commit 74fa3cb, moving the
CLI back to 18.0.0. locateLastVersionCommit took that revert as the commit
that introduced 18.0.0 and, 18.0.0 being on npm, stamped every changeset the
revert restored with "Shipped in 18.0.0": 412 wrong lead lines in the
regenerated Version Packages PR #25606. A commit that moves the version back
now passes over itself and the reverted cut's span, and the walk reads the
forward cut before it. On main that is 06cab48 (18.0.0-next.5 -> 18.0.0),
which leaves the same 8 changesets unconsumed that 74fa3cb annotated.

Claude-Session: https://claude.ai/code/session_014C7q5Hm34g4EPdirar9SzN
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet objectstack-fleet Bot added the skip-changeset PR has no user-facing published change; bypasses the changeset gate label Oct 24, 2026
@objectstack-fleet
objectstack-fleet Bot marked this pull request as ready for review October 24, 2026 06:43
@objectstack-fleet
objectstack-fleet Bot enabled auto-merge October 24, 2026 06:43
@objectstack-fleet
objectstack-fleet Bot added this pull request to the merge queue Oct 24, 2026
Merged via the queue into main with commit 8801f2b Oct 24, 2026
46 checks passed
@objectstack-fleet
objectstack-fleet Bot deleted the claude/project-thread-2iyh8e branch October 24, 2026 07:01
os-sales pushed a commit that referenced this pull request Oct 24, 2026
…-pluvu5

One conflict, in showcase-d3-d4-capabilities.dogfood.test.ts: #25605
loosened the same contrast to the prefix "consulted only for an external
member" on the absent record. Kept this branch's side, which grants on a
real showcase_project to a staff member of its organization and pins
"and the recipient is not one". Main's other incoming change (#25607) is
scripts/release-pending-publish.mjs only.

Claude-Session: https://claude.ai/code/session_014rFBGqoBLiroi35e82xEa7
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants