Skip to content

ci: SHA-pin the four unpinned actions in pages.yml (missed the #123 merge)#128

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/pages-sha-pins
Jul 21, 2026
Merged

ci: SHA-pin the four unpinned actions in pages.yml (missed the #123 merge)#128
hyperpolymath merged 2 commits into
mainfrom
fix/pages-sha-pins

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Follow-up to #123. This is the one commit from that branch that missed the merge
#123 was squash-merged at head 120f32d (12:06 UTC); this commit was authored at
12:17 UTC, ten minutes later, so it was never part of the PR and never ran CI.

Main is red on governance / Workflow security linter today purely because of it.

What this fixes

pages.yml was dropped in by the Ddraig SSG mass-rollout (#121) without this repo's
SPDX and SHA-pinning conventions. #123 fixed the missing SPDX header — and that is
exactly what exposed this second defect: the linter exit 1s immediately after its
SPDX/permissions block, so the pin check downstream had never been reached.

ERROR: Found unpinned actions:
  .github/workflows/pages.yml:25  actions/checkout@v4
  .github/workflows/pages.yml:27  actions/checkout@v4
  .github/workflows/pages.yml:44  actions/upload-pages-artifact@v3
  .github/workflows/pages.yml:57  actions/deploy-pages@v4

The SHAs are copied verbatim from casket-pages.yml — the active, already-compliant
Pages workflow in this repo — rather than freshly resolved, so the two Pages workflows
converge on one vetted set instead of diverging into a third.

Side effect worth naming: this also moves upload-pages-artifact v3→v5 and
deploy-pages v4→v5, which is what makes them consistent with casket-pages.yml.
pages.yml is disabled_manually, so there is no runtime risk today — we are
unblocking a linter on a workflow that does not currently run.

Verified locally (reproducing the linter's own grep)

PASS: all root actions SHA-pinned
(no root workflow missing an SPDX header)
all root workflows parse OK

Expected CI on this PR — please read before judging the tick

governance / Workflow security lintershould go green.

governance / Check Workflow Stalenesswill stay red, by design. It is
independent of this change and was already failing on main before #123 existed. Its
three errors are all standards-reusable pin staleness (d7c22711e830, 59 commits / 24d
behind 8813ecf2a841). That refresh is shared across ~54 callers and coordinated
centrally, and there is a standing estate finding that consumers should not be re-pinned
yet. Left to that effort deliberately.

So the Governance workflow will still report failure on this PR. That is the
staleness job, not this fix. Do not read it as "the pin fix didn't work" — check the
per-job conclusions.

Also settled while verifying: the staleness job's "Remove legacy scorecard-enforcer.yml"
line is its generic remediation summary, printed on any failure — not a path
detection. The only copy of that file is in the inert aletheia/.github/workflows/, and
nothing is reaching into it. No action needed there.

🤖 Generated with Claude Code

Fixing the missing SPDX header earlier in this branch advanced the Governance
workflow-security linter *past* its first gate — it `exit 1`s immediately after the
SPDX/permissions block — which uncovered a second defect in the same file that had
been masked all along:

    ERROR: Found unpinned actions:
    .github/workflows/pages.yml:25  actions/checkout@v4
    .github/workflows/pages.yml:27  actions/checkout@v4
    .github/workflows/pages.yml:44  actions/upload-pages-artifact@v3
    .github/workflows/pages.yml:57  actions/deploy-pages@v4

Same root cause as the missing header: pages.yml was dropped in by the Ddraig SSG
mass-rollout (#121) without this repo's SPDX + SHA-pinning conventions.

Pins are copied verbatim from .github/workflows/casket-pages.yml — the active,
already-compliant Pages workflow in this repo — rather than newly chosen, so the two
Pages workflows now agree. That also moves upload-pages-artifact v3 -> v5.0.0 and
deploy-pages v4 -> v5.0.0, which is what makes them consistent.

No runtime risk today: "GitHub Pages (Ddraig SSG)" is disabled_manually, so this
unblocks a linter on a workflow that does not currently run.

Verified: every action under .github/workflows/ is now SHA-pinned (no @vN/@main/@master
remains), and both modified workflows parse as valid YAML.

Note: `governance / Check Workflow Staleness` remains red and is NOT addressed here.
It was already failing on main before this branch existed (run 29688088909) — the
standards reusable pins d7c2271 are 59 commits/24d behind HEAD 8813ecf. That refresh
is shared across all callers and is being coordinated centrally, so it is deliberately
left alone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@hyperpolymath
hyperpolymath marked this pull request as ready for review July 21, 2026 13:06
@hyperpolymath
hyperpolymath merged commit 6a7ca7c into main Jul 21, 2026
12 of 21 checks passed
@hyperpolymath
hyperpolymath deleted the fix/pages-sha-pins branch July 21, 2026 13:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant