name: CI on: push: branches: [main] pull_request: workflow_dispatch: jobs: check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # The curriculum gate comes first, before anything else can run. # validate.mjs reads only data/ and lib/ and exits non-zero on a # blocking failure. Baseline: PASS — 0 blocking, 167 advisory. - name: Curriculum validation run: node validate.mjs - uses: actions/setup-node@v4 with: node-version: 22 cache: npm - run: npm ci - name: Typecheck run: npm run typecheck - name: Tests run: npm test # Every word in every unit's words[] must resolve in lemma or surface. # Runs against the committed band files in app/public/dict/. - name: Roadmap word coverage run: npm run dict:assert - name: Build run: npm run build