You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 88be631
Browse filesBrowse the repository at this point in the historyBrowse files
ci(release): the version-PR lane reads the v3 .changeset/pre/ layout with changesets/action v2.1.2, rehearses that read on the post-version tree, and stops counting consumed prerelease changesets as pending
changesets/action@v1 resolved to v1.9.0, whose bundled @changesets/read 0.6.7
takes .changeset/pre/ for a legacy v1 folder changeset and opens
.changeset/pre/changes.md: ENOENT on every refresh since the 18.0.0-next.0
cut moved 507 consumed changesets there.
- Pin the PR step to changesets/action v2.1.2 by commit (the major upstream
pairs with @changesets/cli v3), with v2's input names; no publish-script,
push-with-git-cli, create-github-releases and push-git-tags off.
- Run the same pinned reader on a copy of the post-version tree outside any
git work tree, holding no credential, and require has-changesets false,
so a reader that cannot read what the CLI writes fails before the cut.
- Count .changeset/pre/*.md as pending only on pre exit, the CLI's own rule;
in pre mode a tree with no new changeset read as 539 pending.
Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx
Co-authored-by: Claude <noreply@anthropic.com>
# `false` is the only passing answer. `true` on a zero exit is the
818
+
# action's "all changesets are empty" branch: after the cut the PR
819
+
# step would then refresh nothing, forever, with nothing red. Empty
820
+
# means the output was renamed, so the pin no longer reads anything.
821
+
if [ "${HAS_CHANGESETS}" != 'false' ]; then
822
+
echo "::error::the version PR step's changeset reader, run on the post-version tree, answered has-changesets='${HAS_CHANGESETS}' where only 'false' is right: once this tree lands on main the PR step would misread it. Re-verify the pinned changesets/action against the changeset layout @changesets/cli writes before this version PR merges."
823
+
exit 1
824
+
fi
825
+
echo "The PR step's reader reads the post-version tree as fully versioned: has-changesets=${HAS_CHANGESETS}."
826
+
732
827
# ⚠️ LOAD-BEARING — DO NOT DROP THIS STEP. The steps above render the
733
828
# version into the runner's working tree, and changesets/action picks its
734
829
# branch from that tree. With `.changeset/` already consumed it finds
735
-
# `hasChangesets` false, and this lane deliberately passes no `publish:`
736
-
# input, so `hasPublishScript` is false too — v1 then takes
737
-
# `case !hasChangesets && !hasPublishScript` (src/index.ts), logs "No
738
-
# changesets present or were removed by merging release PR" and RETURNS.
830
+
# `hasChangesets` false, and this lane deliberately passes no
831
+
# `publish-script:` input, so `hasPublishScript` is false too — the pinned
832
+
# v2.1.2 then takes `case !hasChangesets && !hasPublishScript`
833
+
# (src/index.ts), logs "No changesets present or were removed by merging
834
+
# version PR" and RETURNS.
739
835
# The refresh becomes a permanent no-op and #4935 fossilises with nothing
740
836
# red anywhere: this file's own failure class, one lane over. So the tree
741
837
# is put back, and the restoration is ASSERTED rather than assumed.
@@ -758,9 +854,20 @@ jobs:
758
854
# branch should never be able to reach further than the thing it undoes.
0 commit comments