Skip to content

Commit 8faa8db

Browse files
authored
chore: bump Node-20 actions to Node-24 compatible SHAs (#110)
* chore: bump Node-20 actions to Node-24 compatible SHAs (#109) GitHub-Actions runners force Node-24 on 2026-06-02 (≈one week from this commit) and remove Node-20 entirely on 2026-09-16. The release.yml run for v0.2.17 emitted Node-20 deprecation annotations on three actions; bumping them to current major-version SHAs makes the warnings go away and unblocks the forced-migration date. Bumps (SHA + documented tag both updated): actions/checkout 34e1148... # v4 -> 93cb6ef... # v5 actions/setup-python a26af69... # v5 -> a309ff8... # v6 docker/login-action c94ce9f... # v3 -> 650006c... # v4 49 lines changed across 10 workflow files: .github/workflows/artifact-cleanup.yml 1 line .github/workflows/branch-protection.yml 1 line .github/workflows/changelog-prestage.yml 2 lines .github/workflows/changelog-rollup.yml 2 lines .github/workflows/ci.yml 30 lines .github/workflows/codeql.yml 1 line .github/workflows/eval-nightly.yml 2 lines .github/workflows/pin-freshness-audit.yml 2 lines .github/workflows/release.yml 3 lines .github/workflows/security.yml 5 lines No behaviour change beyond the underlying Node runtime. The actions themselves keep the same input/output contract across these majors (per upstream release notes). Local verification: pin-freshness audit: 68 pins checked, 0 findings pytest tests/: 215 passed mypy --strict, ruff, ci-script compile gate, branch-protection contexts sync: all clean Self-version bump 0.2.17 -> 0.2.18 (chore = PATCH). Closes #109 * chore: trigger CI re-evaluation * chore: retrigger CI after Actions outage * chore: retrigger CI after Actions outage
1 parent 8938eb7 commit 8faa8db

12 files changed

Lines changed: 51 additions & 51 deletions

.github/workflows/artifact-cleanup.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ jobs:
4242
name: Prune old artifacts
4343
runs-on: ubuntu-latest
4444
steps:
45-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
45+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
4646

4747
- name: Compute threshold
4848
id: threshold

.github/workflows/branch-protection.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
matrix:
3636
branch: [main, develop]
3737
steps:
38-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
38+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
3939

4040
- name: Verify token is configured
4141
env:

.github/workflows/changelog-prestage.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ jobs:
4848
name: Open prestage PR
4949
runs-on: ubuntu-latest
5050
steps:
51-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
51+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
5252
with:
5353
ref: develop
5454
# Full history so `git describe --abbrev=0 --tags` can resolve
@@ -61,7 +61,7 @@ jobs:
6161
# opens, but its CI doesn't run until a user pushes on top.
6262
token: ${{ secrets.RELEASE_BOT_TOKEN || secrets.GITHUB_TOKEN }}
6363

64-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
64+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
6565
with:
6666
python-version: "3.14"
6767

.github/workflows/changelog-rollup.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ jobs:
3535
github.event_name == 'workflow_dispatch' ||
3636
github.event.workflow_run.conclusion == 'success'
3737
steps:
38-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
38+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
3939
with:
4040
ref: develop
4141
# full history needed for `git describe --abbrev=0 --tags <ref>^`
@@ -48,7 +48,7 @@ jobs:
4848
# pushes a commit on top.
4949
token: ${{ secrets.RELEASE_BOT_TOKEN || secrets.GITHUB_TOKEN }}
5050

51-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
51+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
5252
with:
5353
python-version: "3.14"
5454

.github/workflows/ci.yml

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ jobs:
1717
name: Lint & Format
1818
runs-on: ubuntu-latest
1919
steps:
20-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
20+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
2121
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
22-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
22+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
2323
with:
2424
python-version: "3.14"
2525
- run: uv sync --frozen --extra dev
@@ -30,9 +30,9 @@ jobs:
3030
name: Type Check
3131
runs-on: ubuntu-latest
3232
steps:
33-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
33+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
3434
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
35-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
35+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
3636
with:
3737
python-version: "3.14"
3838
- run: uv sync --frozen --extra dev
@@ -43,9 +43,9 @@ jobs:
4343
runs-on: ubuntu-latest
4444
# Pure in-process tests — completes fast so PR authors get quick feedback.
4545
steps:
46-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
46+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
4747
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
48-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
48+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
4949
with:
5050
python-version: "3.14"
5151
- run: uv sync --frozen --extra dev
@@ -56,9 +56,9 @@ jobs:
5656
runs-on: ubuntu-latest
5757
# Enforces [tool.coverage.report].fail_under from pyproject.toml (75%).
5858
steps:
59-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
59+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
6060
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
61-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
61+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
6262
with:
6363
python-version: "3.14"
6464
- run: uv sync --frozen --extra dev
@@ -68,9 +68,9 @@ jobs:
6868
name: Architecture (import-linter)
6969
runs-on: ubuntu-latest
7070
steps:
71-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
71+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
7272
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
73-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
73+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
7474
with:
7575
python-version: "3.14"
7676
- run: uv sync --frozen --extra dev
@@ -83,9 +83,9 @@ jobs:
8383
# `uv run pre-commit install` can't leak unformatted code or a stray
8484
# secret past the first defence layer.
8585
steps:
86-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
86+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
8787
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
88-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
88+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
8989
with:
9090
python-version: "3.14"
9191
- run: uv sync --frozen --extra dev
@@ -99,8 +99,8 @@ jobs:
9999
# this job enforces the file-half. No exemption mechanism — pre-existing
100100
# offenders should be split before this job lands, not allowlisted.
101101
steps:
102-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
103-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
102+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
103+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
104104
with:
105105
python-version: "3.14"
106106
- run: python .github/scripts/check_file_length.py
@@ -113,10 +113,10 @@ jobs:
113113
# that the 75 % coverage gate cannot detect on its own.
114114
if: github.event_name == 'pull_request'
115115
steps:
116-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
116+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
117117
with:
118118
fetch-depth: 0 # full history so `git show origin/<base>:` resolves
119-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
119+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
120120
with:
121121
python-version: "3.14"
122122
- run: python .github/scripts/check_version_bump.py
@@ -129,8 +129,8 @@ jobs:
129129
# First-party = major tag; astral-sh/setup-uv = patch tag; third-party
130130
# = SHA + trailing `# vN.M.P` comment.
131131
steps:
132-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
133-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
132+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
133+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
134134
with:
135135
python-version: "3.14"
136136
- run: python .github/scripts/check_action_pins.py
@@ -143,10 +143,10 @@ jobs:
143143
# `::warning::` if src/ is touched without tests/.
144144
if: github.event_name == 'pull_request'
145145
steps:
146-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
146+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
147147
with:
148148
fetch-depth: 0 # full history so the diff resolves
149-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
149+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
150150
with:
151151
python-version: "3.14"
152152
- run: python .github/scripts/check_tests_present.py
@@ -158,8 +158,8 @@ jobs:
158158
# line cites a `#NNN` ticket; closed cites warn (or fail under
159159
# ASPIRATIONAL_STRICT=1). GITHUB_TOKEN enables ticket-state lookup.
160160
steps:
161-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
162-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
161+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
162+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
163163
with:
164164
python-version: "3.14"
165165
- env:
@@ -173,8 +173,8 @@ jobs:
173173
# interfaces. The audit checks shape (presence + min 200 bytes) and
174174
# structure (`## Key interfaces` heading). No exemption mechanism.
175175
steps:
176-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
177-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
176+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
177+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
178178
with:
179179
python-version: "3.14"
180180
- run: python .github/scripts/check_src_readmes.py
@@ -183,7 +183,7 @@ jobs:
183183
name: Frontend Build
184184
runs-on: ubuntu-latest
185185
steps:
186-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
186+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
187187
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
188188
with:
189189
node-version: "24"
@@ -198,7 +198,7 @@ jobs:
198198
# enjoys (ruff + mypy + pytest); the Frontend Build job above validates
199199
# the bundler output, this one validates source quality.
200200
steps:
201-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
201+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
202202
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
203203
with:
204204
node-version: "24"
@@ -217,9 +217,9 @@ jobs:
217217
# .github/branch-protection/*.json contexts arrays disagree with the
218218
# actual workflow jobs on disk.
219219
steps:
220-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
220+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
221221
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
222-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
222+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
223223
with:
224224
python-version: "3.14"
225225
- run: uv sync --frozen --extra dev
@@ -233,9 +233,9 @@ jobs:
233233
# Adding a type in one but not the other would mean commits pass locally
234234
# while PR titles fail in CI (or vice versa).
235235
steps:
236-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
236+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
237237
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
238-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
238+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
239239
with:
240240
python-version: "3.14"
241241
- run: uv sync --frozen --extra dev

.github/workflows/codeql.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
- language: javascript-typescript
4242
build-mode: none
4343
steps:
44-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
44+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
4545

4646
- name: Initialize CodeQL
4747
uses: github/codeql-action/init@v4

.github/workflows/eval-nightly.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,9 @@ jobs:
4545
name: Run golden QA dataset
4646
runs-on: ubuntu-latest
4747
steps:
48-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
48+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
4949
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
50-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
50+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
5151
with:
5252
python-version: ${{ inputs.python_version || '3.14' }}
5353
- run: uv sync --frozen --extra dev --extra eval

.github/workflows/pin-freshness-audit.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ jobs:
3434
name: Pin freshness audit
3535
runs-on: ubuntu-latest
3636
steps:
37-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
38-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
37+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
38+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
3939
with:
4040
python-version: "3.14"
4141

.github/workflows/release.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ jobs:
2727
# Actions are SHA-pinned because this workflow has elevated permissions
2828
# (contents: write + packages: write). Bump SHAs with the # vX.Y.Z
2929
# annotation when a new release lands and you've reviewed the diff.
30-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
30+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
3131

3232
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
3333

34-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
34+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
3535
with:
3636
python-version: "3.14"
3737

@@ -65,7 +65,7 @@ jobs:
6565
.
6666
6767
- name: Log in to GHCR
68-
uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9 # v3
68+
uses: docker/login-action@650006c6eb7dba73a995cc03b0b2d7f5ca915bee # v4
6969
with:
7070
registry: ghcr.io
7171
username: ${{ github.actor }}

.github/workflows/security.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
name: Secret scan (gitleaks)
2424
runs-on: ubuntu-latest
2525
steps:
26-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
26+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
2727
with:
2828
fetch-depth: 0 # full history so gitleaks can scan every commit
2929
# Install and run the binary directly — the v2 action attempts to upload
@@ -43,9 +43,9 @@ jobs:
4343
name: Python deps (pip-audit)
4444
runs-on: ubuntu-latest
4545
steps:
46-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
46+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
4747
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
48-
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
48+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
4949
with:
5050
python-version: "3.14"
5151
- run: uv sync --frozen --extra dev
@@ -71,7 +71,7 @@ jobs:
7171
name: Frontend deps (npm audit)
7272
runs-on: ubuntu-latest
7373
steps:
74-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
74+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
7575
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
7676
with:
7777
node-version: "24"
@@ -87,7 +87,7 @@ jobs:
8787
runs-on: ubuntu-latest
8888
# Blocking: any fixable HIGH/CRITICAL CVE in the built image fails the PR.
8989
steps:
90-
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
90+
- uses: actions/checkout@93cb6efe18208431cddfb8368fd83d5badbf9bfd # v5
9191
- name: Build image
9292
run: docker build -t harness-python-react:ci .
9393
- name: Run Trivy vulnerability scanner

0 commit comments

Comments
 (0)