Skip to content

feat(cli): dispatch the three engines concurrently and merge their findings #484

feat(cli): dispatch the three engines concurrently and merge their findings

feat(cli): dispatch the three engines concurrently and merge their findings #484

Workflow file for this run

name: CI
on:
push:
branches: [main]
# No `branches:` filter, deliberately. Lint, typecheck, and tests have no
# interest in where a PR eventually merges, and filtering on `main` silently
# skipped this workflow on stacked PRs.
#
# The filter matches the PR's base ref, but GitHub also resolves a stacked
# PR's *eventual* target and matches on that — so `branches: [main]` did run
# on PRs based on another branch, until it stopped. Measured on the
# #71→#93→#94→#95→#100→#102→#103→#106 stack: every PR up to #102 got a
# `Validate` run, while #103 and #106 got none, across 16 `pull_request`
# events that other workflows handled fine. A filter that works for six PRs
# and quietly fails on the seventh is worse than one that never worked,
# because nobody re-checks it.
#
# `ready_for_review` is NOT in the default set (opened/synchronize/reopened)
# and must be named: without it a draft marked ready gets no fresh run until
# something happens to push again, which is exactly the state #103 sat in.
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
permissions:
contents: read
jobs:
validate:
name: Validate
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install pnpm
uses: pnpm/action-setup@v6
- name: Setup Node
uses: actions/setup-node@v6
with:
node-version: 24
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Lint
run: pnpm lint
- name: Typecheck
run: pnpm typecheck
- name: Build
run: pnpm build
- name: Test
run: pnpm test
- name: Test workflow scripts
run: node --test .github/scripts/*.test.cjs