From 095d8d09acfe63b4680784217bbf80643450291d Mon Sep 17 00:00:00 2001 From: Jakob Heuser Date: Mon, 14 Sep 2026 22:54:39 -0700 Subject: [PATCH] ci: name each vendor stage for what it actually does MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The republish PR was titled "pin Vale ", which is the one thing it does not do. It updates the manifest and, on merge, republishes the six @taskless/vale-* packages; the pins a user resolves do not move until vale-upgrade.yml proposes it separately. With both stages now automated, the two Vale PRs differed only in the word "pin" — and it was on the wrong one. Each stage now says what it is: chore(vale): accept upstream Vale 3.21.0 republish, changes no install chore(vale): upgrade to Vale 3.21.0 moves the pins, ships it chore(ast-grep): upgrade to ast-grep 0.45.3 moves the pins, ships it ast-grep moves to "upgrade to" as well. It is the same operation as the Vale upgrade and was reading as a third kind of change; ast-grep simply has no "accept upstream" counterpart, because nothing here repackages it. The republish body also now points at the stage that does reach a consumer, so a reviewer looking at digests knows this is not that. --- .github/workflows/ast-grep-upgrade.yml | 8 ++++++-- .github/workflows/release-vale.yml | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ast-grep-upgrade.yml b/.github/workflows/ast-grep-upgrade.yml index bc661f56..cff36922 100644 --- a/.github/workflows/ast-grep-upgrade.yml +++ b/.github/workflows/ast-grep-upgrade.yml @@ -110,6 +110,10 @@ jobs: if: steps.detect.outputs.update == 'true' run: pnpm install --lockfile-only --ignore-scripts + # "upgrade to", the same verb vale-upgrade.yml uses, because it is the + # same operation: moving the pins a user resolves. ast-grep has no + # "accept upstream" counterpart, since nothing here repackages it. + # # Every value reaching the shell goes through `env:` rather than `${{ }}` # interpolation into the script body. The branch and pull request # lifecycle is `vendor-pr.cjs`, shared with release-vale.yml. @@ -179,7 +183,7 @@ jobs: node .github/scripts/vendor-pr.cjs \ --branch vendor/ast-grep/upgrade \ - --title "chore(ast-grep): pin ast-grep ${SG_VERSION}" \ - --message "chore(ast-grep): pin ast-grep ${SG_VERSION}" \ + --title "chore(ast-grep): upgrade to ast-grep ${SG_VERSION}" \ + --message "chore(ast-grep): upgrade to ast-grep ${SG_VERSION}" \ --body-file "$body" \ -- packages/cli/package.json pnpm-lock.yaml "$changeset" diff --git a/.github/workflows/release-vale.yml b/.github/workflows/release-vale.yml index aab988b5..56345592 100644 --- a/.github/workflows/release-vale.yml +++ b/.github/workflows/release-vale.yml @@ -188,6 +188,13 @@ jobs: # validated as major.minor.patch by the script, but the pattern is the # rule regardless of the value. # + # "accept upstream", not "pin". This proposal changes NOTHING a consumer + # installs: it records which upstream release we are willing to package + # and republish. The pins a user resolves move in `vale-upgrade.yml`, + # whose PR says "upgrade to". Two stages, two verbs, so a title says which + # one you are looking at — they otherwise differ only in the word `pin`, + # which was on the wrong one. + # # The branch and pull request lifecycle is `vendor-pr.cjs`, shared with # every vendor workflow: one rolling `vendor/vale/republish` branch, # rebuilt from `main`, retitled and rewritten as upstream moves, and @@ -222,7 +229,9 @@ jobs: Merging this triggers the publish phase, which stamps every platform package `-` and publishes the set. That publish is inert on its own: `@taskless/cli` pins exact versions, so - nothing reaches a consumer until that pin is deliberately bumped. + nothing reaches a consumer until that pin is deliberately bumped — + which is what `vale-upgrade.yml` proposes, separately, once this has + merged and published. Merging THIS changes nobody's install. This pull request rolls: if upstream releases again before it merges, the branch, title, and body are rewritten to the newer version rather @@ -243,8 +252,8 @@ jobs: node .github/scripts/vendor-pr.cjs \ --branch vendor/vale/republish \ - --title "chore(vale): pin Vale ${VALE_VERSION}" \ - --message "chore(vale): pin Vale ${VALE_VERSION}" \ + --title "chore(vale): accept upstream Vale ${VALE_VERSION}" \ + --message "chore(vale): accept upstream Vale ${VALE_VERSION}" \ --body-file "$body" \ --label skip-changeset \ -- .github/scripts/vale-manifest.json