Commit 4ffa45549ab for woocommerce

commit 4ffa45549abe3b30e3ca272c8184e19d7aa790c7
Author: Adrian Moldovan <3854374+adimoldovan@users.noreply.github.com>
Date:   Fri Jul 10 16:33:34 2026 +0300

    Bump GitHub Actions off deprecated Node 20 to Node 24 releases (#66434)

diff --git a/.github/actions/setup-woocommerce-monorepo/action.yml b/.github/actions/setup-woocommerce-monorepo/action.yml
index f9051d9d06c..cb42f780229 100644
--- a/.github/actions/setup-woocommerce-monorepo/action.yml
+++ b/.github/actions/setup-woocommerce-monorepo/action.yml
@@ -26,7 +26,7 @@ runs:
     using: 'composite'
     steps:
         - name: 'Setup PNPM'
-          uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+          uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9
         # Next step is rudimentary - fixes a know composite action bug during post-actions:
         # Error: Index was out of range. Must be non-negative and less than the size of the collection.
         - name: 'Read PNPM version'
@@ -34,14 +34,14 @@ runs:
           shell: 'bash'
           run: 'echo "version=$(pnpm --version)" >> $GITHUB_OUTPUT'
         - name: 'Setup Node'
-          uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+          uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
           with:
               node-version-file: '.nvmrc'
               # The built-in caching is not fit to per-package caching we are aiming.
               cache: ''
         - name: 'Setup PHP'
           if: ${{ inputs.php-version != 'false' && inputs.build-type != 'dependencies' }}
-          uses: 'shivammathur/setup-php@0f7f1d08e3e32076e51cae65eb0b0c871405b16e' # v2.34.1
+          uses: 'shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240' # 2.37.2
           with:
               php-version: '${{ inputs.php-version }}'
               coverage: 'none'
@@ -52,28 +52,28 @@ runs:
               echo "PNPM_STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
         - name: 'Cache: pnpm downloads'
           if: ${{ inputs.pull-package-deps != 'false' }}
-          uses: 'actions/cache@v4'
+          uses: 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9' # v6.1.0
           with:
               path: "${{ env.PNPM_STORE_PATH }}"
               key: "${{ runner.os }}-pnpm-${{ inputs.pull-package-deps }}-build:${{ ( inputs.build-type == 'backend' && 'backend' ) || 'full' }}-${{ hashFiles( 'pnpm-lock.yaml' ) }}"
               restore-keys: "${{ runner.os }}-pnpm-${{ inputs.pull-package-deps }}-build:${{ ( inputs.build-type == 'backend' && 'backend' ) || 'full' }}-"
         - name: 'Cache: node cache'
           if: ${{ inputs.pull-package-deps != 'false' && inputs.build-type != 'backend' }}
-          uses: 'actions/cache@v4'
+          uses: 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9' # v6.1.0
           with:
               path: './node_modules/.cache'
               key: "${{ runner.os }}-node-cache-${{ inputs.pull-package-deps }}-build:${{ inputs.build-type }}-${{ hashFiles( 'pnpm-lock.yaml' ) }}"
               restore-keys: '${{ runner.os }}-node-cache-${{ inputs.pull-package-deps }}-build:${{ inputs.build-type }}-'
         - name: 'Cache Composer Dependencies'
           if: ${{ inputs.pull-package-deps != 'false' || inputs.pull-package-composer-deps != 'false' }}
-          uses: 'actions/cache@v4'
+          uses: 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9' # v6.1.0
           with:
               path: '~/.cache/composer/files'
               key: "${{ runner.os }}-composer-${{ ( inputs.pull-package-deps != 'false' && inputs.pull-package-deps ) || inputs.pull-package-composer-deps }}-build:${{ inputs.build-type }}-${{ hashFiles( 'packages/*/*/composer.lock', 'plugins/*/composer.lock' ) }}"
               restore-keys: "${{ runner.os }}-composer-${{ ( inputs.pull-package-deps != 'false' && inputs.pull-package-deps ) || inputs.pull-package-composer-deps }}-build:${{ inputs.build-type }}-"
         - name: 'Cache: playwright downloads'
           if: ${{ inputs.pull-playwright-cache != 'false' }}
-          uses: 'actions/cache@v4'
+          uses: 'actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9' # v6.1.0
           with:
               path: '~/.cache/ms-playwright/'
               key: "${{ runner.os }}-playwright-${{ hashFiles( 'pnpm-lock.yaml' ) }}"
diff --git a/.github/workflows/api-staleness.yml b/.github/workflows/api-staleness.yml
index 2c1d9775718..6cd46a460e7 100644
--- a/.github/workflows/api-staleness.yml
+++ b/.github/workflows/api-staleness.yml
@@ -26,7 +26,7 @@ jobs:
         name: 'GraphQL API Staleness Check'
         runs-on: ubuntu-latest
         steps:
-            - uses: 'actions/checkout@v4'
+            - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
               name: 'Checkout'

             - uses: './.github/actions/setup-woocommerce-monorepo'
diff --git a/.github/workflows/auto-milestone-release-prs.yml b/.github/workflows/auto-milestone-release-prs.yml
index d2decdce904..7565f338305 100644
--- a/.github/workflows/auto-milestone-release-prs.yml
+++ b/.github/workflows/auto-milestone-release-prs.yml
@@ -16,7 +16,7 @@ jobs:
       startsWith(github.event.pull_request.base.ref, 'release/')
     steps:
       - name: Validate release branch pattern and add milestone
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const targetBranch = context.payload.pull_request.base.ref;
diff --git a/.github/workflows/automate-team-review-assignment.yml b/.github/workflows/automate-team-review-assignment.yml
index d5a7ac285d5..0fad3ddbf45 100644
--- a/.github/workflows/automate-team-review-assignment.yml
+++ b/.github/workflows/automate-team-review-assignment.yml
@@ -23,7 +23,7 @@ jobs:
         steps:
             - name: Check if community contribution
               id: check
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       const username = '${{ github.event.pull_request.user.login || github.event.issue.user.login }}';
@@ -37,7 +37,7 @@ jobs:

             - name: Add community label
               if: ${{ steps.check.outputs.contributor == 'yes' }}
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       github.rest.issues.addLabels({
@@ -54,7 +54,7 @@ jobs:
       steps:
         - name: Check if community contribution
           id: check
-          uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+          uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
           with:
             retries: 2
             script: |
@@ -87,7 +87,7 @@ jobs:
       steps:
         - name: Check if community contribution
           id: check
-          uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+          uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
           with:
             retries: 2
             script: |
diff --git a/.github/workflows/backwards-compatibility-review.yml b/.github/workflows/backwards-compatibility-review.yml
index b35e23c40bd..c68d7adb2ac 100644
--- a/.github/workflows/backwards-compatibility-review.yml
+++ b/.github/workflows/backwards-compatibility-review.yml
@@ -23,7 +23,7 @@ jobs:

     steps:
       - name: Checkout repository
-        uses: actions/checkout@v5
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           fetch-depth: 0

diff --git a/.github/workflows/block-reference-docs.yml b/.github/workflows/block-reference-docs.yml
index 194220edb9c..43cbdc7c3f2 100644
--- a/.github/workflows/block-reference-docs.yml
+++ b/.github/workflows/block-reference-docs.yml
@@ -23,12 +23,12 @@ jobs:

     steps:
       - name: 'Checkout'
-        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

       - name: 'Check for block metadata changes'
         if: ${{ github.event_name == 'pull_request' }}
         id: changes
-        uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+        uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
         with:
           filters: |
             block-json:
diff --git a/.github/workflows/build-live-branch.yml b/.github/workflows/build-live-branch.yml
index 006007e5448..ca04e01589f 100644
--- a/.github/workflows/build-live-branch.yml
+++ b/.github/workflows/build-live-branch.yml
@@ -34,7 +34,7 @@ jobs:
         permissions:
             contents: read
         steps:
-            - uses: actions/checkout@v4
+            - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

             - name: Get current version
               id: version
@@ -75,7 +75,7 @@ jobs:
                   echo "plugin-data=$PLUGIN_DATA" >> $GITHUB_OUTPUT

             - name: Create plugins artifact
-              uses: actions/upload-artifact@v4
+              uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
               if: steps.prepare.outputs.plugin-data != '{}'
               with:
                   name: plugins
diff --git a/.github/workflows/changelog-auto-add.yml b/.github/workflows/changelog-auto-add.yml
index 5d30fe936ca..576ef0ad8fe 100644
--- a/.github/workflows/changelog-auto-add.yml
+++ b/.github/workflows/changelog-auto-add.yml
@@ -37,15 +37,15 @@ jobs:
             pull-requests: write
         steps:
             - name: Checkout
-              uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
+              uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

             - name: Setup Node
-              uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+              uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
               with:
                   node-version-file: '.nvmrc'

             - name: Setup PNPM
-              uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+              uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

             - name: Generate Changelog File
               env:
diff --git a/.github/workflows/cherry-pick-milestoned-prs.yml b/.github/workflows/cherry-pick-milestoned-prs.yml
index 71f85a6c34f..3309cef4fdc 100644
--- a/.github/workflows/cherry-pick-milestoned-prs.yml
+++ b/.github/workflows/cherry-pick-milestoned-prs.yml
@@ -43,7 +43,7 @@ jobs:
       # Behavior can be overridden using a hidden comment in HTML. By default, cherry-pick is disabled for PRs with the 'Release' label.
       - name: Check if cherry-pick should proceed
         id: check-cherry-pick
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const body  = context.payload.pull_request.body || '';
@@ -80,7 +80,7 @@ jobs:
       # Identify release branches to cherry-pick to
       - name: Get release branches
         id: get-branches
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           BASE_VERSION: ${{ steps.extract-version.outputs.base_version }}
           SOURCE_BRANCH: ${{ steps.check-cherry-pick.outputs.source_branch }}
@@ -154,7 +154,7 @@ jobs:
     steps:
       # Add original milestone to new PR
       - name: Add milestone
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -168,7 +168,7 @@ jobs:
       # Comment on original PR about cherry-pick success
       - name: Comment on original PR about cherry-pick success
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           TARGET_BRANCH: ${{ needs.prepare.outputs.milestoned_branch }}
           CHERRY_PICK_PR_NUMBER: ${{ needs.cherry-pick-milestoned.outputs.cherry_pick_pr_number }}
@@ -222,7 +222,7 @@ jobs:
     if: ${{ always() && needs.cherry-pick-milestoned.outputs.status == 'skipped' }}
     steps:
       - name: Comment on original PR about skip
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick-milestoned.outputs.error_message }}
         with:
@@ -246,7 +246,7 @@ jobs:
     steps:
       # Add original milestone to new PR
       - name: Add milestone
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -260,7 +260,7 @@ jobs:
       # Comment on original PR about cherry-pick success
       - name: Comment on original PR about cherry-pick success
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           TARGET_BRANCH: ${{ needs.prepare.outputs.next_branch }}
           CHERRY_PICK_PR_NUMBER: ${{ needs.cherry-pick-next.outputs.cherry_pick_pr_number }}
@@ -314,7 +314,7 @@ jobs:
     if: ${{ always() && needs.cherry-pick-next.outputs.status == 'skipped' }}
     steps:
       - name: Comment on original PR about skip
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick-next.outputs.error_message }}
         with:
