Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/changeset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
name: Changeset
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0 # need `origin/main` to diff the whole stack against

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/claude-code-review-on-demand.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ jobs:
# build/lint/test, and every allowed tool reads the diff through `gh`
# (the API), not through local history.
- name: Checkout PR head
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: refs/pull/${{ steps.prep.outputs.pr }}/head
fetch-depth: 1
Expand Down Expand Up @@ -212,7 +212,7 @@ jobs:
# comment, so there's no explicit reaction step here.
- name: Run Claude Code Review
id: review
uses: anthropics/claude-code-action@d40ddef4c030e508327d6e35a9c45f3368482c50 # v1
uses: anthropics/claude-code-action@0a8d3c9443bbff909ab973b6a17a340b913f229f # v1.0.221
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
# Single tracking comment (in-progress → results), updated in place.
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/demo-rule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Install pnpm
uses: pnpm/action-setup@v6
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0

- name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/openspec-label.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
name: OpenSpec Label
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
# The head commit, not the merge ref: the question is what this branch
# carries. A child branch contains its ancestors' commits, so the head
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/openspec-sweep.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
name: OpenSpec Sweep
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0 # full history, so `git log` can date each change directory

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/openspec-tracking.yml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ jobs:
name: OpenSpec Tracking
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Plan tracking issues
id: plan
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/release-cli-changeset.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,13 @@ jobs:
contents: write # push the changeset-release/main branch
pull-requests: write # open/update the Version Packages PR
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc
cache: pnpm
- run: pnpm install --frozen-lockfile --ignore-scripts

Expand All @@ -64,7 +64,7 @@ jobs:
# is dead until `release-cli.yml` creates the tag after publishing, which
# is expected: the notes and the link they describe belong in the same PR.
# No `publish:` input — this job can never publish.
- uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d # v1
- uses: changesets/action@a45c4d594aa4e2c509dc14a9f2b3b67ba3780d0d # v1.9.0
with:
version: pnpm bump
commit: "chore: version packages"
Expand Down
23 changes: 13 additions & 10 deletions .github/workflows/release-cli-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,7 @@ jobs:
# `ref:` is MANDATORY under workflow_run. Without it checkout takes
# `github.sha`, which here is the default branch tip at event time, not
# the commit Validate tested.
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.workflow_run.head_sha }}
persist-credentials: false # nothing here writes to git
Expand All @@ -292,9 +292,9 @@ jobs:
exit 1
fi
echo "Building from ${actual}, which Validate passed on."
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

# No dependency install in this job, by design — gate 1 is the reason the
# workflow can decide before installing anything, and nightly-pack.cjs is
Expand Down Expand Up @@ -424,7 +424,7 @@ jobs:
# again here rather than trusted from there. This is the job that produces
# the bytes: `gate` proved that some job checked out the validated commit,
# not that this one did.
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.workflow_run.head_sha }}
persist-credentials: false # publish authenticates via OIDC, not git creds
Expand Down Expand Up @@ -508,10 +508,13 @@ jobs:
- name: Give changesets the `main` ref it diffs against
run: git branch -f main HEAD

- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
# setup-node >= v7 is the floor here; release-cli.yml's publish job
# explains why (`always-auth` in .npmrc until v6.1, a dummy
# NODE_AUTH_TOKEN in env until v7).
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc
cache: pnpm
registry-url: https://registry.npmjs.org
# --ignore-scripts: no dependency lifecycle code runs while an OIDC
Expand Down Expand Up @@ -630,7 +633,7 @@ jobs:
# SCRIPT that is not the one Validate passed on — while announcing a
# nightly built from a different commit. Cosmetic output does not lower
# the bar; it is the same fail-open, and it reads as a normal run.
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.workflow_run.head_sha }}
persist-credentials: false # gh authenticates with GITHUB_TOKEN below
Expand All @@ -653,9 +656,9 @@ jobs:
exit 1
fi
echo "Annotating from ${actual}, which Validate passed on."
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

