Skip to content

Kit: third-party actions float on their major tag; the reusables stay SHA-pinned - #55

Merged
mcarter-astronautdev merged 3 commits into
mainfrom
kit/float-action-majors
Sep 10, 2026
Merged

mcarter-astronautdev merged 3 commits into
mainfrom
kit/float-action-majors

Conversation

@mcarter-astronautdev

Copy link
Copy Markdown
Member

Ends the class of drift foundrae-blackridge #174 showed: a SHA in templates/ is a pin nothing bumps (Dependabot scans .github/workflows/ only) while a fleet repo's Dependabot bumps its deployed copy when the action releases, so the fleet always ran ahead of the kit and each wave rolled it back.

  • Kit workflows (claude.yml, lint.yml, shopify-tool-smoke.yml) — actions/checkout@v7, actions/upload-artifact@v7, anthropics/claude-code-action@v1. Dependabot leaves a major-tag ref alone until a new major exists; Anthropic re-points v1 on every release. The rationale comment in claude.yml states the marginal supply-chain cost honestly (the CLI install is already unpinned from the same vendor).
  • Kit dependabot.yml — ignores minor/patch bumps of anthropics/claude-code-action, closing the reported edge where Dependabot bumps a major-tag ref to a patch anyway. Majors still flow.
  • Reusables — untouched; they keep SHA pins and this repo's Dependabot handles them.
  • Docs — the convention's live statements updated in place (CLAUDE.md invariant, README "Template pins are manual", the audit's normalization note, fleet-operations, the kit README, HANDOFF watch-items, the conversion scope doc's "secondary win").

Kit-only change; ships as its own tag and wave so it reaches the fleet now rather than with the next reusable change.

… SHA-pinned

A SHA in templates/ is a pin nothing bumps (Dependabot scans .github/workflows/ only) while
every fleet repo's Dependabot bumps its deployed copy the day a release ships, so the fleet
always ran ahead of the kit and each wave rolled it back (foundrae-blackridge #174). The CLI
binary already floats to current stable at every run, so a pinned action wrapper bought no
supply-chain safety the CLI download had not already given away.
…p the forward-dated tag, update HANDOFF and the two docs the first pass missed; ignore minor/patch bumps of the action in the kit's Dependabot block
SHOPIFY_STORE_NAME: ""
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@v7

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔴 Critical github/claude.yml:129

Using the mutable actions/checkout@v7 tag allows a future retagged or compromised release to execute before the privileged job with persisted write-capable GITHUB_TOKEN permissions, enabling arbitrary pushes or PR creation. Keep the audited commit SHA and update it deliberately.

Suggested change
- uses: actions/checkout@v7
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @templates/github/claude.yml around line 129:

Using the mutable `actions/checkout@v7` tag allows a future retagged or compromised release to execute before the privileged job with persisted write-capable `GITHUB_TOKEN` permissions, enabling arbitrary pushes or PR creation. Keep the audited commit SHA and update it deliberately.

Evidence trail:
Repository: https://github.com/DriverDigital/workflows
Reviewed commit: caf93c1c
File: templates/github/claude.yml lines 111-139, 129 specifically
Merge-base diff: templates/github/claude.yml changes `actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1` to `actions/checkout@v7`
Official documentation: https://github.com/actions/checkout/blob/main/README.md?plain=1 (default token, persist-credentials, authenticated Git commands)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Assessed and kept as a floating tag, deliberately (Maria, 2026-09-10; now applied to every third-party action in the reusables as well, 7e4a417). The finding is right about what a SHA pin defends against: a retagged or compromised v7 on the step that runs first with a write-capable token. The policy behind this change is that the fleet's action refs stay current without a commit anywhere and without per-patch discrepancies between 20 repo branches; a breaking change is fixed after the fact rather than every patch being shepherded fleet-wide. On the residual risk: actions/checkout is GitHub-owned and its tags are moved by GitHub's own release process, and this job already trusts GitHub's runner image and token service entirely; the Anthropic action sits beside an install step that already fetches the CLI unpinned from the same vendor. The rationale comment in templates/github/claude.yml records the trade, including that the SHA covered one of two channels into the job. The kit's Dependabot block ignores minor/patch bumps so a floating ref cannot be silently rewritten into a pinned patch.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Acknowledged—the risk is accepted intentionally, though the mutable checkout reference remains. Would you like me to prepare the SHA pin instead?

@macroscopeapp

macroscopeapp Bot commented Sep 10, 2026

Copy link
Copy Markdown

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This PR replaces audited action SHAs with mutable major tags and suppresses minor/patch Dependabot PRs, allowing future third-party releases to reach privileged workflows automatically. The change affects supply-chain and credential exposure in fleet templates, warranting human review.

Not approved because:

  • 1 blocking correctness issue found at or above your repo's Minimum Blocking Severity

Adjust the Minimum Blocking Severity for this repo — including turning it Off — in Settings. You can add or adjust custom eligibility rules. Learn more.

@mcarter-astronautdev

Copy link
Copy Markdown
Member Author

Approvability: not approved on risk; correctness check passed. The one finding (mutable actions/checkout@v7) is assessed and answered in its thread — kept as a floating tag by Maria's decision (majors-only policy, 2026-09-10). Merged under her release instruction; the wave is dry-run and canaried on vite-plugin-shopify-clean before the fleet, and tools/fleet-pin-audit.sh --stale gates the result.

@mcarter-astronautdev
mcarter-astronautdev merged commit ff3ff34 into main Sep 10, 2026
5 checks passed
@mcarter-astronautdev
mcarter-astronautdev deleted the kit/float-action-majors branch September 10, 2026 19:23
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