Skip to content

fix(ci): adopt the Actions lockfile — every workflow was startup_failure - #40

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/ci-lockfile
Aug 6, 2026
Merged

fix(ci): adopt the Actions lockfile — every workflow was startup_failure#40
hyperpolymath merged 1 commit into
mainfrom
fix/ci-lockfile

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

All 27 workflows here return startup_failure: not failing, never starting.

Workflow-lockfile enforcement is active on this account and this repo had no .github/workflows/actions.lock, so every workflow was rejected before any job was created — no log, no check run, no row in gh pr checks.

It also explains what looked like a separate problem

The branch rules here require CodeQL and openssf-compliance, and neither ever reported — so both appeared to be phantom requirements naming checks that do not exist.

They are not. The rules are correct and every workflow was dead. Rewriting them would have converted "these checks are broken" into "these checks are not required".

The cure, in order

Each step's failure is invisible until the previous one is fixed:

  1. gh actions-lock — generates the lockfile, normalises pins to tags (it also flagged 12 actions pinned to a bare SHA with no tag ref)
  2. Hoist SPDX back to line 1actions-lock puts its banner there and the linter requires SPDX first, so the cure would otherwise redden all 27 files
  3. Hand-author [] lockfile entries for the 6 reusable callers — actions-lock skips callers, so without this they stay startup_failure while everything else goes green
  4. Re-pin those callers to standards bd0df9ead7fa

Verified: all 27 workflows parse, SPDX on line 1 of each, 6 caller entries in the lockfile.

Expect previously-unseen failures. Nothing here has been checked in a long time — the first green run is a starting point, not a result.

Found by the estate CI/CD census (hyperpolymath/standards#583).

🤖 Generated with Claude Code

All 27 workflows here return startup_failure: not failing, never starting.
Workflow-lockfile enforcement is active on this account and this repository had
no .github/workflows/actions.lock, so every workflow was rejected before any
job was created — no log, no check run, and no row in `gh pr checks`.

That also explains what looked like a separate problem. The branch rules here
require `CodeQL` and `openssf-compliance`, and neither ever reported, so both
appeared to be PHANTOM requirements naming checks that do not exist. They are
not: the rules are correct and every workflow was dead. Rewriting them would
have converted "these checks are broken" into "these checks are not required".

Applied the four-step cure proven across this campaign. The order matters
because each step's failure is invisible until the previous one is fixed:

  1. gh actions-lock generates the lockfile and normalises pins to tags.
     (It also reported 12 actions pinned to a bare SHA with no tag ref.)
  2. Hoist SPDX back to line 1 — actions-lock inserts its own banner there and
     the workflow linter requires SPDX first, so the tool that cures the
     startup failures would otherwise redden all 27 workflow files.
  3. Hand-author an empty [] lockfile entry for each of the 6 reusable-workflow
     callers. gh actions-lock SKIPS callers, so without this they remain
     startup_failure while everything else goes green — which reads as a
     partial fix rather than a missing step.
  4. Re-pin those callers to standards bd0df9ead7fa.

Verified: all 27 workflows parse, SPDX is on line 1 of each, and the lockfile
carries 6 caller entries.

EXPECT PREVIOUSLY-UNSEEN FAILURES. Nothing here has been checked in a long
time, so the first green run is a starting point rather than a result.

Found by the estate CI/CD census (hyperpolymath/standards#583), which pairs
what each repository REQUIRES against what it actually EMITS.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Signed-off-by: Jonathan D.A. Jewell <6759885+hyperpolymath@users.noreply.github.com>
@hyperpolymath
hyperpolymath merged commit 9495bdc into main Aug 6, 2026
@hyperpolymath
hyperpolymath deleted the fix/ci-lockfile branch August 6, 2026 09:31
@sonarqubecloud

sonarqubecloud Bot commented Aug 6, 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

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