# A LOST UPDATE IS POSSIBLE HERE, AND IS ACCEPTED (Copilot review, #133).
# A pull request body is replaced whole: GitHub offers no field-level
Expand Down
21 changes: 14 additions & 7 deletions .github/workflows/release-cli.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,12 @@ jobs:
publish: ${{ steps.check.outputs.publish }}
version: ${{ steps.check.outputs.version }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false # no git writes here; don't leave the token in git config
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc
- id: check
run: |
name=$(node -p "require('./packages/cli/package.json').name")
Expand Down Expand Up @@ -113,13 +113,20 @@ jobs:
contents: read # checkout only
id-token: write # OIDC → short-lived npm auth + build provenance
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false # publish authenticates via OIDC/npm, not git creds
- uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0
# setup-node >= v7 is the floor for this step, not just the current pin.
# `registry-url` writes the .npmrc npm publishes through. Up to v6.0 that
# file also carried `always-auth=false`, which npm 11 warns is an unknown
# option and the next npm major refuses (issue #294); v6.1 stopped
# writing it. Up to v6 the step also exported a dummy NODE_AUTH_TOKEN
# (XXXXX-XXXXX-XXXXX-XXXXX) into every later step; v7 exports nothing,
# so the OIDC exchange below is the only credential this job ever holds.
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc
cache: pnpm
registry-url: https://registry.npmjs.org
- run: pnpm install --frozen-lockfile --ignore-scripts
Expand Down
33 changes: 21 additions & 12 deletions .github/workflows/release-vale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -147,10 +147,10 @@ jobs:
steps:
# Credentials persist here because this job pushes a branch. It holds no
# npm identity and no id-token, and it never runs downloaded code.
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

# No install step: the script is zero-dependency CommonJS. GITHUB_TOKEN is
# passed only to raise the GitHub API rate limit; the endpoints are public.
Expand Down Expand Up @@ -233,12 +233,12 @@ jobs:
outputs:
should_publish: ${{ steps.gate.outputs.should_publish }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc
# --force on dispatch: an explicit human request publishes even when the
# pinned version is already out. Only the automatic push path is gated.
- id: gate
Expand All @@ -259,12 +259,12 @@ jobs:
version: ${{ steps.prepare.outputs.version }}
vale_version: ${{ steps.prepare.outputs.vale_version }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false # nothing here writes to git
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

# No dependency install at all: the script is zero-dependency CommonJS and
# unpacks with `tar` and `unzip`, both present on ubuntu-latest. Nothing
Expand All @@ -279,7 +279,7 @@ jobs:
# had just written six tarballs there. `if-no-files-found: error` is what
# turned that into a failed run rather than an empty artifact handed to
# the publish job; keep both.
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: vale-tarballs
path: .vale-dist/*.tgz
Expand Down Expand Up @@ -330,11 +330,20 @@ jobs:
# Deliberately no checkout. This job publishes tarballs the previous job
# already verified and sealed; it has no reason to hold repository source
# while an OIDC identity exists.
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
#
# setup-node >= v7 is the floor here; release-cli.yml's publish job
# explains why (`always-auth` in .npmrc until v6.1, a dummy
# NODE_AUTH_TOKEN in env until v7). The warning in issue #294 came from
# this step's .npmrc under v4.4.0.
#
# A literal major rather than `node-version-file: .nvmrc`, because there
# is no checkout here for the file to be read from. Keep it equal to
# .nvmrc; this is the one place in the workflows the number is repeated.
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
Comment thread
thecodedrift marked this conversation as resolved.
registry-url: https://registry.npmjs.org
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
- uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: vale-tarballs
path: tarballs
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/stack-breadcrumb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,11 @@ jobs:
# Check out the DEFAULT branch's copy of the script, not the PR head: this
# privileged job (contents: write) must run trusted, reviewed logic, never
# PR-supplied code.
- uses: actions/checkout@v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.repository.default_branch }}

- uses: actions/github-script@v7
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const scriptPath = `${process.env.GITHUB_WORKSPACE}/.github/scripts/stack-breadcrumb.cjs`;
Expand Down Expand Up @@ -159,11 +159,11 @@ jobs:
cancel-in-progress: false
steps:
# Trusted script from the default branch — never PR-supplied code.
- uses: actions/checkout@v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.repository.default_branch }}

- uses: actions/github-script@v7
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const scriptPath = `${process.env.GITHUB_WORKSPACE}/.github/scripts/stack-breadcrumb.cjs`;
Expand Down Expand Up @@ -238,11 +238,11 @@ jobs:
cancel-in-progress: false
steps:
# Trusted script from the default branch — never PR-supplied code.
- uses: actions/checkout@v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.repository.default_branch }}

- uses: actions/github-script@v7
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const scriptPath = `${process.env.GITHUB_WORKSPACE}/.github/scripts/stack-breadcrumb.cjs`;
Expand Down Expand Up @@ -323,9 +323,9 @@ jobs:
group: stack-reconcile-${{ github.event.client_payload.root || github.event.inputs.root || 'all' }}
cancel-in-progress: true
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- uses: actions/github-script@v7
- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
script: |
const stack = require(`${process.env.GITHUB_WORKSPACE}/.github/scripts/stack-breadcrumb.cjs`);
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/update-badges.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,11 @@ jobs:
steps:
# Credentials persist because this job pushes. It holds no npm identity,
# no id-token, and runs nothing it downloaded.
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

# No install step: the scripts are zero-dependency CommonJS. GITHUB_TOKEN
# is passed only to raise the GitHub API rate limit on the Vale release
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,15 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v6
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Install pnpm
uses: pnpm/action-setup@v6
uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0

- name: Setup Node
uses: actions/setup-node@v6
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 24
node-version-file: .nvmrc

- name: Install dependencies
run: pnpm install --frozen-lockfile
Expand Down
1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
Loading