chore: scaffold, CI, and the export bundle verbatim

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>
This commit is contained in:
MechaCat02
2026-09-08 19:11:40 +02:00
commit b80deb2f6f
22 changed files with 7984 additions and 0 deletions

37
tsconfig.json Normal file
View File

@@ -0,0 +1,37 @@
{
"compilerOptions": {
"target": "ES2022",
"lib": ["ES2022", "DOM", "DOM.Iterable"],
"module": "ESNext",
"moduleResolution": "bundler",
"types": ["node", "vite/client"],
"strict": true,
"noUncheckedIndexedAccess": true,
"noImplicitOverride": true,
"noFallthroughCasesInSwitch": true,
"exactOptionalPropertyTypes": false,
"jsx": "react-jsx",
"resolveJsonModule": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"skipLibCheck": true,
"esModuleInterop": true,
"allowJs": true,
"checkJs": false,
"noEmit": true,
// lib/ ships unchanged; its types live alongside in types/lib/.
// Vite resolves the same specifiers to the real .js modules.
"baseUrl": ".",
"paths": {
"@lib/*": ["./types/lib/*"],
"@data/*": ["./data/*"],
"@app/*": ["./app/src/*"],
"@shared/*": ["./types/shared/*"]
}
},
"include": ["app/src", "test", "types", "app/vite.config.ts", "vitest.config.ts"],
"exclude": ["node_modules", "dist", "export", "vendor", "android", "app/android"]
}