Skip to content

Commit c90b02b

Browse files
fix(ci): version-faithful replacement of fake action SHA pins (#48)
## Summary Replaces fake action SHA pins with version-faithful real SHAs. Each fake here is a partial-prefix corruption of a real version's SHA — the author intended a specific version (per the `# vX.Y.Z` comment) but the suffix was fabricated. The fix restores author intent rather than blindly bumping. This matters for actions where check-name reporting can differ between major versions (CodeQL especially) — preserving the major version preserves any branch-protection contexts referencing check names. ## Replacement table Only substitutions where the fake SHA was actually present in this repo's workflows were applied; the diff shows exactly what changed. | Action | Version intent | Real SHA | |---|---|---| | `goto-bus-stop/setup-zig` | v2.2.1 | `abea47f85e598557f500fa1fd2ab7464fcb39406` | | `erlef/setup-beam` | v1.24.0 / v1.19.0 / v1.18.2 | per-pin (see diff) | | `denoland/setup-deno` | v2.0.4 / v2.0.2 / v1.1.4 | per-pin | | `haskell-actions/setup` | v2.11.0 | `cd0d9bdd65b20557f41bea4dbe43d0b5fbbfe553` | | `actions/upload-artifact` | v4.6.2 | `ea165f8d65b6e75b540449e92b4886f43607fa02` | | `actions/setup-node` | v4.4.0 / v4.2.0 | per-pin | | `trufflesecurity/trufflehog` | v3.95.3 / v3.82.13 / v3.63.6 | per-pin | | `github/codeql-action/*` | v3.36.0 / v3.31.10 / v3.28.0 / v4.36.0 | per-pin (major preserved) | | `Swatinem/rust-cache` | v2.7.8 | `9d47c6ad4b02e050fd481d890b2ea34778fd09d6` | | `gitleaks/gitleaks-action` | v2.3.7 | `83373cf2f8c4db6e24b41c1a9b086bb9619e9cd3` | All real SHAs verified via `gh api repos/<org>/<action>/commits/<sha>`. ## Provenance Estate audit 2026-05-30 found 67 fake action SHA pins across ~50 repos via gh-api 422 verification of 372 unique pins. Round-1 (16 repos) swept the 4 widespread template-comment fakes; this PR is part of round-2 covering the long-tail single/few-repo fakes. Full audit data at `~/Documents/estate-fake-shas-2026-05-30.tsv`. ## Test plan - [ ] Diff shows only fake-SHA → real-SHA substitutions in `.github/workflows/*.yml` - [ ] No major version changes (same X in `vX.Y.Z`); check-name reporting unchanged - [ ] Action steps that previously 422'd now resolve correctly
1 parent 3884f1d commit c90b02b

2 files changed

Lines changed: 9 additions & 9 deletions

File tree

.github/workflows/ci.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
2222

2323
- name: Setup Node.js
24-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
24+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
2525
with:
2626
node-version: '20'
2727

@@ -38,7 +38,7 @@ jobs:
3838
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
3939

4040
- name: Setup Node.js
41-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
41+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
4242
with:
4343
node-version: '20'
4444
cache: 'npm'
@@ -64,7 +64,7 @@ jobs:
6464
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
6565

6666
- name: Setup Node.js
67-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
67+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
6868
with:
6969
node-version: '20'
7070
cache: 'npm'
@@ -86,7 +86,7 @@ jobs:
8686
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
8787

8888
- name: Setup Node.js
89-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
89+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
9090
with:
9191
node-version: '20'
9292
cache: 'npm'
@@ -118,7 +118,7 @@ jobs:
118118
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
119119

120120
- name: Setup Node.js
121-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
121+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
122122
with:
123123
node-version: '20'
124124
cache: 'npm'
@@ -146,7 +146,7 @@ jobs:
146146
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
147147

148148
- name: Setup Node.js
149-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
149+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
150150
with:
151151
node-version: '20'
152152

@@ -188,7 +188,7 @@ jobs:
188188
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
189189

190190
- name: Setup Node.js
191-
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c483a26c6c # v4.2.0
191+
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
192192
with:
193193
node-version: '20'
194194
cache: 'npm'

.github/workflows/rescript-deno-ci.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
contents: read
1313
steps:
1414
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
15-
- uses: denoland/setup-deno@9db7efd2d8d10d73081f64624f472263a3d12f20 # v1.1.4
15+
- uses: denoland/setup-deno@041b854f97b325bd60e53e9dc2de9cb9f9ac0cba # v1.1.4
1616
with:
1717
deno-version: v1.x
1818

@@ -42,7 +42,7 @@ jobs:
4242
contents: read
4343
steps:
4444
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v4.1.1
45-
- uses: denoland/setup-deno@9db7efd2d8d10d73081f64624f472263a3d12f20 # v1.1.4
45+
- uses: denoland/setup-deno@041b854f97b325bd60e53e9dc2de9cb9f9ac0cba # v1.1.4
4646

4747
- name: Check permissions
4848
run: |

0 commit comments

Comments
 (0)