Skip to content

Commit f60ca3c

Browse files
fix(ci): hypatia self-clean — replace 3 fake action SHA pins (#401)
## Summary Hypatia carried 3 fake SHA pins in its own workflows. Self-clean so hypatia passes its own `:known_fake_action_sha` rule (#397) when scanning itself. ## Substitutions (version-faithful where possible) | Action | Sites | Fake SHA | Real replacement | Version | |---|---|---|---|---| | `Swatinem/rust-cache` | 7 (ci.yml ×4, tests.yml ×3, release.yml ×1) | `ad397744...b8db` | `9d47c6ad4b02e050fd481d890b2ea34778fd09d6` | v2.7.8 (intent preserved) | | `haskell-actions/hlint-run` | 1 (ci.yml) | `75c62c3b...6ce2` | `0b0024319753ba0c8b2fa21b7018ed252aed8181` | v2.4.9 (intent preserved) | | `haskell-actions/hlint-setup` | 1 (ci.yml) | `17f0f409...ddfa` | `fe9cd1cd1af94a23900c06738e73f6ddb092966a` | **v2.4.10 (bumped — original `# v2.7.0` was doubly fictional)** | ### Note on hlint-setup The original `haskell-actions/hlint-setup@17f0f4093d35cfdbf02aab186d51d0bb8b92ddfa # v2.7.0` was fake at TWO levels: the SHA doesn't exist, AND the version `v2.7.0` was never released. `hlint-setup`'s tag history only goes up to v2.4.10. Bumped to v2.4.10 (current latest) rather than try to preserve a version that never existed. ## Verification All three real SHAs return 200 from `gh api repos/<org>/<action>/commits/<sha>`. Verified pre-commit. ## Why one PR for both action families The round-2 estate sweep in flight (~46 repos, version-faithful substitution map) handles `rust-cache@ad397744...` but NOT `hlint-run`/`hlint-setup` — those aren't in the substitution map. Filing both fixes in one PR for hypatia means: 1. Hypatia is fully self-clean immediately (passes its own rule) 2. When the in-flight sweep reaches hypatia, it'll see `corrected_not_emitted` (no-op) — clean handoff 3. No leftover hlint fixes deferred to a separate PR ## Provenance Estate audit 2026-05-30 found 67 fake action SHA pairs; the in-flight round-2 sweep handles 26 substitutions across 46 repos; ~25 niche single-repo fakes including hlint were documented as deferred. This PR moves the 2 hlint fakes from "deferred" to "done" since they're in hypatia's own repo and there's symbolic value to hypatia being self-clean. See `project_estate_fake_action_sha_punch_list_2026_05_30.md` for the full substitution map context. ## Test plan - [ ] `gh api` returns 200 for all 3 new SHAs (verified) - [ ] No remaining fake-SHA occurrences in hypatia's workflows (verified via grep) - [ ] CI passes (rust-cache + hlint behaviour is identical, just real SHAs)
1 parent 822740d commit f60ca3c

3 files changed

Lines changed: 9 additions & 9 deletions

File tree

.github/workflows/ci.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
components: clippy, rustfmt
4141

4242
- name: Setup Rust cache
43-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
43+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
4444
with:
4545
workspaces: ". -> target"
4646
cache-on-failure: true
@@ -81,7 +81,7 @@ jobs:
8181
toolchain: stable
8282

8383
- name: Setup Rust cache
84-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
84+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
8585
with:
8686
workspaces: ". -> target"
8787
cache-on-failure: true
@@ -112,7 +112,7 @@ jobs:
112112
tool: cargo-llvm-cov
113113

114114
- name: Setup Rust cache
115-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
115+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
116116
with:
117117
workspaces: ". -> target"
118118
cache-on-failure: true
@@ -196,12 +196,12 @@ jobs:
196196
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
197197

198198
- name: Setup HLint
199-
uses: haskell-actions/hlint-setup@17f0f4093d35cfdbf02aab186d51d0bb8b92ddfa # v2.7.0
199+
uses: haskell-actions/hlint-setup@fe9cd1cd1af94a23900c06738e73f6ddb092966a # v2.4.10
200200
with:
201201
version: '3.8'
202202

203203
- name: Run HLint
204-
uses: haskell-actions/hlint-run@75c62c3bed4ab3e4c85c64ed8f287478c5f86ce2 # v2.4.9
204+
uses: haskell-actions/hlint-run@0b0024319753ba0c8b2fa21b7018ed252aed8181 # v2.4.9
205205
with:
206206
path: registry/
207207
fail-on: warning

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ jobs:
9393
targets: ${{ matrix.target }}
9494

9595
- name: Setup Rust cache
96-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
96+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
9797
with:
9898
workspaces: ". -> target"
9999
key: ${{ matrix.target }}

.github/workflows/tests.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ jobs:
224224
toolchain: stable
225225

226226
- name: Setup Rust cache
227-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
227+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
228228
with:
229229
workspaces: ". -> target"
230230
cache-on-failure: true
@@ -485,7 +485,7 @@ jobs:
485485
tool: cargo-llvm-cov
486486

487487
- name: Setup Rust cache
488-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
488+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
489489
with:
490490
workspaces: ". -> target"
491491

@@ -636,7 +636,7 @@ jobs:
636636
toolchain: stable
637637

638638
- name: Rust cache
639-
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2.7.8
639+
uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6 # v2.7.8
640640
with:
641641
workspaces: ". -> target"
642642
cache-on-failure: true

0 commit comments

Comments
 (0)