ci: make local-ci the merge gate and cut Actions CI to one PR-only job - #129
Merged
Merged
Conversation
The global minutes policy (2026-09-22) makes a `local-ci` commit status the Production-tier merge gate so merges never wait on Actions minutes, but this repo never adopted it: branch protection still required the Actions `Type Check` context, CI ran five jobs on every PR and again on every push to master, and the Docker workflow did a ~4-minute multi-arch build on every PR. - scripts/ci-local.ts + `npm run ci:local`: type check, build, tests and the high-severity audit in a throwaway worktree, then posts `local-ci`. It runs on Node 22's native type stripping, so no tsx dependency. Running it on Windows covers the old windows-latest test leg. - ci.yml: one job on non-draft PRs + workflow_dispatch, no push trigger, concurrency cancel, 10-minute timeout. Node 22 (the engines floor) and Node 24 run as steps rather than separate jobs. - docker-publish.yml: pushes to master and tags still publish images; PR builds only fire for Dockerfile/.dockerignore/package manifest changes on non-draft PRs. - CONTRIBUTING/CLAUDE.md describe the new gate. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the repo in line with the Production-tier CI shape (minutes policy, 2026-09-22).
npm run ci:local -- <branch>(scripts/ci-local.ts) runs type check, build, tests andnpm audit --audit-level=highin a throwaway worktree of the PR head, then posts alocal-cicommit status. It uses Node 22 type stripping, so there's no new dependency.workflow_dispatch. No push-to-master re-run. Node 22 (engines floor) then Node 24 run as steps. Concurrency cancel and a 10-min timeout.The classic branch protection that required
Type Checkis being replaced by amasterruleset: PR required,local-cirequired (strict), no force-push, no deletion, no bypass.local-cipassed on b48da52: tsc clean, 431/431 tests, 0 vulnerabilities.🤖 Generated with Claude Code