@@ -342,7 +342,7 @@ jobs:
       # Label original PR with failure tag
       - name: Add "cherry pick failed" label
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -356,7 +356,7 @@ jobs:
       # Comment on original PR about failure
       - name: Comment on original PR about cherry-pick failure
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick-milestoned.outputs.error_message || 'Unknown error' }}
           TARGET_BRANCH: ${{ needs.prepare.outputs.milestoned_branch }}
@@ -422,7 +422,7 @@ jobs:
       # Label original PR with failure tag
       - name: Add "cherry pick failed" label
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -436,7 +436,7 @@ jobs:
       # Comment on original PR about failure
       - name: Comment on original PR
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick-next.outputs.error_message || 'Unknown error' }}
           TARGET_BRANCH: ${{ needs.prepare.outputs.next_branch }}
diff --git a/.github/workflows/cherry-pick-to-frozen.yml b/.github/workflows/cherry-pick-to-frozen.yml
index 2de376d9db7..9460f103c58 100644
--- a/.github/workflows/cherry-pick-to-frozen.yml
+++ b/.github/workflows/cherry-pick-to-frozen.yml
@@ -98,7 +98,7 @@ jobs:
     steps:
       - name: Check frozen release conditions
         id: check
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           BASE_BRANCH: ${{ needs.prepare.outputs.base_branch }}
         with:
@@ -125,7 +125,7 @@ jobs:
       # We set the milestone of the new PR to the milestone of the source PR since they should all be merged in preperation for the same release.
       - name: Add milestone
         if: github.event.pull_request.milestone.number != null
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -138,7 +138,7 @@ jobs:

       - name: Comment on original PR about cherry-pick success
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           CHERRY_PICK_PR_NUMBER: ${{ needs.cherry-pick.outputs.cherry_pick_pr_number }}
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -205,7 +205,7 @@ jobs:
     if: ${{ always() && needs.cherry-pick.outputs.status == 'skipped' }}
     steps:
       - name: Comment on original PR about skip
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick.outputs.error_message }}
         with:
@@ -228,7 +228,7 @@ jobs:
     steps:
       - name: Add "cherry pick failed" label
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -241,7 +241,7 @@ jobs:

       - name: Comment on original PR
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick.outputs.error_message || 'Unknown error' }}
           GITHUB_RUN_ID: ${{ github.run_id }}
diff --git a/.github/workflows/cherry-pick-to-trunk.yml b/.github/workflows/cherry-pick-to-trunk.yml
index 986ffa60f12..fa7e8383462 100644
--- a/.github/workflows/cherry-pick-to-trunk.yml
+++ b/.github/workflows/cherry-pick-to-trunk.yml
@@ -51,7 +51,7 @@ jobs:
     steps:
       - name: Check frozen release conditions
         id: check
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           BASE_BRANCH: ${{ needs.prepare.outputs.base_branch }}
           PR_NUMBER: ${{ needs.prepare.outputs.pr_number }}
@@ -114,7 +114,7 @@ jobs:
       # We set the milestone of the new PR to the milestone of the source PR since they should all be merged in preparation for the same release.
       - name: Add milestone
         if: github.event.pull_request.milestone.number != null
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -127,7 +127,7 @@ jobs:

       - name: Comment on original PR about cherry-pick success
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           CHERRY_PICK_PR_NUMBER: ${{ needs.cherry-pick.outputs.cherry_pick_pr_number }}
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -194,7 +194,7 @@ jobs:
     if: ${{ always() && needs.cherry-pick.outputs.status == 'skipped' }}
     steps:
       - name: Comment on original PR about skip
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick.outputs.error_message }}
         with:
@@ -217,7 +217,7 @@ jobs:
     steps:
       - name: Add "cherry pick failed" label
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
@@ -230,7 +230,7 @@ jobs:

       - name: Comment on original PR
         if: always()
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           ERROR_MESSAGE: ${{ needs.cherry-pick.outputs.error_message || 'Unknown error' }}
           GITHUB_RUN_ID: ${{ github.run_id }}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a6521a886f9..ad64c9f9fe5 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -57,7 +57,7 @@ jobs:
       needs-markdown-validation:  ${{ steps.target-changes.outputs.needs-markdown-validation }}
       needs-syncpack-validation:  ${{ steps.target-changes.outputs.needs-syncpack-validation }}
     steps:
-      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+      - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
         id: target-changes
         with:
           filters: |
@@ -84,16 +84,16 @@ jobs:
       test-jobs: ${{ steps.project-jobs.outputs.test-jobs }}
       report-jobs: ${{ steps.project-jobs.outputs.report-jobs }}
     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         name: 'Checkout'
         with:
           ref: ${{ inputs.refName != '' && inputs.refName || '' }}

       - name: Setup - pnpm
-        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+        uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

       - name: Setup - spawn linting and testing jobs
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         id: 'project-jobs'
         env:
           GH_TOKEN: ${{ github.token }}
@@ -116,7 +116,7 @@ jobs:
               githubEvent = trigger;
             }

-            // `pre-release` should trigger `release-checks`, but without a specific refName.
+            // `pre-release` should trigger `release-checks`, but without a specific refName.
             // This will run all release-checks against the branch the workflow targeted, instead of a release artifact.
             if ( trigger === 'pre-release' ) {
               githubEvent = 'release-checks';
@@ -136,7 +136,7 @@ jobs:
       matrix:
         include: ${{ fromJSON( needs.project-jobs.outputs.lint-jobs ) }}
     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         name: 'Checkout'
         with:
           ref: ${{ inputs.refName != '' && inputs.refName || '' }}
@@ -165,7 +165,7 @@ jobs:
       matrix:
         include: ${{ fromJSON( needs.project-jobs.outputs.test-jobs ) }}
     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         name: 'Checkout'
         with:
           ref: ${{ inputs.refName != '' && inputs.refName || '' }}
@@ -246,9 +246,10 @@ jobs:
       - name: 'Download Playwright last run info'
         id: 'download-last-run-info'
         if: ${{ always() && matrix.report.resultsPath != '' && matrix.testType == 'e2e' }}
-        uses: actions/download-artifact@v4
+        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
         with:
           pattern: 'last-run__${{ strategy.job-index }}'
+          path: '${{ runner.temp }}/last-run-info'

       - name: 'Run tests (${{ matrix.testType }})'
         timeout-minutes: ${{ ( github.event_name == 'pull_request' && ( ( matrix.testType == 'e2e' && 20 ) || ( matrix.testType == 'unit:php' && 20 ) ) ) || 360 }}
@@ -261,7 +262,7 @@ jobs:
           PLAYWRIGHT_JUNIT_SUITE_NAME: 'WooCommerce Core'
           PLAYWRIGHT_JUNIT_SUITE_ID: 'woocommerce-core'
         run: |
-          lastRunFile="${{ steps.download-last-run-info.outputs.download-path }}/last-run__${{ strategy.job-index }}/.last-run.json"
+          lastRunFile="${{ runner.temp }}/last-run-info/.last-run.json"
           lastRunFileDest="$ARTIFACTS_PATH/.last-run.json"

           if [ -f "$lastRunFile" ]; then
@@ -278,8 +279,8 @@ jobs:
             # Playwright last run info is available, parse the file and check if there are failed tests
             cat "$lastRunFileDest"
             failedTests=$(jq '.failedTests | length' "$lastRunFileDest")
-
-            # Only if there are failed tests, we want to use the --last-failed flag.
+
+            # Only if there are failed tests, we want to use the --last-failed flag.
             # The run will fail if we're using the flag and there are no failed tests.
             if [ "$failedTests" -gt 0 ]; then
               if [ "$LAST_FAILED_RUN" == "1" ]; then
@@ -301,7 +302,7 @@ jobs:
       - name: 'Upload Playwright last run info'
         # always upload the last run info, even if the test run passed
         if: ${{ always() && matrix.report.resultsPath != '' }}
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         with:
           name: 'last-run__${{ strategy.job-index }}'
           path: '${{ env.ARTIFACTS_PATH }}/.last-run.json'
@@ -311,7 +312,7 @@ jobs:

       - name: 'Upload artifacts'
         if: ${{ always() && matrix.report.resultsPath != '' }}
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         with:
           name: '${{ matrix.report.resultsBlobName }}__${{ strategy.job-index }}'
           path: ${{ env.ARTIFACTS_PATH }}
@@ -330,7 +331,7 @@ jobs:
     outputs:
       non_successful_jobs: ${{ steps.evaluation.outputs.non_successful_jobs }}
     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         name: 'Checkout'
         with:
           ref: ${{ inputs.refName != '' && inputs.refName || '' }}
@@ -361,7 +362,7 @@ jobs:
     env:
       NON_SUCCESSFUL_JOBS: ${{ needs.evaluate-project-jobs.outputs.non_successful_jobs }}
     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         name: 'Checkout'
         with:
           ref: ${{ inputs.refName != '' && inputs.refName || '' }}
@@ -371,7 +372,7 @@ jobs:
               .github/workflows

       - name: 'Setup PNPM'
-        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+        uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

       - name: 'Send messages for failed jobs'
         env:
@@ -416,7 +417,7 @@ jobs:
     steps:
       - name: 'Merge artifacts'
         id: merge-artifacts
-        uses: actions/upload-artifact/merge@v4
+        uses: actions/upload-artifact/merge@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         continue-on-error: true
         with:
           name: ${{ env.ARTIFACT_NAME }}
@@ -458,7 +459,7 @@ jobs:

       - name: 'Add a link to test report in summary'
         if: ${{ strategy.job-index == 0 }} # only add the link once
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const BASE_REPORT_URL = 'https://woocommerce.github.io/woocommerce-test-reports/#/';
@@ -466,14 +467,14 @@ jobs:
                 if (context.eventName === 'pull_request') {
                     return `${BASE_REPORT_URL}pr/${context.issue.number}`;
                 }
-
+
                 if (context.eventName === 'push') {
                     const shortSha = context.sha.substring(0, 7);
                     if (context.ref === 'refs/heads/trunk') {
                         return `${BASE_REPORT_URL}trunk/trunk-${shortSha}`;
                     }
                 }
-
+
                 return BASE_REPORT_URL;
             }

@@ -495,10 +496,10 @@ jobs:
       contents: read

     steps:
-      - uses: 'actions/checkout@v4'
-
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
+
       - name: 'Setup - node'
-        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+        uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
         with:
           node-version-file: .nvmrc

@@ -518,13 +519,13 @@ jobs:
     name: 'Validate changelog'
     if: |-
       ${{
-        ! cancelled() &&
-        github.event_name == 'pull_request' &&
-        github.event.pull_request.user.login != 'woocommercebot' &&
-        github.event.pull_request.user.login != 'github-actions[bot]' &&
-        needs.identify-jobs-to-run.outputs.needs-changelog-validation == 'true' &&
-        ( github.event.pull_request.base.ref == 'trunk' || startsWith( github.event.pull_request.base.ref, 'release/' ) ) &&
-        ! contains( github.event.pull_request.body, '[x] This Pull Request does not require a changelog' )
+        ! cancelled() &&
+        github.event_name == 'pull_request' &&
+        github.event.pull_request.user.login != 'woocommercebot' &&
+        github.event.pull_request.user.login != 'github-actions[bot]' &&
+        needs.identify-jobs-to-run.outputs.needs-changelog-validation == 'true' &&
+        ( github.event.pull_request.base.ref == 'trunk' || startsWith( github.event.pull_request.base.ref, 'release/' ) ) &&
+        ! contains( github.event.pull_request.body, '[x] This Pull Request does not require a changelog' )
       }}
     needs: [ 'identify-jobs-to-run' ]
     runs-on: ${{ github.event.pull_request.user.login == 'woocommercebot' && fromJSON('{"group":"WooCommerce Release Checks"}') || 'ubuntu-latest' }}
