Skip to content

Pin the toolchain in mise.toml, pin actions by SHA, add workflow linting - #202

Merged
mainman94 merged 1 commit into
mainfrom
claude/dev-gaps-aug-2026-b6ab73
Sep 6, 2026
Merged

Pin the toolchain in mise.toml, pin actions by SHA, add workflow linting#202
mainman94 merged 1 commit into
mainfrom
claude/dev-gaps-aug-2026-b6ab73

Conversation

@mainman94

Copy link
Copy Markdown
Owner

What

Makes mise.toml the single source of truth for tool versions, pins every GitHub Actions reference to a commit SHA, and adds actionlint + zizmor as pre-commit hooks. Adds CODEOWNERS and the digest-pin preset to renovate.json.

Why

trivy arrived three different ways. An apt repo in .devcontainer/post-create.sh, curl -sfL … | sudo sh pinned to TRIVY_VERSION: v0.74.0 in scan.yml, and whatever was on PATH for make scan locally. Nothing kept those in step, and the CI path executed whatever the fetched installer contained at that moment. Now mise.toml pins trivy (plus python, pre-commit, jq, actionlint, shellcheck); the dev container, the hooks and CI all install from it, and the scan workflow no longer pipes an installer into sudo sh.

Actions floated on moving tags. @v7 can be repointed at new code without the pin changing. All references are now commit SHAs with the tag in a trailing comment; helpers:pinGitHubActionDigests keeps them current so they do not rot into stale pins.

Nothing linted the workflows. actionlint checks schema, expressions and the shell inside run: blocks (using the pinned shellcheck, so workflow shell gets the same treatment as scripts/). zizmor audits for CI/CD security patterns. checkout now sets persist-credentials: false — nothing here pushes.

Checklist

  • make check passes — this PR's run is the first execution of the new setup; the sandbox this was written in has no Docker or pre-commit
  • New stack: n/a, no stack added or changed
  • Backup wiring touched? No
  • No real .env, backup.env or credential in the diff — the diff is tooling, CI and repo configuration only

Note for review

scripts/scan-images.sh is unchanged apart from its "trivy not on PATH" hint, which now points at make tools. The 52 digest-pinned images and every compose file are untouched.

🤖 Generated with Claude Code

https://claude.ai/code/session_01F9MnUHayBCrncnczqMhSVy


Generated by Claude Code

trivy arrived three different ways here: an apt repo in the dev container,
`curl … | sudo sh` in the scan workflow, and whatever was on PATH locally.
mise.toml is now the only place a tool version is written down — python,
pre-commit, trivy, jq, actionlint, shellcheck — and the dev container, the
hooks and CI all install from it. The scan workflow no longer pipes an
installer into sudo sh.

Alongside that:

- Every action reference is pinned to a commit SHA with the tag in a trailing
  comment, so a repointed tag cannot change what CI runs.
  helpers:pinGitHubActionDigests keeps the digests from rotting.
- actionlint and zizmor run over .github/workflows/ as pre-commit hooks.
  actionlint uses the pinned shellcheck for `run:` blocks; zizmor covers the
  CI/CD security patterns — unpinned actions, credential persistence,
  template injection.
- checkout sets persist-credentials: false. Nothing here pushes.
- CODEOWNERS.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01F9MnUHayBCrncnczqMhSVy
@mainman94
mainman94 merged commit 10ff285 into main Sep 6, 2026
2 checks passed
@mainman94
mainman94 deleted the claude/dev-gaps-aug-2026-b6ab73 branch September 6, 2026 05:59
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