The export bundle is the input to this port, not a sketch: the curriculum, the tutor prompt and the five logic modules are finished and tested. They land here byte-identical and stay that way. diff -r export/data data && diff -r export/lib lib diff -r export/prompt prompt && diff export/validate.mjs validate.mjs data/, lib/, prompt/ and validate.mjs sit at the repo root so validate.mjs runs verbatim with no path edits. All four are excluded from lint and formatting — they are not ours to restyle. Types for lib/ live alongside in types/ rather than as sibling .d.ts files, so the verbatim check stays a plain directory diff. CI runs the curriculum gate first, before anything else can pass: node validate.mjs PASS — 0 blocking, 0 advisory Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
41 lines
930 B
YAML
41 lines
930 B
YAML
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
|