Skip to content

ci: adopt GitHub Actions workflow lockfile (unblocks estate-wide startup_failure) - #570

Merged
hyperpolymath merged 3 commits into
mainfrom
lockfile-enforcement-reusables
Aug 3, 2026
Merged

ci: adopt GitHub Actions workflow lockfile (unblocks estate-wide startup_failure)#570
hyperpolymath merged 3 commits into
mainfrom
lockfile-enforcement-reusables

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

GitHub's new workflow-lockfile enforcement kills every run in affected repos with a 0-second startup_failure"Workflow must use a lockfile. Run gh actions pin <workflow-path> to generate one." The banner is visible only on the run's HTML page.

Enforcement follows the call graph: repos calling this repo's reusable workflows (confirmed on my-lang run 30828548623) die because the reusables at the pinned SHA have no lockfile. This PR is therefore the unblock for every affected caller in the estate — callers then re-pin to the post-merge SHA and add their own lockfile.

Generated with gh actions-lock v0.1.6, whole-repo pass over all 38 workflows:

  • adds .github/workflows/actions.lock — every direct and transitive action dep pinned to an immutable commit SHA + content hash
  • rewrites uses: refs from inline SHA pins to readable tags; the SHA now lives in the lockfile and tampered/hijacked actions are caught by hash verification before running
  • dtolnay/rust-toolchain@<sha>@master is behavior-safe: every call site already passes an explicit toolchain: input

⚠️ Ops note: any future action bump (dependabot or manual) requires regenerating the lockfile with gh actions-lock, or runs will die at startup again.

🤖 Generated with Claude Code

GitHub's new workflow-lockfile enforcement kills every workflow run in
affected repos with a 0-second startup_failure ('Workflow must use a
lockfile'). The enforcement follows the call graph: callers of this
repo's reusable workflows (e.g. my-lang) are dying because the reusables
themselves have no lockfile.

Generated with gh actions-lock v0.1.6 (whole-repo pass, 38 workflows):
- adds .github/workflows/actions.lock pinning every direct and
  transitive action dependency to an immutable commit SHA + hash
- rewrites uses: refs from inline SHA pins to the readable tags the
  lockfile resolves (the SHA now lives in the lockfile, and tampering
  is caught by hash verification before the action runs)
- dtolnay/rust-toolchain rewrites to @master are safe: every call site
  already passes an explicit 'toolchain:' input

Note for future dependabot bumps: the lockfile must be regenerated
(gh actions-lock) whenever an action ref changes.

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 workflow lockfile across all 38 repository workflows to unblock estate-wide startup failures caused by enforcement policies. 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)

@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Aug 3, 2026
The signed-push composite pinned Asana/push-signed-commits@6e073ae which
does not exist upstream (the estate's known phantom-SHA class). gh
actions-lock v0.1.6 half-tolerates it: it keys the lockfile entry by the
phantom ref but records the real v1.3 commit (d615ca8) as digest, making
the lockfile fail its own validation ('pin key ref is a full SHA but
commit digest does not match'). Re-pin to the real v1.3 SHA and rebuild;
the lockfile now passes 'gh actions-lock --no-fix' cleanly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ift gate)

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 disabled auto-merge August 3, 2026 18:36
@hyperpolymath
hyperpolymath merged commit 9f6e64f into main Aug 3, 2026
28 of 35 checks passed
@hyperpolymath
hyperpolymath deleted the lockfile-enforcement-reusables branch August 3, 2026 18:36
hyperpolymath added a commit that referenced this pull request Aug 3, 2026
Rebuilt on current main (post-#570). Restores all inline SHA pins,
re-keys actions.lock to SHA form via scripts/relock-sha-keys.py
(digest-matched, subpath-aware; run after every gh actions-lock
regeneration), aligns two mislabeled erlef/setup-beam pins to the real
v1.24.1 SHA, and keeps the $/ local-action migration and managed-by
markers. gh actions-lock --no-fix: valid, zero errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
hyperpolymath added a commit that referenced this pull request Aug 3, 2026
…570) (#571)

#570 merged the tag-form lockfile conversion, which breaks four estate
gates (Mustfile `actions-sha-pinned`, governance workflow linter +
allowlist preflight, hypatia rule — 112 findings) and collides with
`sha_pinning_required`, which is now ON again — main's workflows are
startup-rejected until this lands.

This PR restores the estate doctrine while keeping the lockfile:
- all inline SHA pins restored as before #570 (plus two mislabeled
`erlef/setup-beam` pins aligned to the real v1.24.1 SHA)
- `.github/workflows/actions.lock` re-keyed to SHA form via new
`scripts/relock-sha-keys.py` (run after every `gh actions-lock`
regeneration; digest-matched, subpath-aware)
- step-level local action migrated to the `$/` form the lockfile
requires
- `gh actions-lock --no-fix`: valid, zero errors; fixer is at a fixpoint

**Merge promptly** — main is startup-dead until then.

🤖 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

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant