name: PR Checks on: pull_request: branches: [main] concurrency: group: pr-checks-${{ github.ref }} cancel-in-progress: true jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: "24" cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Lint run: pnpm lint typecheck: name: Typecheck runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: "24" cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Typecheck run: pnpm typecheck test-shards: name: Test shard ${{ matrix.shard }}/3 runs-on: ubuntu-latest strategy: fail-fast: false matrix: shard: [1, 2, 3] steps: - name: Checkout uses: actions/checkout@v4 - name: Install pnpm uses: pnpm/action-setup@v4 - name: Setup Node.js uses: actions/setup-node@v5 with: node-version: "24" cache: pnpm - name: Install dependencies run: pnpm install --frozen-lockfile - name: Install Bun uses: oven-sh/setup-bun@v2 - name: Test (deterministic shard) run: pnpm test:ci:shard --shard ${{ matrix.shard }} --total 3