@@ -532,7 +533,7 @@ jobs:
       contents: read

     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0

       - uses: './.github/actions/setup-woocommerce-monorepo'

@@ -570,9 +571,9 @@ jobs:
       contents: read

     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0

-      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+      - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
         id: target-changes
         with:
           list-files: shell
@@ -584,12 +585,12 @@ jobs:
               - 'docs/**/*.md'

       - name: 'Setup - node'
-        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+        uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
         with:
           node-version-file: .nvmrc

       - name: 'Setup - pnpm'
-        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+        uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

       - name: 'Validate - lint md-files'
         if: ${{ steps.target-changes.outputs.needs-markdown-linting }}
diff --git a/.github/workflows/create-trunk-snapshot-build.yml b/.github/workflows/create-trunk-snapshot-build.yml
index 92195844999..618c3eb7d3f 100644
--- a/.github/workflows/create-trunk-snapshot-build.yml
+++ b/.github/workflows/create-trunk-snapshot-build.yml
@@ -20,7 +20,7 @@ jobs:
             contents: write
         steps:
             - name: 'Update next tag commit ref'
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -38,7 +38,7 @@ jobs:
                       });

             - name: 'Checkout ref'
-              uses: 'actions/checkout@v4'
+              uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
               with:
                   ref: ${{ env.TARGET_REF }}

diff --git a/.github/workflows/docs-needed-detection.yml b/.github/workflows/docs-needed-detection.yml
index 93b8c1ec649..1b31e426cf9 100644
--- a/.github/workflows/docs-needed-detection.yml
+++ b/.github/workflows/docs-needed-detection.yml
@@ -136,7 +136,7 @@ jobs:

       - name: 'Apply Label'
         if: ${{ steps.analyze.outputs.structured_output && fromJSON(steps.analyze.outputs.structured_output).needs_docs }}
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           STRUCTURED_OUTPUT: ${{ steps.analyze.outputs.structured_output }}
         with:
@@ -163,7 +163,7 @@ jobs:

       - name: 'Create Linear Issue'
         if: ${{ steps.analyze.outputs.structured_output && fromJSON(steps.analyze.outputs.structured_output).needs_docs }}
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           STRUCTURED_OUTPUT: ${{ steps.analyze.outputs.structured_output }}
           LINEAR_API_KEY: ${{ secrets.LINEAR_OAUTH_TOKEN }}
diff --git a/.github/workflows/maintenance-bump-as-requirement.yml b/.github/workflows/maintenance-bump-as-requirement.yml
index 81cda04cf69..32113e630cd 100644
--- a/.github/workflows/maintenance-bump-as-requirement.yml
+++ b/.github/workflows/maintenance-bump-as-requirement.yml
@@ -36,7 +36,7 @@ jobs:

         echo "version=$VERSION" >> $GITHUB_OUTPUT
     - name: Check out trunk
-      uses: actions/checkout@v4
+      uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
       with:
         ref: trunk
     - name: Check if version bump is needed
@@ -64,7 +64,7 @@ jobs:
     runs-on: ubuntu-latest
     steps:
     - name: Check out trunk
-      uses: actions/checkout@v4
+      uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
       with:
         ref: trunk
     - name: Set up dev environment
diff --git a/.github/workflows/maintenance-update-version-requirements.yml b/.github/workflows/maintenance-update-version-requirements.yml
index a24f1e9b40b..91213ed73fc 100644
--- a/.github/workflows/maintenance-update-version-requirements.yml
+++ b/.github/workflows/maintenance-update-version-requirements.yml
@@ -15,7 +15,7 @@ jobs:
       matrix: ${{ steps.compute-branches.outputs.matrix }}
     steps:
       - name: Check out trunk
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: trunk
       - name: Compute WordPress versions
@@ -101,7 +101,7 @@ jobs:
       matrix: ${{ fromJSON(needs.preparation.outputs.matrix) }}
     steps:
       - name: Check out branch
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: ${{ matrix.branch }}
       - name: Set up dev environment
diff --git a/.github/workflows/nightly-builds.yml b/.github/workflows/nightly-builds.yml
index c78aa815bc6..96898c293db 100644
--- a/.github/workflows/nightly-builds.yml
+++ b/.github/workflows/nightly-builds.yml
@@ -22,7 +22,7 @@ jobs:
       contents: write
     steps:
       - name: 'Update nightly tag commit ref'
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.GITHUB_TOKEN }}
           script: |
@@ -40,7 +40,7 @@ jobs:
             });

       - name: 'Checkout ref'
-        uses: 'actions/checkout@v4'
+        uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         with:
           ref: ${{ env.TARGET_REF }}

@@ -65,7 +65,7 @@ jobs:
           max_releases: 1

       - name: 'Update nightly release notes'
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.GITHUB_TOKEN }}
           script: |
diff --git a/.github/workflows/package-php-mirror.yml b/.github/workflows/package-php-mirror.yml
index e14c10e24af..c0c82986daa 100644
--- a/.github/workflows/package-php-mirror.yml
+++ b/.github/workflows/package-php-mirror.yml
@@ -16,7 +16,7 @@ jobs:
             contents: read
         steps:
             - name: Checkout monorepo
-              uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
+              uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

             - name: Setup WooCommerce Monorepo
               uses: ./.github/actions/setup-woocommerce-monorepo
diff --git a/.github/workflows/package-release.yml b/.github/workflows/package-release.yml
index 344d80be34b..7a2790da8b7 100644
--- a/.github/workflows/package-release.yml
+++ b/.github/workflows/package-release.yml
@@ -20,7 +20,7 @@ jobs:
     name: Run packages release script
     runs-on: ubuntu-latest
     steps:
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

       - name: Setup WooCommerce Monorepo
         uses: ./.github/actions/setup-woocommerce-monorepo
diff --git a/.github/workflows/phpstan.yml b/.github/workflows/phpstan.yml
index 3dc5f4eae41..642f918dd44 100644
--- a/.github/workflows/phpstan.yml
+++ b/.github/workflows/phpstan.yml
@@ -31,7 +31,7 @@ jobs:
         name: 'PHPStan Analysis'
         runs-on: ubuntu-latest
         steps:
-            - uses: 'actions/checkout@v4'
+            - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
               name: 'Checkout'

             - uses: './.github/actions/setup-woocommerce-monorepo'
@@ -46,7 +46,7 @@ jobs:
               run: mkdir -p tmp

             - name: 'Restore PHPStan result cache'
-              uses: actions/cache/restore@v4
+              uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
               with:
                   path: plugins/woocommerce/tmp
                   key: phpstan-result-cache-${{ github.run_id }}
@@ -143,7 +143,7 @@ jobs:
                   fi

             - name: 'Save PHPStan result cache'
-              uses: actions/cache/save@v4
+              uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
               if: ${{ !cancelled() }}
               with:
                   path: plugins/woocommerce/tmp
diff --git a/.github/workflows/pr-assess-bundle-size.yml b/.github/workflows/pr-assess-bundle-size.yml
index 31ad3f7d9b7..b6459870d05 100644
--- a/.github/workflows/pr-assess-bundle-size.yml
+++ b/.github/workflows/pr-assess-bundle-size.yml
@@ -47,7 +47,7 @@ jobs:
             pull-requests: write

         steps:
-            - uses: actions/checkout@v4
+            - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
             - name: Setup WooCommerce Monorepo
               uses: ./.github/actions/setup-woocommerce-monorepo
               with:
