Commit a74d33d
authored
fix(ci): SHA-pin pages.yml actions and refresh stale standards reusable pins (#293)
Clears the **last two red `governance` jobs**. Follow-up to #292 —
opened as a new PR off `main` per this repo's squash-merge convention
(`.claude/CLAUDE.md`), not as extra commits on the merged branch.
Every fix was replicated locally against the **real** gate script before
pushing.
## Why these only surfaced now
`governance` has 10 jobs. BROKEN-M1 (`allowed_actions: selected` + empty
`patterns_allowed`) made the whole workflow `startup_failure` with
**zero jobs**, so all 10 were invisible. With the policy set to `all`, 8
report green and these 2 report honestly. #292 then cleared the SPDX arm
and the retired-workflow rule, revealing what sat behind them.
## 1 · `Workflow security linter` — action pinning
`pages.yml` held the only **4 tag-ref `uses:`** in the repo (out of 66).
It had **never actually run** — its one and only run was the BROKEN-M1
`startup_failure` — so no linter had ever inspected it.
| Action | Pinned to | Change |
|---|---|---|
| `actions/checkout` | `de0fac2e` (v6.0.2) | v4 → v6.0.2, matching the
pin **41 other workflows here already use** |
| `actions/upload-pages-artifact` | `56afc609` (v3.0.1) | pin-only —
exactly what `@v3` resolves to today |
| `actions/deploy-pages` | `d6db9016` (v4.0.5) | pin-only — exactly what
`@v4` resolves to today |
Two are pure pins with no behaviour change. `checkout` moves for repo
consistency; worth flagging that `pages.yml` is the **only container
job** here, so this is the first time that pin runs inside
`idris2-pack`.
Preconditions verified before pinning a never-run workflow green:
`hyperpolymath/ddraig-ssg` is public with `Ddraig.idr` at root, and
Pages is `build_type=workflow` on `boj-server.net`.
## 2 · `Check Workflow Staleness` — reusable pin recency
The gate allows *≤50 commits behind standards HEAD **OR** ≤14 days old*.
`d135b05` was **75 commits / 26 days** behind — outside on both arms.
Refreshed to `8813ecf`.
Scoped to exactly the two reusables the gate names.
`check-workflow-staleness.sh` inspects only `governance-reusable`,
`hypatia-scan-reusable` and `scorecard-reusable` — which is why
**`mirror.yml` sits at the same `d135b05` and was not flagged**. It is
left alone deliberately rather than swept along.
### Evidence, not assumption
**`governance-reusable`** — identical 10 jobs before and after, so no
new required check appears. The three gates whose behaviour changes were
each run locally against this tree:
| Gate | Result |
|---|---|
| Guix primary / Nix fallback | **PASS** — `guix.scm` present, so the
Nix fallback (and the absent `flake.nix`) is moot |
| Code quality + docs | **PASS** — README + LICENSE + CONTRIBUTING all
present |
| banned languages (+ new Groovy) | **0** tracked `.groovy`/`.gradle`
files |
Both gates fetch their scripts from `standards@main` rather than from
the pin, so these are the scripts CI will actually run.
**`scorecard-reusable`** — the entire `d135b05..8813ecf` diff is an SPDX
correction (`PMPL-1.0-or-later` → `MPL-2.0`) plus `timeout-minutes: 15`.
Called out explicitly because `scorecard.yml` has **no `pull_request`
trigger**, so this PR's checks do *not* exercise it. The diff is the
evidence; its first real run is the next push to `main`.
## Local verification
- `check-workflow-staleness.sh` → **exit 0**
- 66/66 `uses:` SHA-pinned
- 25/25 workflows carry SPDX + top-level `permissions:`
- all 25 parse as YAML
## Not in scope
`SonarQube` and `Hypatia` fail independently of these changes; triaged
separately.
🤖 Generated with [Claude Code](https://claude.com/claude-code)1 parent e54b17a commit a74d33d
4 files changed
Lines changed: 7 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
18 | 18 | | |
19 | 19 | | |
20 | 20 | | |
21 | | - | |
| 21 | + | |
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
45 | | - | |
| 45 | + | |
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| |||
55 | 55 | | |
56 | 56 | | |
57 | 57 | | |
58 | | - | |
| 58 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
36 | | - | |
| 36 | + | |
0 commit comments