Skip to content

ci: make local-ci the merge gate and cut Actions CI to one PR-only job - #129

Merged
idapixl merged 1 commit into
masterfrom
ci/lean-shape-local-ci
Sep 28, 2026
Merged

idapixl merged 1 commit into
masterfrom
ci/lean-shape-local-ci

Conversation

@idapixl

@idapixl idapixl commented Sep 28, 2026

Copy link
Copy Markdown
Collaborator

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 and npm audit --audit-level=high in a throwaway worktree of the PR head, then posts a local-ci commit status. It uses Node 22 type stripping, so there's no new dependency.
  • ci.yml: one job on non-draft PRs + 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.
  • docker-publish.yml: master/tag pushes still publish images. PR builds (~4 min multi-arch) now run only when Dockerfile, .dockerignore or the package manifests change, and never on drafts.
  • CONTRIBUTING and CLAUDE.md now describe the new gate.

The classic branch protection that required Type Check is being replaced by a master ruleset: PR required, local-ci required (strict), no force-push, no deletion, no bypass.

local-ci passed on b48da52: tsc clean, 431/431 tests, 0 vulnerabilities.

🤖 Generated with Claude Code

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>
@idapixl
idapixl merged commit bd4ee51 into master Sep 28, 2026
9 checks passed
@idapixl
idapixl deleted the ci/lean-shape-local-ci branch September 28, 2026 21:48
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