diff --git a/.github/workflows/pr-auto-milestone-on-merge.yml b/.github/workflows/pr-auto-milestone-on-merge.yml
index e95ff8eb5f2..bd0161a4777 100644
--- a/.github/workflows/pr-auto-milestone-on-merge.yml
+++ b/.github/workflows/pr-auto-milestone-on-merge.yml
@@ -16,13 +16,13 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           sparse-checkout: |
             .github/workflows/scripts

       - name: Assign milestone
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const script = require('./.github/workflows/scripts/assign-milestone-on-merge.js');
diff --git a/.github/workflows/pr-build-live-branch.yml b/.github/workflows/pr-build-live-branch.yml
index 30dfd4664de..eaeb5c98213 100644
--- a/.github/workflows/pr-build-live-branch.yml
+++ b/.github/workflows/pr-build-live-branch.yml
@@ -45,7 +45,7 @@ jobs:
             repository-projects: write
             id-token: write
         steps:
-            - uses: actions/checkout@v4
+            - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

             - name: Get current version
               id: version
@@ -91,7 +91,7 @@ jobs:
                   echo "plugin-data=$PLUGIN_DATA" >> $GITHUB_OUTPUT

             - name: Create plugins artifact
-              uses: actions/upload-artifact@v4
+              uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
               if: steps.prepare.outputs.plugin-data != '{}'
               with:
                   name: plugins
@@ -100,7 +100,7 @@ jobs:
                   retention-days: 1

             - name: Create playground artifact
-              uses: actions/upload-artifact@v4
+              uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
               if: steps.prepare.outputs.plugin-data != '{}'
               with:
                   name: plugins-${{ github.run_id }}
@@ -122,7 +122,7 @@ jobs:
                     --form-string "secret=$SECRET"

             - name: Comment on PR with WordPress Playground details
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               if: steps.prepare.outputs.plugin-data != '{}' && ! github.event.pull_request.head.repo.fork
               with:
                   script: |
diff --git a/.github/workflows/pr-email-editor-test-reminder.yml b/.github/workflows/pr-email-editor-test-reminder.yml
index 1d96e7f9cf5..bda3abf9524 100644
--- a/.github/workflows/pr-email-editor-test-reminder.yml
+++ b/.github/workflows/pr-email-editor-test-reminder.yml
@@ -18,16 +18,16 @@ jobs:
         runs-on: ubuntu-latest
         steps:
             - name: Checkout
-              uses: actions/checkout@v4
+              uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

             - name: Setup Node
-              uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+              uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
               with:
                   node-version-file: '.nvmrc'

             - name: Check if PR touches email editor
               id: check-email-editor
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       const { checkEmailEditorTestReminderComment } = require( './.github/workflows/scripts/check-email-editor-test-reminder-comment.js' );
@@ -36,7 +36,7 @@ jobs:

             - name: Create or update test reminder comment
               if: steps.check-email-editor.outputs.touches-email-editor == 'true'
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       const { createOrUpdateTestReminderComment } = require( './.github/workflows/scripts/manage-email-editor-test-reminder-comment.js' );
@@ -44,7 +44,7 @@ jobs:

             - name: Delete test reminder comment
               if: steps.check-email-editor.outputs.touches-email-editor == 'false'
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       const { deleteTestReminderComment } = require( './.github/workflows/scripts/manage-email-editor-test-reminder-comment.js' );
diff --git a/.github/workflows/pr-highlight-changes.yml b/.github/workflows/pr-highlight-changes.yml
index 5644a302929..14fd68e17e7 100644
--- a/.github/workflows/pr-highlight-changes.yml
+++ b/.github/workflows/pr-highlight-changes.yml
@@ -19,7 +19,7 @@ jobs:
     outputs:
       results: ${{ steps.results.outputs.results }}
     steps:
-      - uses: 'actions/checkout@v4'
+      - uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         name: 'Checkout'
         with:
           fetch-depth: 2
@@ -38,7 +38,7 @@ jobs:
           exclude="plugins/woocommerce/tests"
           version=$(pnpm analyzer major-minor "${{ github.event.pull_request.head.sha }}" "plugins/woocommerce/woocommerce.php" | tail -n 1)
           pnpm analyzer "${{ github.event.pull_request.head.sha }}" $version --base "${{ github.event.pull_request.base.sha }}" --outputStyle "github" --exclude $exclude
-      - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+      - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         name: 'Validate'
         with:
           script: |
diff --git a/.github/workflows/pr-highlight-rest-api-changes.yml b/.github/workflows/pr-highlight-rest-api-changes.yml
index 3af805c8dde..49d349675eb 100644
--- a/.github/workflows/pr-highlight-rest-api-changes.yml
+++ b/.github/workflows/pr-highlight-rest-api-changes.yml
@@ -14,7 +14,7 @@ jobs:
     if: github.event.pull_request.merged == true
     runs-on: ubuntu-latest
     steps:
-      - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
+      - uses: dorny/paths-filter@7b450fff21473bca461d4b92ce414b9d0420d706 # v4.0.2
         id: filter
         with:
           list-files: 'json'
