universal-exam-cram-coach
Universal Exam Cram Coach — Root Router
This language-neutral router dispatches last-minute exam prep to the chapter-wiki, bank-only, persistent control layer and its wording packs; it is not a duplicate manual.
Language dispatch
Read the canonical, language-neutral study_state.json.language code and load the matching compatibility entry plus its per-skill wording pack BEFORE emitting any student-visible output:
zh(display choice中文) →locales/zh/SKILL.mdplus the selected sub-skill's zh wording pack underlocales/zh/skills/en(display choiceEnglish) →locales/en/SKILL.mdplus the selected sub-skill's en wording pack underlocales/en/skills/bilingual(display choice双语) → compose the zh and en wording block by block, with zh first and a> EN:mirror for each block (composition rules indocs/language-policy.md)
中文, English, and 双语 remain accepted user-facing input aliases. On first contact one combined ask sets mode, budget, and language, then show the independent material-processing choice 轻量按需(推荐) / 完整建库; exam_start.py confirm persists them with the exact workspace/materials receipt. Missing, urgent, accepted-default, and legacy processing choices mean lightweight; only explicit full opens complete ingestion. A later reconfirm with no processing flag preserves an existing canonical choice. Later update_progress.py set --language applies next turn. Default English unless the student opened in Chinese; bilingual is explicit-only.
Control layer (behavior)
Behavior lives in skills/exam-cram/SKILL.md and these subskills: