state-machine
Planning / goal abstraction
Ordered phases, local-date deadlines, and recommendation roles let consumer apps turn progress counts into a clear next track.
Feature showcase
Feature pages combine a real source excerpt, a worked example, and a consumer pattern showing how the core is meant to be used rather than merely imported.
state-machine
Ordered phases, local-date deadlines, and recommendation roles let consumer apps turn progress counts into a clear next track.
state-machine
Concept-level mastery math, spacing, and next-concept selection stay policy-driven so each game can own its own UI and gating rules.
state-machine
Concept-first rep phases — light, hard, and recovery-light — with explicit attempt budgets and selection reasons so apps can teach first, then fade to independent proof.
code-snippet
A coarse 0–100 readiness signal and a six-value phase vocabulary (not_started, learning, practicing, mastered, shaky, tracked_in_quiz) that products can roll up without overclaiming.
consumer-flow
The quiz engine runs a turn through six phases; session and debug helpers let consumer shells persist and force routes deterministically.
code-snippet
Session snapshots carry an optional content identity (questionId, contentId, contentVersion) so a restored turn can be compared honestly against current authored content before it is resumed.
code-snippet
Deterministic cohort resolution, exposure records, and served-question metadata for experimental or LLM-variant questions — so gated content stays visible, auditable, and WF-testable before it reaches learners.
code-snippet
The harness validates static well-formedness across question coverage, payload shape, concept wiring, generator determinism, and scheduler scenarios.
code-snippet
The graph layer projects authored learning structure into Neo4j as a rebuildable read model instead of turning the graph into an operational source of truth.
code-snippet
Questions, concepts, and seeded generators stay minimal so consumer repos can shape content and rendering without fighting a heavyweight framework — with room for a concept-first rubric (disclosure, scaffold-then-fade) above the core types.