Skip to content

feat(jme): Phase 3 — temporal filter + vector ceiling + jme-stats #84

feat(jme): Phase 3 — temporal filter + vector ceiling + jme-stats

feat(jme): Phase 3 — temporal filter + vector ceiling + jme-stats #84

Workflow file for this run

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"