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>
149 lines
2.7 KiB
JSON
149 lines
2.7 KiB
JSON
{
|
|
"classes": [
|
|
{
|
|
"k": "ㅡ",
|
|
"n": "ㅡ drops",
|
|
"p": "A stem ending in ㅡ loses it. The 아/어 choice then follows the vowel BEFORE it.",
|
|
"ex": [
|
|
[
|
|
"크다",
|
|
"커"
|
|
],
|
|
[
|
|
"바쁘다",
|
|
"바빠"
|
|
],
|
|
[
|
|
"슬프다",
|
|
"슬퍼"
|
|
],
|
|
[
|
|
"쓰다",
|
|
"써"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"k": "ㅂ",
|
|
"n": "ㅂ → 우",
|
|
"p": "A ㅂ batchim turns into 우, which fuses with the ending: 워. Almost all are adjectives.",
|
|
"ex": [
|
|
[
|
|
"덥다",
|
|
"더워"
|
|
],
|
|
[
|
|
"어렵다",
|
|
"어려워"
|
|
],
|
|
[
|
|
"무섭다",
|
|
"무서워"
|
|
],
|
|
[
|
|
"쉽다",
|
|
"쉬워"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"k": "ㄷ",
|
|
"n": "ㄷ → ㄹ",
|
|
"p": "A ㄷ batchim becomes ㄹ before a vowel. 받다 and 닫다 are regular — they do not change.",
|
|
"ex": [
|
|
[
|
|
"듣다",
|
|
"들어"
|
|
],
|
|
[
|
|
"걷다",
|
|
"걸어"
|
|
],
|
|
[
|
|
"묻다",
|
|
"물어"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"k": "르",
|
|
"n": "르 doubles ㄹ",
|
|
"p": "The 르 drops its ㅡ and an extra ㄹ lands on the previous syllable.",
|
|
"ex": [
|
|
[
|
|
"모르다",
|
|
"몰라"
|
|
],
|
|
[
|
|
"부르다",
|
|
"불러"
|
|
],
|
|
[
|
|
"다르다",
|
|
"달라"
|
|
],
|
|
[
|
|
"빠르다",
|
|
"빨라"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"k": "ㅅ",
|
|
"n": "ㅅ drops",
|
|
"p": "A ㅅ batchim disappears before a vowel, and no contraction follows. 웃다 and 씻다 are regular.",
|
|
"ex": [
|
|
[
|
|
"낫다",
|
|
"나아"
|
|
],
|
|
[
|
|
"짓다",
|
|
"지어"
|
|
],
|
|
[
|
|
"붓다",
|
|
"부어"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"k": "ㅎ",
|
|
"n": "ㅎ drops, vowel shifts",
|
|
"p": "Colour adjectives and 그렇다-type words: the ㅎ goes and the vowel becomes ㅐ.",
|
|
"ex": [
|
|
[
|
|
"그렇다",
|
|
"그래"
|
|
],
|
|
[
|
|
"빨갛다",
|
|
"빨개"
|
|
],
|
|
[
|
|
"어떻다",
|
|
"어때"
|
|
]
|
|
]
|
|
},
|
|
{
|
|
"k": "ㄹ",
|
|
"n": "ㄹ drops before ㄴ ㅂ ㅅ",
|
|
"p": "The 아/어 form is regular; the ㄹ only vanishes before certain endings.",
|
|
"ex": [
|
|
[
|
|
"살다",
|
|
"살아 · 사는"
|
|
],
|
|
[
|
|
"알다",
|
|
"알아 · 아는"
|
|
],
|
|
[
|
|
"멀다",
|
|
"멀어 · 먼"
|
|
]
|
|
]
|
|
}
|
|
]
|
|
} |