@@ -45,7 +45,7 @@ jobs:

       - name: Comment on PR to remind the author about updating API docs
         if: steps.filter.outputs.rest == 'true'
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             github.rest.issues.createComment({
diff --git a/.github/workflows/pr-release-communication.yml b/.github/workflows/pr-release-communication.yml
index 56e76fd193f..d2846a47861 100644
--- a/.github/workflows/pr-release-communication.yml
+++ b/.github/workflows/pr-release-communication.yml
@@ -26,10 +26,10 @@ jobs:

     steps:
       - name: Checkout repository
-        uses: actions/checkout@v5
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

       - name: Add Feature Highlight label
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             await github.rest.issues.addLabels({
@@ -90,7 +90,7 @@ jobs:

       - name: Post Feature Highlight Comment
         if: steps.highlight.outputs.structured_output
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           OUTPUT: ${{ steps.highlight.outputs.structured_output }}
         with:
@@ -155,10 +155,10 @@ jobs:

     steps:
       - name: Checkout repository
-        uses: actions/checkout@v5
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

       - name: Add Developer Advisory label
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             await github.rest.issues.addLabels({
@@ -233,7 +233,7 @@ jobs:

       - name: Post Developer Advisory Comment
         if: steps.advisory.outputs.structured_output
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           OUTPUT: ${{ steps.advisory.outputs.structured_output }}
         with:
diff --git a/.github/workflows/pr-require-milestone.yml b/.github/workflows/pr-require-milestone.yml
index cde4317b40c..c5bba510eb8 100644
--- a/.github/workflows/pr-require-milestone.yml
+++ b/.github/workflows/pr-require-milestone.yml
@@ -24,13 +24,13 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           sparse-checkout: |
             .github/workflows/scripts

       - name: 'Validate milestone or checkbox selection'
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const script = require('./.github/workflows/scripts/validate-milestone-selection.js');
diff --git a/.github/workflows/prepare-package-release.yml b/.github/workflows/prepare-package-release.yml
index 97f5fe431ee..40a21180739 100644
--- a/.github/workflows/prepare-package-release.yml
+++ b/.github/workflows/prepare-package-release.yml
@@ -17,7 +17,7 @@ jobs:
       contents: write
       pull-requests: write
     steps:
-      - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
+      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           fetch-depth: '0'

diff --git a/.github/workflows/pull-request-post-merge-processing.yml b/.github/workflows/pull-request-post-merge-processing.yml
index 8c4610c46f1..531fb210385 100644
--- a/.github/workflows/pull-request-post-merge-processing.yml
+++ b/.github/workflows/pull-request-post-merge-processing.yml
@@ -37,7 +37,7 @@ jobs:
               env:
                   GITHUB_API_URL: ${{ env.GITHUB_API_URL }}
             - name: 'Install PHP'
-              uses: shivammathur/setup-php@8e2ac35f639d3e794c1da1f28999385ab6fdf0fc
+              uses: shivammathur/setup-php@f3e473d116dcccaddc5834248c87452386958240 # 2.37.2
               with:
                   php-version: '7.4'

diff --git a/.github/workflows/release-assignment.yml b/.github/workflows/release-assignment.yml
index f04d2980873..c4fce449b43 100644
--- a/.github/workflows/release-assignment.yml
+++ b/.github/workflows/release-assignment.yml
@@ -29,7 +29,7 @@ jobs:
         run: npm install node-ical@0.23.1 rrule-temporal@1.4.1
       - name: Check for feature freeze events
         id: check-code-freeze-8-weeks
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const ical = require( 'node-ical' );
@@ -85,7 +85,7 @@ jobs:
       - name: Get all events for version
         if: ${{ steps.check-code-freeze-8-weeks.outputs.version != '' }}
         id: get-all-events-for-version
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const ical = require( 'node-ical' );
@@ -146,7 +146,7 @@ jobs:
       release-lead-google-login: ${{ steps.trigger-upcoming-code-freeze-events.outputs.release-lead-google-login }}
       release-lead-slack-member-id: ${{ steps.trigger-upcoming-code-freeze-events.outputs.release-lead-slack-member-id }}
     steps:
-      - uses: actions/github-script@v7
+      - uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         id: trigger-upcoming-code-freeze-events
         with:
           script: |
@@ -241,7 +241,7 @@ jobs:
       issue-url: ${{ steps.check-existing-issue.outputs.issue-url || steps.create-tracking-issue.outputs.issue-url }}
     steps:
       - name: Checkout repository (sparse)
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           sparse-checkout: |
             .linear
@@ -252,7 +252,7 @@ jobs:

       - name: Check for existing release tracking issue
         id: check-existing-issue
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -284,7 +284,7 @@ jobs:
       - name: Get Linear data
         if: ${{ steps.check-existing-issue.outputs.exists != 'true' }}
         id: get-linear-data
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -317,7 +317,7 @@ jobs:
       - name: Get Linear user from email
         if: ${{ steps.check-existing-issue.outputs.exists != 'true' }}
         id: get-linear-user
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -345,7 +345,7 @@ jobs:
       - name: Process template and create release tracking issue
         if: ${{ steps.check-existing-issue.outputs.exists != 'true' }}
         id: create-tracking-issue
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -435,7 +435,7 @@ jobs:

       - name: Build sub-issues matrix
         id: build-matrix
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const version = '${{ needs.check-upcoming-release-events.outputs.version }}';
diff --git a/.github/workflows/release-build-zip-file.yml b/.github/workflows/release-build-zip-file.yml
index f61e7654e5f..b9b47d26102 100644
--- a/.github/workflows/release-build-zip-file.yml
+++ b/.github/workflows/release-build-zip-file.yml
@@ -101,7 +101,7 @@ jobs:
           fi

         # Checkout trunk.
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: trunk
           path: checkout-trunk
@@ -111,7 +111,7 @@ jobs:
         if: ${{ ! inputs.skip_verify }}

         # Checkout branch.
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: ${{ steps.normalize-branch.outputs.branch }}
           path: checkout-branch
@@ -202,7 +202,7 @@ jobs:

       - name: 'Pre-build verification: db updates'
         if: ${{ ! inputs.skip_verify && ! contains( steps.pre-build-verification.outputs.release_version, '-dev' ) && ! contains( steps.pre-build-verification.outputs.release_version, '-beta.1' ) }}
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { run } = require( './checkout-trunk/.github/workflows/scripts/release-check-db-updates' );
@@ -219,7 +219,7 @@ jobs:
       contents: read
     steps:
       - name: Checkout code
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: ${{ needs.verify.outputs.branch }}

@@ -237,7 +237,7 @@ jobs:

       - name: Upload the zip file as an artifact
         id: artifact-upload
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         env:
           GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
         with:
@@ -268,7 +268,7 @@ jobs:
       contents: write
     steps:
       - name: Download artifact
-        uses: actions/download-artifact@v4
+        uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
         with:
           name: woocommerce

diff --git a/.github/workflows/release-bump-version.yml b/.github/workflows/release-bump-version.yml
index c80daf09ac9..442236a1723 100644
--- a/.github/workflows/release-bump-version.yml
+++ b/.github/workflows/release-bump-version.yml
@@ -67,7 +67,7 @@ jobs:
           fi

       - name: Checkout code
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: ${{ steps.normalize-branch.outputs.branch }}

@@ -80,7 +80,7 @@ jobs:

       - name: Compute new version
         id: compute-new-version
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const branch = `${{ steps.normalize-branch.outputs.branch }}`;
diff --git a/.github/workflows/release-cfe-prr-issue-validation.yml b/.github/workflows/release-cfe-prr-issue-validation.yml
index 6bd431eba03..e1ebad48c48 100644
--- a/.github/workflows/release-cfe-prr-issue-validation.yml
+++ b/.github/workflows/release-cfe-prr-issue-validation.yml
@@ -17,7 +17,7 @@ jobs:
     steps:
       - name: Extract PR number from issue body
         id: extract-pr
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const body = context.payload.issue.body;
@@ -55,7 +55,7 @@ jobs:
         env:
           PR_NUMBER: ${{ needs.prep.outputs.pr_number }}
           GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const issueUrl = context.payload.issue.html_url;
@@ -130,7 +130,7 @@ jobs:
         if: ${{ steps.verify-pr.outputs.PR_BASE_REF != '' }}
         env:
           PR_BASE_REF: ${{ steps.verify-pr.outputs.PR_BASE_REF }}
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const issueUrl = context.payload.issue.html_url;
@@ -219,7 +219,7 @@ jobs:
     steps:
       - name: Set Slack Message
         id: set-message
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const event = context.payload;
@@ -311,7 +311,7 @@ jobs:

       - name: Set Slack Message
         id: set-message
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const event = context.payload;
@@ -347,7 +347,7 @@ jobs:

       - name: Set Slack Message
         id: set-message
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const event = context.payload;
diff --git a/.github/workflows/release-code-freeze.yml b/.github/workflows/release-code-freeze.yml
index e43c9551b08..927ec5ec1ad 100644
--- a/.github/workflows/release-code-freeze.yml
+++ b/.github/workflows/release-code-freeze.yml
@@ -30,7 +30,7 @@ jobs:
         run: npm install node-ical@0.23.1 rrule-temporal@1.4.1
       - name: Check for Feature Freeze events today
         id: check-feature-freeze-event
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const shouldSkipCalendarCheck = '${{ github.event_name }}' !== 'schedule';
@@ -80,7 +80,7 @@ jobs:
       nextTrunkMainVersion: ${{ steps.calculate-versions.outputs.nextTrunkMainVersion }}
     steps:
       # - name: Verify no PRs open by the github-actions bot are open
-      #   uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+      #   uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
       #   with:
       #     script: |
       #       const automatedPRs = await github.rest.search.issuesAndPullRequests({
@@ -91,7 +91,7 @@ jobs:
       #         core.setFailed('There are PRs by the github-actions bot that are still open. Please merge or close before proceeding.');
       #         process.exit(1);
       #       }
-      - uses: actions/checkout@v4
+      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: trunk
           sparse-checkout: |
@@ -105,7 +105,7 @@ jobs:
           echo "trunk-version=$header_version" >> $GITHUB_OUTPUT
       - name: Compute next release and dev cycle versions
         id: calculate-versions
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const trunkVersion = `${{ steps.fetch-trunk-version.outputs.trunk-version }}`;
@@ -131,7 +131,7 @@ jobs:
     needs: prepare-for-feature-freeze
     steps:
       - name: Checkout trunk
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: trunk
       - name: Push frozen branch to the repo
@@ -146,7 +146,7 @@ jobs:
           git checkout -b ${{ needs.prepare-for-feature-freeze.outputs.nextReleaseBranch }}
           git push origin ${{ needs.prepare-for-feature-freeze.outputs.nextReleaseBranch }}
       - name: Create milestone for next dev cycle
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const trunkMilestone = '${{ needs.prepare-for-feature-freeze.outputs.nextTrunkMainVersion }}.0';
@@ -171,7 +171,7 @@ jobs:
     needs: [prepare-for-feature-freeze, run-feature-freeze]
     steps:
       - name: Close completed milestones
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const nextTrunkMainVersion = '${{ needs.prepare-for-feature-freeze.outputs.nextTrunkMainVersion }}'; // e.g. '10.5'
@@ -262,7 +262,7 @@ jobs:
           slack-optional-unfurl_media: false
       - name: Find open PRs in now frozen milestone
         id: find-prs
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             // Find open PRs with milestone matching the next release version.
@@ -327,7 +327,7 @@ jobs:
     needs: [publish-dev-release, prepare-for-feature-freeze]
     steps:
       - name: Trigger Feature Freeze Webhook
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const crypto = require('crypto');
diff --git a/.github/workflows/release-commits-and-contributors.yml b/.github/workflows/release-commits-and-contributors.yml
index 1d32b2f1ce9..9cdf09d8f48 100644
--- a/.github/workflows/release-commits-and-contributors.yml
+++ b/.github/workflows/release-commits-and-contributors.yml
@@ -33,7 +33,7 @@ jobs:

       - name: Extract version from the provided input version
         id: version-from-input
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const currentVersion = '${{ inputs.version }}';
@@ -58,7 +58,7 @@ jobs:

       - name: Calculate current and previous version
         id: calculate-versions
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const major = parseInt('${{ steps.version-from-input.outputs.major }}');
@@ -101,7 +101,7 @@ jobs:
       contributor_count: ${{ steps.count-commits.outputs.contributor_count }}
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           fetch-depth: 0

@@ -137,15 +137,15 @@ jobs:
       artifact_url: ${{ steps.output-artifact-url.outputs.artifact_url }}
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           fetch-depth: 0

       - name: Setup PNPM
-        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+        uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

       - name: Setup Node
-        uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c
+        uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
         with:
           node-version-file: .nvmrc
           cache: pnpm
@@ -178,7 +178,7 @@ jobs:

       - name: Upload contributors HTML
         id: artifact-upload
-        uses: actions/upload-artifact@v4
+        uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
         with:
           name: contributors-release-${{ needs.extract-versions.outputs.current_version }}
           path: ${{ steps.generate-contributors-list.outputs.filepath }}
@@ -199,7 +199,7 @@ jobs:
       formatted_updates: ${{ steps.find-pr.outputs.formatted_updates }}
     steps:
       - name: Checkout utilities
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: trunk
           path: checkout-trunk
@@ -208,7 +208,7 @@ jobs:
           sparse-checkout-cone-mode: false

       - name: Checkout repository
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: release/${{ needs.extract-versions.outputs.current_version }}
           path: checkout-release
@@ -216,7 +216,7 @@ jobs:

       - name: Check for database updates
         id: check-db-updates
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const fs = require('fs');
diff --git a/.github/workflows/release-compile-changelog.yml b/.github/workflows/release-compile-changelog.yml
index 79a7dcc77b1..b3e09c69bd7 100644
--- a/.github/workflows/release-compile-changelog.yml
+++ b/.github/workflows/release-compile-changelog.yml
@@ -39,7 +39,7 @@ jobs:
     steps:
       - name: Validate version input
         id: validate-version
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           VERSION: ${{ github.event.inputs.version }}
         with:
@@ -62,7 +62,7 @@ jobs:

       - name: Validate release date input
         if: ${{ github.event.inputs.release_date != '' }}
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           RELEASE_DATE: ${{ github.event.inputs.release_date }}
         with:
@@ -90,7 +90,7 @@ jobs:
             console.log(`Release date validated: ${releaseDate}`);

       - name: Checkout code
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
             ref: trunk

@@ -123,7 +123,7 @@ jobs:
           echo "selected_branch=${SELECTED_BRANCH}" >> $GITHUB_OUTPUT

       - name: Checkout release branch
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: ${{ steps.check-branch.outputs.selected_branch }}
           path: release-branch
@@ -151,10 +151,10 @@ jobs:
           echo "current_version=$current_version" >> $GITHUB_OUTPUT

       - name: Setup PNPM
-        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+        uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

       - name: Setup Node
-        uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
+        uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
         with:
             node-version-file: .nvmrc
             cache: pnpm
diff --git a/.github/workflows/release-create-tracking-issue.yml b/.github/workflows/release-create-tracking-issue.yml
index 2edb828342c..a7b9f472357 100644
--- a/.github/workflows/release-create-tracking-issue.yml
+++ b/.github/workflows/release-create-tracking-issue.yml
@@ -47,7 +47,7 @@ jobs:
     steps:
       - name: Parse version and determine template
         id: parse-version
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const version = '${{ inputs.version }}';
@@ -85,7 +85,7 @@ jobs:

       - name: Validate release branch exists
         if: ${{ !inputs.skip-branch-validation }}
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const branchName = '${{ steps.parse-version.outputs.branch }}';
@@ -110,7 +110,7 @@ jobs:

       - name: Check if tracking issue already exists
         id: check-existing
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -149,7 +149,7 @@ jobs:

       - name: Checkout repository (sparse)
         if: ${{ steps.check-existing.outputs.issue-exists != 'true' }}
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           path: repo
           sparse-checkout: |
@@ -159,7 +159,7 @@ jobs:
       - name: Get Linear data
         if: ${{ steps.check-existing.outputs.issue-exists != 'true' }}
         id: get-linear-data
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -182,7 +182,7 @@ jobs:
       - name: Get parent tracking issue and extract assignee
         if: ${{ steps.check-existing.outputs.issue-exists != 'true' }}
         id: get-parent-issue
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
@@ -224,7 +224,7 @@ jobs:

       - name: Process template and create Linear issue
         if: ${{ steps.check-existing.outputs.issue-exists != 'true' }}
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const { LinearClient } = require( '@linear/sdk' );
diff --git a/.github/workflows/release-feature-highlights-notification.yml b/.github/workflows/release-feature-highlights-notification.yml
index 772ae66c6f1..39160894082 100644
--- a/.github/workflows/release-feature-highlights-notification.yml
+++ b/.github/workflows/release-feature-highlights-notification.yml
@@ -20,7 +20,7 @@ jobs:

       - name: Check for Feature Freeze events in a week
         id: find-feature-freeze-event
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const ical = require('node-ical');
diff --git a/.github/workflows/release-new-release-published.yml b/.github/workflows/release-new-release-published.yml
index d3a85568c8e..bbdad99415a 100644
--- a/.github/workflows/release-new-release-published.yml
+++ b/.github/workflows/release-new-release-published.yml
@@ -27,7 +27,7 @@ jobs:
     if: ${{ github.event.action == 'published' && ! ( contains( inputs.release_tag_name, '-dev' ) || contains( inputs.release_tag_name, '-rc' ) ) }}
     steps:
       - name: 'Checkout repository'
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: trunk
           sparse-checkout: |
@@ -104,7 +104,7 @@ jobs:
             exit 1
           fi
       - name: 'Fetch latest changelog.txt and changelog script'
-        uses: 'actions/checkout@v4'
+        uses: 'actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0' # v7.0.0
         with:
           ref: trunk
           sparse-checkout: |
diff --git a/.github/workflows/release-open-issue-warning.yml b/.github/workflows/release-open-issue-warning.yml
index c1cacde3449..5f20aa19637 100644
--- a/.github/workflows/release-open-issue-warning.yml
+++ b/.github/workflows/release-open-issue-warning.yml
@@ -26,7 +26,7 @@ jobs:
         run: npm install node-ical@0.23.1 rrule-temporal@1.4.1
       - name: Check for release events
         id: check-upcoming-release-build
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const ical = require('node-ical');
@@ -83,7 +83,7 @@ jobs:
     steps:
       - name: Get and process open milestones
         id: process-milestones
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             /**
diff --git a/.github/workflows/release-update-stable-tag.yml b/.github/workflows/release-update-stable-tag.yml
index 2f5994196bd..8ba7231113d 100644
--- a/.github/workflows/release-update-stable-tag.yml
+++ b/.github/workflows/release-update-stable-tag.yml
@@ -50,7 +50,7 @@ jobs:

       - name: Validate release version
         id: extract-version
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const versionInput = '${{ github.event.inputs.version }}';
@@ -75,7 +75,7 @@ jobs:
             }

       - name: Checkout repository
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           fetch-depth: 0

@@ -88,7 +88,7 @@ jobs:

       - name: Get target branches for stable tag update
         id: get-branches
-        uses: actions/github-script@v7
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             function getNextVersion(version) {
@@ -240,7 +240,7 @@ jobs:
         branch: ${{ fromJSON(needs.validate-release.outputs.target-branches) }}
     steps:
       - name: Checkout repository
-        uses: actions/checkout@v4
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           fetch-depth: 0
           sparse-checkout: |
diff --git a/.github/workflows/release-upload-to-wporg.yml b/.github/workflows/release-upload-to-wporg.yml
index ffe48c9baee..bda2e3b07fb 100644
--- a/.github/workflows/release-upload-to-wporg.yml
+++ b/.github/workflows/release-upload-to-wporg.yml
@@ -45,7 +45,7 @@ jobs:
           fi
       - name: Fetch release
         id: fetch-release
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const tag = '${{ inputs.release }}';
diff --git a/.github/workflows/release-wc-beta-tester.yml b/.github/workflows/release-wc-beta-tester.yml
index 3c6428ee82e..af80c02c72f 100644
--- a/.github/workflows/release-wc-beta-tester.yml
+++ b/.github/workflows/release-wc-beta-tester.yml
@@ -18,7 +18,7 @@ jobs:
         permissions:
             contents: write
         steps:
-            - uses: actions/checkout@v3
+            - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

             - name: Setup WooCommerce Monorepo
               uses: ./.github/actions/setup-woocommerce-monorepo
diff --git a/.github/workflows/shared-cherry-pick.yml b/.github/workflows/shared-cherry-pick.yml
index 5469b1d4b46..45a0c6be7c3 100644
--- a/.github/workflows/shared-cherry-pick.yml
+++ b/.github/workflows/shared-cherry-pick.yml
@@ -57,7 +57,7 @@ jobs:
     steps:
       - name: Validate PR and get merge commit
         id: check-pr
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const prNumber = parseInt('${{ inputs.pr_number }}', 10);
@@ -102,7 +102,7 @@ jobs:
       - name: Verify target branch and cherry-pick branch
         id: verify-branches
         if: steps.check-pr.outcome == 'success'
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           script: |
             const targetBranch = '${{ inputs.target_branch }}';
@@ -222,7 +222,7 @@ jobs:
       cherry_pick_pr_number: ${{ steps.aggregate-status.outputs.cherry_pick_pr_number }}
     steps:
       - name: Checkout target branch
-        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
         with:
           ref: ${{ inputs.target_branch }}

@@ -322,7 +322,7 @@ jobs:
       - name: Create cherry-pick pull request
         id: create-pr
         if: steps.cherry-pick.outputs.status != 'skipped'
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         env:
           CONFLICT_STATUS: ${{ steps.cherry-pick.outputs.conflict_status }}
         with:
@@ -425,7 +425,7 @@ jobs:

       - name: Assign PR
         if: steps.create-pr.outcome == 'success'
-        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
         with:
           github-token: ${{ secrets.WC_BOT_PR_CREATE_TOKEN || secrets.GITHUB_TOKEN }}
           script: |
diff --git a/.github/workflows/stalebot.yml b/.github/workflows/stalebot.yml
index 8039dd29ea1..ea54c245505 100644
--- a/.github/workflows/stalebot.yml
+++ b/.github/workflows/stalebot.yml
@@ -41,7 +41,7 @@ jobs:
                   delete-branch: true
                   ascending: true
             - name: Remove stale PR approvals (over 30 days old)
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       const thirtyDaysAgo = new Date();
@@ -107,7 +107,7 @@ jobs:
         if: github.event_name == 'pull_request' && github.event.action == 'converted_to_draft'
         steps:
             - name: Remove approvals from draft PR
-              uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea #v7.0.1
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   script: |
                       const pr = context.payload.pull_request;
diff --git a/.github/workflows/storybook-pages.yml b/.github/workflows/storybook-pages.yml
index 6d8b03b3154..b63e88cf0b0 100644
--- a/.github/workflows/storybook-pages.yml
+++ b/.github/workflows/storybook-pages.yml
@@ -15,7 +15,7 @@ jobs:

         steps:
             - name: Checkout
-              uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+              uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
               with:
                   ref: trunk
                   fetch-depth: 0
diff --git a/.github/workflows/tests-canonical-extensions.yml b/.github/workflows/tests-canonical-extensions.yml
index 65e090f3037..20cb051b70f 100644
--- a/.github/workflows/tests-canonical-extensions.yml
+++ b/.github/workflows/tests-canonical-extensions.yml
@@ -21,10 +21,10 @@ jobs:
     runs-on: ubuntu-latest
     steps:
       - name: Checkout monorepo
-        uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 #v4.2.2
+        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0

       - name: Setup PNPM
-        uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
+        uses: pnpm/action-setup@0ebf47130e4866e96fce0953f49152a61190b271 # v6.0.9

       - name: Run target repositories testing workflows
         env:
diff --git a/.github/workflows/triage-replies.yml b/.github/workflows/triage-replies.yml
index 5beab088d3b..b7c5926eb58 100644
--- a/.github/workflows/triage-replies.yml
+++ b/.github/workflows/triage-replies.yml
@@ -14,7 +14,7 @@ jobs:
             issues: write
         steps:
             - name: Add developer feedback comment
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -34,7 +34,7 @@ jobs:
             issues: write
         steps:
             - name: Add needs reproduction comment
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -53,7 +53,7 @@ jobs:
             issues: write
         steps:
             - name: Add support request comment
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -74,7 +74,7 @@ jobs:
                         If we missed something, please leave a comment and we will take a second look.'
                       })
             - name: Close support request issue
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -92,7 +92,7 @@ jobs:
             issues: write
         steps:
             - name: Add votes needed comment
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -110,7 +110,7 @@ jobs:
                         We'll keep an eye on the popularity of this request."
                       })
             - name: Close votes needed issue
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |
@@ -127,7 +127,7 @@ jobs:
             issues: write
         steps:
             - name: Add reply to fill template
-              uses: actions/github-script@v5
+              uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
               with:
                   github-token: ${{ secrets.GITHUB_TOKEN }}
                   script: |