Skip to content

ci: pin actions to SHAs, add Dependabot and actionlint, update to TypeScript 7 - #12

Merged
danjdewhurst merged 2 commits into
mainfrom
chore/ci-hardening-and-toolchain
Nov 1, 2026
Merged

danjdewhurst merged 2 commits into
mainfrom
chore/ci-hardening-and-toolchain

Conversation

@danjdewhurst

Copy link
Copy Markdown
Contributor

Summary

Follow-up hardening from the repo review.

  • Pinned actions. Every third-party action now uses a full commit SHA with a version comment. The release job holds an OIDC token that can publish to npm, PyPI and crates.io, so a moved or compromised tag must not change the code that runs there.
  • Dependabot. New .github/dependabot.yml for GitHub Actions (grouped), npm (dev minor/patch grouped) and Cargo, weekly. It keeps the SHA pins and dependencies current. Dependabot alerts, security updates, secret scanning and push protection are now enabled in the repo settings.
  • actionlint in CI. Workflow changes are otherwise only fully exercised on a real release. actionlint is installed through mise (.mise.toml).
  • TypeScript 7 and @types/node 26. TypeScript 7 no longer loads every @types package by default, so tsconfig.json now sets "types": ["node"].

Testing

  • npm run check passes locally (Biome, TS build and tests, Rust fmt/clippy/tests, generated files, Python tests).
  • actionlint passes locally with shellcheck.
  • npm pack --dry-run still includes dist/*.js and dist/*.d.ts.

🤖 Generated with Claude Code

danjdewhurst and others added 2 commits November 1, 2026 23:00
- Pin every third-party action to a full commit SHA with a version comment.
  The release job holds an OIDC token for npm, PyPI and crates.io, so a
  moved tag must not be able to change the code that runs there.
- Add a Dependabot config for GitHub Actions, npm and Cargo, so the pins
  and dependencies stay current.
- Run actionlint in CI. It is installed through mise.
- Update to TypeScript 7 and @types/node 26. TypeScript 7 no longer loads
  every @types package by default, so tsconfig lists "node" in "types".

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Install actionlint only in the CI check job, through the aqua backend.
  The mise short name is deprecated, and the release and native-binary
  jobs do not need the tool.
- Fail CI when a third-party action is not pinned to a commit SHA.
- Do not persist the write-scoped token in the release job checkout.
- Add a 7-day Dependabot cooldown, and keep major action updates out of
  the grouped PR.
- Document the workflow checks in AGENTS.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@danjdewhurst
danjdewhurst merged commit 062f55e into main Nov 1, 2026
6 checks passed
@danjdewhurst
danjdewhurst deleted the chore/ci-hardening-and-toolchain branch November 1, 2026 23:07
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