Skip to content

fix(ci): adopt Actions dependency lockfile (unblocks repo-wide startup_failure) - #46

Merged
hyperpolymath merged 4 commits into
mainfrom
ci/actions-lockfile
Aug 3, 2026
Merged

hyperpolymath merged 4 commits into
mainfrom
ci/actions-lockfile

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Why

Every workflow run in this repo has been startup_failure since ~2026-07-30 — part of the estate-wide outage (54/110 active repos) root-caused on 08-03 to GitHub's new workflow-lockfile enforcement. The board was 16/16 green on 07-28; no repo content broke it.

What

Ran gh actions-lock (GitHub's sanctioned fix, Technical Preview):

  • New .github/workflows/actions.lock pinning all 14 distinct actions to exact commits, incl. the transitive upload-artifact inside upload-pages-artifact (unreachable by inline pinning), with numeric owner_id/repo_id (immune to repo-rename hijack).
  • Inline uses: action@<sha> # vX → @vX.Y.Z tags: pin authority moves to the lockfile, which the runner enforces. Diffs stay readable; tampered refs are caught pre-run.
  • Exposed one lying pin comment: setup-beam@54075bc was labelled # v1.18.2, but that SHA is actually v1.24.1. Same commit, corrected label.
  • Cross-repo hyperpolymath/standards reusables keep their existing SHA pins (lockfile does not scope reusable workflow calls).

This PR is itself the test

If checks on this PR execute (pass or fail) instead of startup_failure, the root cause is confirmed fixed and this is the template for the other ~53 dead repos. Note: the Workflow security lint may flag the tag-style refs — if so, that's a linter-policy follow-up, not a reason to keep the outage.

🤖 Generated with Claude Code

… startup_failure)

Every workflow run since ~07-30 dies at startup_failure: GitHub's new
workflow-lockfile enforcement rejects workflows with no actions.lock.
This adopts the sanctioned fix via `gh actions-lock`:

- new .github/workflows/actions.lock pinning every action (and the
  transitive upload-artifact inside upload-pages-artifact) to an exact
  commit, plus numeric owner/repo IDs (rename-hijack proof)
- inline `uses: action@<sha> # vX` refs rewritten to `@vX.Y.Z` tags;
  the SHA authority now lives in the lockfile, which the runner enforces
- exposes one lying pin comment: setup-beam@54075bc was labelled
  v1.18.2 but that SHA is v1.24.1 — same commit, corrected label
- cross-repo standards reusables keep their existing SHA pins (out of
  lockfile scope)

Pilot for the estate-wide outage (54/110 repos affected).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@gitar-bot

gitar-bot Bot commented Aug 3, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ✅ Approved

Adopts the GitHub Actions dependency lockfile to resolve repo-wide workflow startup failures caused by enforcement policy changes. No issues found.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Important

Your trial ends in 7 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

@gitar-bot
gitar-bot Bot enabled auto-merge (squash) August 3, 2026 18:24
gitar-bot[bot]
gitar-bot Bot previously approved these changes Aug 3, 2026

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR and enabled auto-merge (configure)

mirror.yml and secret-scanner.yml set timeout-minutes on jobs that
`uses:` a reusable workflow — an illegal key that rejects the whole
file ("Invalid workflow file ... Unexpected value 'timeout-minutes'").
Both were latent parse-kills masked by the repo-wide lockfile outage;
the lockfile fix on this branch unmasked them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath and others added 2 commits August 3, 2026 19:25
gh actions-lock inserts its managed-by comment as line 1, pushing the
SPDX header to line 2 — the Workflow security lint requires SPDX as
the first line. Reorder in all 24 workflows; the locker's check mode
accepts the marker on line 2.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
With actions.lock present, pin authority lives in the lockfile, so the
inline 40-hex grep now false-fails every tag-style ref. Teach the check
the lockfile model: verify action coverage via `gh actions-lock
--verify-local` (offline), and keep the inline SHA requirement only for
cross-repo reusable workflow calls, which the lockfile does not scope.
Repos without a lockfile keep the original inline-SHA check.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@sonarqubecloud

sonarqubecloud Bot commented Aug 3, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@hyperpolymath
hyperpolymath merged commit 5fbef12 into main Aug 3, 2026
19 of 20 checks passed
@hyperpolymath
hyperpolymath deleted the ci/actions-lockfile branch August 3, 2026 18:33
hyperpolymath added a commit that referenced this pull request Aug 3, 2026
Completes the revival begun in #46: the five standards-reusable callers
(Governance, Hypatia scan, Secret scan, Mirror, Scorecard) were still
`startup_failure` because enforcement requires a lockfile in the
**called** repo at the pinned ref, and `d135b05` predates standards'
`actions.lock` (standards#570). This re-pins all five to `5a597720` and
aligns caller permission grants with the reusables' current demands
(`actions: read` added; scorecard's job-level block carries the full
union since job blocks replace top-level).

If these five execute on this PR (or on main post-merge for the
push-only ones), haec is the first estate repo fully through both
lockfile stages — proving the consumer half of the template.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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