Skip to content

Harden CI: pin conformance/install/handoff workflow actions to commit SHAs - #5279

Merged
vivekchand merged 1 commit into
mainfrom
harden/pin-conformance-install-handoff-actions
Aug 28, 2026
Merged

Harden CI: pin conformance/install/handoff workflow actions to commit SHAs#5279
vivekchand merged 1 commit into
mainfrom
harden/pin-conformance-install-handoff-actions

Conversation

@vivekchand

Copy link
Copy Markdown
Owner

What

Pins all 20 action references in three workflow files to full commit SHAs, with the human-readable version kept in a trailing comment.

File Refs pinned
.github/workflows/conformance-heartbeat.yml 7
.github/workflows/install-test.yml 7
.github/workflows/cross-repo-handoff.yml 6
Action Pinned to
actions/checkout (11 refs) 3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
actions/setup-python (7 refs) 5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
actions/upload-artifact (2 refs) 043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1

These are the same three digests already merged into ci.yml by #5275, so this adds no new trust decisions — it extends one already made.

Why

A floating tag is resolved at run time, so whoever can move the tag decides what runs in CI. A digest cannot be moved. This is the OpenSSF Scorecard PinnedDependencies probe.

The trailing # vX.Y.Z comment is the form Dependabot reads, so version bumps keep flowing normally.

Scope

One concern, three files, 20 insertions and 20 deletions — nothing else. No permissions: blocks, job definitions or step logic are touched.

These three files were chosen because every action in them is first-party (actions/*) and already at the major version that the currently-open Dependabot bumps target, so pinning them now cannot conflict with those PRs. Files still holding actions/upload-artifact@v4, actions/download-artifact@v4, azure/login@v2 or softprops/action-gh-release@v2 are deliberately left for after #5154, #5155, #5156 and #5157 land — pinning an old major there would collide with the bump. supply-chain.yml is not touched; it is covered by the open PR #5276.

Verification

  • Every workflow file in the repo parses after the edit, not just the three edited:
    python3 -c "import yaml,glob; [yaml.safe_load(open(f)) for f in glob.glob('.github/workflows/*.yml')]" → OK
  • python3 scripts/check_action_refs.pyFound 22 distinct action reference(s) across the workflows. OK
  • Re-scanned the three files for any remaining tag-form reference → none.

Generated by Claude Code

Pins all 20 action references in conformance-heartbeat.yml,
install-test.yml and cross-repo-handoff.yml to full commit SHAs, keeping
the human-readable version in a trailing comment so Dependabot still
tracks them.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Pw5EDmCUvFQMXbdGXehQm9
@8090-software-factory

Copy link
Copy Markdown

✅ Drift Bot (ClawMetry): no drift detected

Drift Bot analyzed the changed files against this project's blueprints and requirements and found no drift.

@vivekchand
vivekchand merged commit a4b4156 into main Aug 28, 2026
36 checks passed
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.

2 participants