Skip to content

[ci] Land #98 on main (harden the CI workflows) - #100

Merged
robinbowes merged 3 commits into
mainfrom
ci/harden-workflows-main
Nov 2, 2026
Merged

robinbowes merged 3 commits into
mainfrom
ci/harden-workflows-main

Conversation

@robinbowes

Copy link
Copy Markdown
Collaborator

Stacked on #99 (base chore/deps-in-range). This repository now deletes merged branches, so GitHub will retarget this PR to main when #99 merges.

Summary

This lands #98 on main. #98 was merged into its stacked base ci/pin-actions rather than main, because that base wasn't deleted on merge. The workflow changes are #98's commit b6ec628, cherry-picked unchanged:

ci.yml           gate: timeout 15 · gitleaks: shell bash (pipefail), curl -f, sha256sum --check before tar
deploy.yml       timeouts 5/5/20/10/20 · staging, production: no `cache: pnpm` · release.tag_name via env
evals.yml        permissions: contents: read · ${SUITE:+"$SUITE"}
kit.yml          permissions: contents: read · timeouts 10/15/20 · unused `ids` output dropped · unfrozen rename install marked intended
notify-plugins   permissions: contents: read · timeout 5 · queued concurrency
plugin-ci.yml    timeouts 10 / 30

The only other changes are:

Evidence

  • jactionlint --online reports 0 findings, and actionlint is clean.
  • pnpm gate passes on Node 26.13.0. Merging main leaves the tree identical to the gated one.
  • [ci] Harden the CI workflows #98 itself was reviewed and green in CI.

Merge Danger

Door: two-way

Blast Radius: CI

The changes that can affect a run are the timeouts and the uncached deploy installs. Merge with a merge commit.

🤖 Generated with Claude Code

robinbowes and others added 3 commits November 2, 2026 17:25
Every job sets timeout-minutes (about 3-5x its slowest observed run).
evals.yml, kit.yml and notify-plugins.yml set permissions: contents:
read; none writes with GITHUB_TOKEN. deploy.yml's staging and production
jobs, which run on tags and releases and ship what they build, no longer
restore the pnpm cache, and the production version step reads
release.tag_name through env instead of splicing it into the script.

ci.yml's gitleaks download runs under bash with pipefail and curl -f,
and checks the tarball's SHA-256 before extracting. evals.yml quotes the
suite filter, notify-plugins.yml queues instead of overlapping, kit.yml
drops an unused job output, and its rename job's unfrozen install, which
the rename's package-name rewrite requires, is marked as intended.

jactionlint --online now reports no findings.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The pin-actions entry said setup-node keeps cache: pnpm, which the
hardening entry below it then removes from the two deploy jobs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from chore/deps-in-range to main November 2, 2026 17:40
@robinbowes
robinbowes merged commit 88cb5e5 into main Nov 2, 2026
4 checks passed
@robinbowes
robinbowes deleted the ci/harden-workflows-main branch November 2, 2026 17:41
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