feat(jme): Phase 3 — temporal filter + vector ceiling + jme-stats #84
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
| name: ci | |
| # The full test suite (6,600+ tests) previously had ONLY one gate: a machine-local, | |
| # unversioned pre-commit hook that self-skips on non-.ts changes and OOMs this VPS under | |
| # load. Any second machine, fresh clone, or `git -c core.hooksPath=` bypassed it entirely. | |
| # This job is the enforced, reproducible gate. Vitest is sharded to stay under the memory | |
| # ceiling that makes a single `vitest run` OOM. | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| typecheck: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - run: npm ci | |
| - run: npx tsc --noEmit | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2, 3] | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| cache: "npm" | |
| - run: npm ci | |
| - name: vitest (shard ${{ matrix.shard }}/3) | |
| # Video tests require host binaries GitHub runners don't have (snap | |
| # Chromium, edge-tts, ffmpeg) — they had CI red on EVERY push since | |
| # at least 2026-07-11, which (a) spammed failure mail per push and | |
| # (b) killed CI as an instrument: a red gate nobody reads catches | |
| # nothing. They still run locally via the pre-commit hook, where the | |
| # binaries exist. If a video test must gate here, it needs a | |
| # runner-installable substitute first. | |
| run: > | |
| npx vitest run --shard=${{ matrix.shard }}/3 --reporter=dot | |
| --exclude "src/video/**" | |
| --exclude "src/tools/builtin/video.test.ts" | |
| env: | |
| CI: "true" |