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>
1426 lines
36 KiB
JSON
1426 lines
36 KiB
JSON
{
|
||
"version": 4,
|
||
"note": "Each unit declares what it TEACHES (adds to the running inventory), what it must AVOID, and the only new WORDS it may introduce. Anything a later unit teaches is, by construction, forbidden now. | v4: 1.5 liaison examples made word-internal; sound-example fences added to 1.6-1.8; duplicate words moved from words[] into revisits[].",
|
||
"phases": [
|
||
{
|
||
"phase": 1,
|
||
"ko": "한글",
|
||
"name": "The writing system",
|
||
"units": [
|
||
{
|
||
"id": "1.1",
|
||
"ko": "자음과 모음",
|
||
"name": "Consonants & vowels",
|
||
"goal": "The ten basic vowels and the plain consonants, and how one consonant plus one vowel makes a block. Reading blocks with NO final consonant only.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the plain consonants ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅎ",
|
||
"the ten basic vowels ㅏㅑㅓㅕㅗㅛㅜㅠㅡㅣ",
|
||
"one block = one syllable, initial + vowel"
|
||
],
|
||
"avoid": [
|
||
"any block with a final consonant",
|
||
"compound vowels",
|
||
"tense or aspirated consonants"
|
||
],
|
||
"words": [
|
||
"나",
|
||
"너",
|
||
"우리",
|
||
"이",
|
||
"그",
|
||
"저",
|
||
"여기",
|
||
"거기",
|
||
"저기",
|
||
"어디",
|
||
"누구",
|
||
"아이",
|
||
"어머니",
|
||
"아버지",
|
||
"나무",
|
||
"머리",
|
||
"소리",
|
||
"하나",
|
||
"바다",
|
||
"다리"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.2",
|
||
"ko": "겹모음",
|
||
"name": "Compound vowels",
|
||
"goal": "The vowels built from two shapes: ㅐ ㅔ ㅒ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ ㅢ. Still no final consonants.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"compound vowels ㅐㅔㅒㅖㅘㅙㅚㅝㅞㅟㅢ"
|
||
],
|
||
"avoid": [
|
||
"any block with a final consonant",
|
||
"tense or aspirated consonants"
|
||
],
|
||
"words": [
|
||
"개",
|
||
"새",
|
||
"배",
|
||
"네",
|
||
"세",
|
||
"의사",
|
||
"회사",
|
||
"뭐",
|
||
"왜",
|
||
"귀",
|
||
"위",
|
||
"돼지",
|
||
"가위",
|
||
"시계",
|
||
"매미",
|
||
"제비"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.3",
|
||
"ko": "된소리와 거센소리",
|
||
"name": "Tense & aspirated",
|
||
"goal": "ㄲ ㄸ ㅃ ㅆ ㅉ against their plain partners, and ㅋ ㅌ ㅍ ㅊ as the breathy versions. Hearing the three-way contrast ㄱ / ㅋ / ㄲ on the page.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"tense consonants ㄲㄸㅃㅆㅉ",
|
||
"aspirated consonants ㅋㅌㅍㅊ",
|
||
"the plain / aspirated / tense three-way contrast"
|
||
],
|
||
"avoid": [
|
||
"any block with a final consonant"
|
||
],
|
||
"words": [
|
||
"코",
|
||
"차",
|
||
"커피",
|
||
"포도",
|
||
"치마",
|
||
"까치",
|
||
"아빠",
|
||
"오빠",
|
||
"토끼",
|
||
"꼬리",
|
||
"찌개",
|
||
"카페",
|
||
"피자",
|
||
"쿠키",
|
||
"바쁘다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.4",
|
||
"ko": "받침",
|
||
"name": "Batchim — final consonants",
|
||
"goal": "A consonant sitting under the block, and the seven sounds every written final collapses to: ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ. SINGLE finals only, each word read on its own.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"a single final consonant under the block",
|
||
"the seven representative final sounds",
|
||
"that ㅅ ㅆ ㅈ ㅊ ㅌ ㅎ all sound as ㄷ at the end"
|
||
],
|
||
"avoid": [
|
||
"double final consonants (겹받침)",
|
||
"any word followed by a syllable starting with ㅇ, which would trigger liaison",
|
||
"nasalisation before ㄴ or ㅁ",
|
||
"ㅎ-irregular verbs"
|
||
],
|
||
"words": [
|
||
"밥",
|
||
"물",
|
||
"책",
|
||
"집",
|
||
"손",
|
||
"발",
|
||
"눈",
|
||
"입",
|
||
"옷",
|
||
"산",
|
||
"강",
|
||
"문",
|
||
"방",
|
||
"곰",
|
||
"밤",
|
||
"꽃",
|
||
"앞",
|
||
"낮",
|
||
"밖",
|
||
"말"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.5",
|
||
"ko": "연음",
|
||
"name": "Liaison — the slide",
|
||
"goal": "THE single most important reading rule. When a final consonant is followed by a block starting with ㅇ (which carries no sound of its own), the final slides across and is pronounced as that block's initial. 한국어 is read 한구거.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"liaison 연음: a final consonant slides into a following ㅇ block",
|
||
"that ㅇ at the start of a block is silent"
|
||
],
|
||
"avoid": [
|
||
"double final consonants",
|
||
"nasalisation",
|
||
"tensification and aspiration rules",
|
||
"particles — every example here is liaison inside a single word"
|
||
],
|
||
"words": [
|
||
"한국어",
|
||
"음악",
|
||
"국어",
|
||
"단어",
|
||
"언어",
|
||
"발음",
|
||
"얼음",
|
||
"직업",
|
||
"금요일",
|
||
"일요일",
|
||
"목요일",
|
||
"작은"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.6",
|
||
"ko": "비음화",
|
||
"name": "Nasalisation",
|
||
"goal": "Before ㄴ or ㅁ, a stop final turns nasal: ㄱ becomes ㅇ, ㄷ becomes ㄴ, ㅂ becomes ㅁ. 감사합니다 is read 감사함니다 — which is why the polite endings never sound the way they are spelled.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"nasalisation 비음화 before ㄴ and ㅁ",
|
||
"why -습니다 is heard as -슴니다"
|
||
],
|
||
"avoid": [
|
||
"double final consonants",
|
||
"tensification, aspiration, palatalisation",
|
||
"do not analyse -습니다 / -ㅂ니다 or dictionary -다 as grammar here — they appear only as sound examples"
|
||
],
|
||
"words": [
|
||
"감사합니다",
|
||
"입니다",
|
||
"학년",
|
||
"국물",
|
||
"십만",
|
||
"작년",
|
||
"몇 명",
|
||
"습니다",
|
||
"한국말",
|
||
"꽃말"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.7",
|
||
"ko": "겹받침",
|
||
"name": "Double batchim",
|
||
"goal": "Two consonants under one block. Only ONE of them is pronounced at the end of a word, and which one is largely per-word rather than fully rule-based — so these are learned as items. When a vowel follows, the second one slides across instead.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"double final consonants 겹받침",
|
||
"which half is pronounced, per word",
|
||
"a double final splitting under liaison: 읽어 → 일거"
|
||
],
|
||
"avoid": [
|
||
"tensification, aspiration, palatalisation, ㅎ-dropping",
|
||
"do not analyse -습니다 / -ㅂ니다 or dictionary -다 as grammar here — they appear only as sound examples"
|
||
],
|
||
"words": [
|
||
"값",
|
||
"닭",
|
||
"여덟",
|
||
"앉다",
|
||
"읽다",
|
||
"없다",
|
||
"많다",
|
||
"삶",
|
||
"넓다",
|
||
"짧다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.8",
|
||
"ko": "나머지 소리 변화",
|
||
"name": "The remaining sound changes",
|
||
"goal": "The four that are left: tensification 경음화 (학교 → 학꾜), aspiration 격음화 (좋다 → 조타), ㅎ-dropping (좋아 → 조아), palatalisation 구개음화 (같이 → 가치), and lateralisation 유음화 (신라 → 실라).",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"tensification 경음화",
|
||
"aspiration 격음화",
|
||
"ㅎ-dropping",
|
||
"palatalisation 구개음화",
|
||
"lateralisation 유음화"
|
||
],
|
||
"avoid": [
|
||
"do not analyse -습니다 / -ㅂ니다 or dictionary -다 as grammar here — they appear only as sound examples"
|
||
],
|
||
"words": [
|
||
"학교",
|
||
"좋다",
|
||
"같이",
|
||
"신라",
|
||
"설날",
|
||
"못해",
|
||
"축하",
|
||
"싫어",
|
||
"놓다",
|
||
"앉히다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "1.9",
|
||
"ko": "첫 낱말",
|
||
"name": "First words, read correctly",
|
||
"goal": "Consolidation. Real words that need two or three of the rules at once, read for meaning rather than mechanics. No new phenomena — this unit only proves Phase 1 holds together.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"reading a written word and knowing how it actually sounds"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"친구",
|
||
"사람",
|
||
"시간",
|
||
"이름",
|
||
"나라",
|
||
"하늘",
|
||
"마음",
|
||
"얼굴",
|
||
"목소리",
|
||
"이야기"
|
||
],
|
||
"revisits": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"phase": 2,
|
||
"ko": "낱말과 뼈대",
|
||
"name": "Words & the basic frame",
|
||
"units": [
|
||
{
|
||
"id": "2.1",
|
||
"ko": "이다 · 아니다",
|
||
"name": "X is Y",
|
||
"goal": "The simplest complete sentence: A B야. 야 after a vowel, 이야 after a consonant, 아니야 for the negative. No particles yet — just two nouns and an ending.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the copula 야 / 이야 (casual 'is')",
|
||
"아니야 (is not)",
|
||
"that a question looks identical and is marked only by ?"
|
||
],
|
||
"avoid": [
|
||
"any particle",
|
||
"verbs other than the copula",
|
||
"polite endings"
|
||
],
|
||
"words": [
|
||
"학생",
|
||
"선생님",
|
||
"아니",
|
||
"맞아"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "의사",
|
||
"from": "1.2"
|
||
},
|
||
{
|
||
"word": "이름",
|
||
"from": "1.9"
|
||
},
|
||
{
|
||
"word": "뭐",
|
||
"from": "1.2"
|
||
},
|
||
{
|
||
"word": "누구",
|
||
"from": "1.1"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "2.2",
|
||
"ko": "있다 · 없다",
|
||
"name": "There is, there isn't",
|
||
"goal": "있어 and 없어 — existence, presence and having. The two most common predicates in the language, and the first real verbs.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"있어 / 없어 for existence and possession"
|
||
],
|
||
"avoid": [
|
||
"any particle",
|
||
"conjugation rules — teach 있어/없어 as fixed forms for now",
|
||
"past tense"
|
||
],
|
||
"words": [
|
||
"돈",
|
||
"형",
|
||
"누나",
|
||
"동생",
|
||
"가족",
|
||
"일",
|
||
"약속"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "시간",
|
||
"from": "1.9"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "2.3",
|
||
"ko": "어순",
|
||
"name": "Word order & the ending word",
|
||
"goal": "Subject, then object, then verb — the last word carries the action or state, everything before it is setup. And Korean drops whatever is obvious, so a bare verb is a complete sentence.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"subject–object–verb order",
|
||
"the last word as the predicate",
|
||
"that subjects and objects get dropped when obvious"
|
||
],
|
||
"avoid": [
|
||
"any particle",
|
||
"conjugation rules — use only forms given in this unit's word list",
|
||
"past or future tense"
|
||
],
|
||
"words": [
|
||
"먹어",
|
||
"마셔",
|
||
"봐",
|
||
"읽어",
|
||
"가",
|
||
"와",
|
||
"자",
|
||
"해"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "2.4",
|
||
"ko": "지시어와 의문사",
|
||
"name": "Pointing & asking",
|
||
"goal": "이 / 그 / 저 and the words built on them, plus the full question set — 뭐, 누구, 어디, 언제, 왜, 어떻게, 몇 — which sit in the same slot as a normal noun rather than moving to the front.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"이 / 그 / 저 and 이거 · 여기 · 이 사람 etc.",
|
||
"the question words, in normal word order"
|
||
],
|
||
"avoid": [
|
||
"any particle",
|
||
"tense"
|
||
],
|
||
"words": [
|
||
"이거",
|
||
"그거",
|
||
"저거",
|
||
"언제",
|
||
"어떻게",
|
||
"몇",
|
||
"이번",
|
||
"다음"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "2.5",
|
||
"ko": "숫자 ① 한자어",
|
||
"name": "Sino-Korean numbers",
|
||
"goal": "일 이 삼 사 오 육 칠 팔 구 십, then 백 천 만. Used for dates, money, minutes, phone numbers, floors and anything above ninety-nine.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"Sino-Korean numerals and how they stack",
|
||
"what Sino numbers are used for: dates, money, minutes"
|
||
],
|
||
"avoid": [
|
||
"native numerals",
|
||
"counters"
|
||
],
|
||
"words": [
|
||
"삼",
|
||
"사",
|
||
"오",
|
||
"육",
|
||
"칠",
|
||
"팔",
|
||
"구",
|
||
"십",
|
||
"백",
|
||
"천",
|
||
"만",
|
||
"년",
|
||
"월",
|
||
"분",
|
||
"원"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "일",
|
||
"from": "2.2"
|
||
},
|
||
{
|
||
"word": "이",
|
||
"from": "1.1"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "2.6",
|
||
"ko": "숫자 ② 고유어와 단위",
|
||
"name": "Native numbers & counters",
|
||
"goal": "하나 둘 셋 넷 다섯…, the counters that follow them (개 명 마리 잔 살 번 시), and the shortening that happens in front of one: 하나 → 한, 둘 → 두, 셋 → 세, 넷 → 네, 스물 → 스무.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"native numerals",
|
||
"counters 개 명 마리 잔 살 번 시",
|
||
"한/두/세/네/스무 before a counter",
|
||
"a clock reading using both systems"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"둘",
|
||
"셋",
|
||
"넷",
|
||
"다섯",
|
||
"여섯",
|
||
"일곱",
|
||
"아홉",
|
||
"열",
|
||
"스물",
|
||
"명",
|
||
"마리",
|
||
"살",
|
||
"잔",
|
||
"번",
|
||
"시"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "하나",
|
||
"from": "1.1"
|
||
},
|
||
{
|
||
"word": "여덟",
|
||
"from": "1.7"
|
||
},
|
||
{
|
||
"word": "개",
|
||
"from": "1.2"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "2.7",
|
||
"ko": "어휘 · 사람과 사물",
|
||
"name": "Vocabulary — people & things",
|
||
"goal": "A vocabulary round using everything so far. Words you will meet on almost every page: people, everyday objects, places.",
|
||
"vocabUnit": true,
|
||
"teaches": [
|
||
"everyday nouns for people, objects and places"
|
||
],
|
||
"avoid": [
|
||
"any particle",
|
||
"tense"
|
||
],
|
||
"words": [
|
||
"가방",
|
||
"신발",
|
||
"열쇠",
|
||
"우산",
|
||
"의자",
|
||
"책상",
|
||
"휴대폰",
|
||
"컴퓨터",
|
||
"가게",
|
||
"길"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "옷",
|
||
"from": "1.4"
|
||
},
|
||
{
|
||
"word": "시계",
|
||
"from": "1.2"
|
||
},
|
||
{
|
||
"word": "학교",
|
||
"from": "1.8"
|
||
},
|
||
{
|
||
"word": "회사",
|
||
"from": "1.2"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "2.8",
|
||
"ko": "부정 ① 안 · 못",
|
||
"name": "Negation in front",
|
||
"goal": "안 before the verb for 'doesn't', 못 for 'can't'. The difference is choice against ability, and manhwa leans on it constantly. 안 먹어 is a decision; 못 먹어 is a limit.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"안 + verb",
|
||
"못 + verb",
|
||
"the choice-versus-ability contrast"
|
||
],
|
||
"avoid": [
|
||
"-지 않다 and -지 마 — those come with the endings in Phase 5"
|
||
],
|
||
"words": [
|
||
"안",
|
||
"못",
|
||
"아직",
|
||
"벌써",
|
||
"전혀",
|
||
"별로"
|
||
],
|
||
"revisits": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"phase": 3,
|
||
"ko": "활용",
|
||
"name": "Conjugation",
|
||
"units": [
|
||
{
|
||
"id": "3.1",
|
||
"ko": "활용의 규칙",
|
||
"name": "The rule behind every verb",
|
||
"goal": "Dictionary form minus 다 is the stem. If the stem's last vowel is ㅏ or ㅗ, add 아; otherwise add 어; 하다 becomes 해. One rule, and it predicts forms he has never seen.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"stem = dictionary form minus 다",
|
||
"the 아/어 split by vowel harmony",
|
||
"하다 → 해"
|
||
],
|
||
"avoid": [
|
||
"all irregular classes",
|
||
"past and future tense",
|
||
"polite 요"
|
||
],
|
||
"words": [
|
||
"먹다",
|
||
"가다",
|
||
"오다",
|
||
"보다",
|
||
"웃다",
|
||
"잡다",
|
||
"살다",
|
||
"죽다",
|
||
"울다"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "좋다",
|
||
"from": "1.8"
|
||
},
|
||
{
|
||
"word": "읽다",
|
||
"from": "1.7"
|
||
},
|
||
{
|
||
"word": "앉다",
|
||
"from": "1.7"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "3.2",
|
||
"ko": "불규칙 ① ㅡ · 르",
|
||
"name": "Irregulars: ㅡ and 르",
|
||
"goal": "A stem ending in ㅡ loses it, and the harmony then follows the vowel before it: 크다 → 커, 바쁘다 → 바빠. A 르 stem drops the ㅡ and doubles the ㄹ backwards: 모르다 → 몰라.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the ㅡ irregular",
|
||
"the 르 irregular"
|
||
],
|
||
"avoid": [
|
||
"the ㅂ ㄷ ㅅ ㅎ ㄹ irregulars",
|
||
"tense"
|
||
],
|
||
"words": [
|
||
"크다",
|
||
"쓰다",
|
||
"아프다",
|
||
"슬프다",
|
||
"예쁘다",
|
||
"모르다",
|
||
"부르다",
|
||
"다르다",
|
||
"빠르다"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "바쁘다",
|
||
"from": "1.3"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "3.3",
|
||
"ko": "불규칙 ② ㅂ · ㄷ · ㅅ",
|
||
"name": "Irregulars: ㅂ, ㄷ, ㅅ",
|
||
"goal": "ㅂ becomes 우 and fuses into 워 (덥다 → 더워). ㄷ becomes ㄹ (듣다 → 들어). ㅅ simply vanishes with no contraction (낫다 → 나아). Each has regular look-alikes that do not change.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the ㅂ irregular",
|
||
"the ㄷ irregular",
|
||
"the ㅅ irregular",
|
||
"that 받다, 닫다, 웃다, 씻다 are regular despite appearances"
|
||
],
|
||
"avoid": [
|
||
"the ㅎ and ㄹ irregulars",
|
||
"tense"
|
||
],
|
||
"words": [
|
||
"덥다",
|
||
"춥다",
|
||
"쉽다",
|
||
"어렵다",
|
||
"무섭다",
|
||
"맵다",
|
||
"듣다",
|
||
"걷다",
|
||
"묻다",
|
||
"낫다",
|
||
"짓다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "3.4",
|
||
"ko": "불규칙 ③ ㅎ · ㄹ",
|
||
"name": "Irregulars: ㅎ and ㄹ",
|
||
"goal": "Colour words and 그렇다-types drop the ㅎ and shift the vowel to ㅐ (빨갛다 → 빨개). A ㄹ stem keeps its 아/어 form but loses the ㄹ before certain endings (살다 → 사는).",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the ㅎ irregular",
|
||
"the ㄹ irregular"
|
||
],
|
||
"avoid": [
|
||
"tense"
|
||
],
|
||
"words": [
|
||
"그렇다",
|
||
"어떻다",
|
||
"빨갛다",
|
||
"하얗다",
|
||
"까맣다",
|
||
"알다",
|
||
"놀다",
|
||
"멀다",
|
||
"길다",
|
||
"만들다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "3.5",
|
||
"ko": "과거",
|
||
"name": "The past tense",
|
||
"goal": "Built FROM the 아/어 form, not from the dictionary form: take 먹어, insert ㅆ, add 어 → 먹었어. 가 → 갔어. 해 → 했어. Irregulars carry through: 더워 → 더웠어, 몰라 → 몰랐어.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"past tense 았/었어",
|
||
"that the past is built on the 아/어 form, so irregulars carry through"
|
||
],
|
||
"avoid": [
|
||
"future tense",
|
||
"polite 요"
|
||
],
|
||
"words": [
|
||
"했어",
|
||
"갔어",
|
||
"왔어",
|
||
"봤어",
|
||
"먹었어",
|
||
"어제",
|
||
"아까",
|
||
"방금"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "3.6",
|
||
"ko": "미래와 의지",
|
||
"name": "Future & intention",
|
||
"goal": "-(으)ㄹ 거야 for what is going to happen, and -(으)ㄹ게 for a promise made to the person listening. The second one is the vow panel: 내가 지킬게.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-(으)ㄹ 거야 future",
|
||
"-(으)ㄹ게 promise"
|
||
],
|
||
"avoid": [
|
||
"polite 요"
|
||
],
|
||
"words": [
|
||
"내일",
|
||
"나중에",
|
||
"곧",
|
||
"이따가",
|
||
"진짜",
|
||
"정말"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "3.7",
|
||
"ko": "어휘 · 동작과 상태",
|
||
"name": "Vocabulary — actions & states",
|
||
"goal": "A vocabulary round of verbs and adjectives, every one of them run through the conjugation rules just learned.",
|
||
"vocabUnit": true,
|
||
"teaches": [
|
||
"common action verbs and descriptive adjectives"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"만나다",
|
||
"기다리다",
|
||
"찾다",
|
||
"주다",
|
||
"받다",
|
||
"사다",
|
||
"팔다",
|
||
"열다",
|
||
"닫다",
|
||
"시작하다",
|
||
"끝나다",
|
||
"싸우다",
|
||
"도망치다",
|
||
"지키다"
|
||
],
|
||
"revisits": []
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"phase": 4,
|
||
"ko": "조사",
|
||
"name": "Particles",
|
||
"units": [
|
||
{
|
||
"id": "4.1",
|
||
"ko": "은 / 는",
|
||
"name": "The topic marker",
|
||
"goal": "은/는 names what the sentence is about, and quietly sets it against something else. 은 after a consonant, 는 after a vowel. Everything so far has managed without it — this unit shows what it adds.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"은/는 as topic marker",
|
||
"the consonant/vowel split"
|
||
],
|
||
"avoid": [
|
||
"이/가, 을/를 and every other particle"
|
||
],
|
||
"words": [
|
||
"오늘",
|
||
"요즘",
|
||
"원래",
|
||
"보통"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "4.2",
|
||
"ko": "이 / 가",
|
||
"name": "The subject marker",
|
||
"goal": "이/가 marks who or what performs the verb, and it introduces information that is new. 이 after a consonant, 가 after a vowel; 저 + 가 contracts to 제가, 나 + 가 to 내가.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"이/가 as subject marker",
|
||
"제가 · 내가 · 네가 contractions"
|
||
],
|
||
"avoid": [
|
||
"을/를 and the later particles"
|
||
],
|
||
"words": [
|
||
"누가",
|
||
"내가",
|
||
"제가",
|
||
"네가"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "4.3",
|
||
"ko": "은/는 vs 이/가",
|
||
"name": "The contrast",
|
||
"goal": "No new particle — a whole unit on the difference, because it is the one that never stops mattering. Same sentence, both markers, side by side: what changes is where the weight falls and what is being answered.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"choosing between 은/는 and 이/가 by what is old and what is new"
|
||
],
|
||
"avoid": [
|
||
"을/를 and the later particles"
|
||
],
|
||
"words": [
|
||
"그런데",
|
||
"하지만"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "4.4",
|
||
"ko": "을 / 를",
|
||
"name": "The object marker",
|
||
"goal": "을/를 marks what the verb acts on. It is dropped constantly in speech bubbles, which is exactly why you need to recognise it when it does appear. 뭘, 널, 절 are the contractions.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"을/를 as object marker",
|
||
"the contractions 뭘 · 널 · 절"
|
||
],
|
||
"avoid": [
|
||
"에 / 에서 and the later particles"
|
||
],
|
||
"words": [
|
||
"뭘",
|
||
"널",
|
||
"절"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "4.5",
|
||
"ko": "에 · 에서",
|
||
"name": "Place & time",
|
||
"goal": "에 for a destination, a point in time, or where something simply is. 에서 for where an action happens, and where something came from. 집에 있어 against 집에서 일해.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"에 for destination, time and static location",
|
||
"에서 for the site of an action and for origin"
|
||
],
|
||
"avoid": [
|
||
"도, 만 and the later particles"
|
||
],
|
||
"words": [
|
||
"아래",
|
||
"옆",
|
||
"뒤",
|
||
"사이"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "밖",
|
||
"from": "1.4"
|
||
},
|
||
{
|
||
"word": "안",
|
||
"from": "2.8"
|
||
},
|
||
{
|
||
"word": "위",
|
||
"from": "1.2"
|
||
},
|
||
{
|
||
"word": "앞",
|
||
"from": "1.4"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "4.6",
|
||
"ko": "도 · 만",
|
||
"name": "Also & only",
|
||
"goal": "도 (also, too) and 만 (only). The catch: they REPLACE 은/는, 이/가 and 을/를 rather than stacking on top of them. 저는도 is wrong; 저도 is right.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"도 (also) and 만 (only)",
|
||
"that 도 and 만 replace the other markers"
|
||
],
|
||
"avoid": [
|
||
"the remaining particles"
|
||
],
|
||
"words": [
|
||
"혼자",
|
||
"조금",
|
||
"많이"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "같이",
|
||
"from": "1.8"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "4.7",
|
||
"ko": "나머지 조사",
|
||
"name": "The rest of the set",
|
||
"goal": "하고 · (이)랑 · 와/과 for and and with; (으)로 for by and toward; 부터 ~ 까지 for a span; 보다 for more than; 처럼 for like.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"하고 · (이)랑 · 와/과",
|
||
"(으)로",
|
||
"부터 ~ 까지",
|
||
"보다",
|
||
"처럼"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"하고",
|
||
"랑",
|
||
"로",
|
||
"부터",
|
||
"까지",
|
||
"처럼"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "보다",
|
||
"from": "3.1"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "4.8",
|
||
"ko": "생략과 지시",
|
||
"name": "Omission & tracking who",
|
||
"goal": "The reading skill this whole phase was building toward. Korean drops subjects and objects constantly, and a manhwa page expects you to infer who is speaking and who is being spoken about — from who spoke last, from the ending, from the level of politeness. Given a bare line, you should be able to say WHO.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"tracing a dropped subject through a exchange",
|
||
"reading the speaker from the ending and the register"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"그때",
|
||
"이제",
|
||
"걔",
|
||
"쟤",
|
||
"얘"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "아까",
|
||
"from": "3.5"
|
||
},
|
||
{
|
||
"word": "방금",
|
||
"from": "3.5"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"phase": 5,
|
||
"ko": "어미",
|
||
"name": "Endings & clauses",
|
||
"units": [
|
||
{
|
||
"id": "5.1",
|
||
"ko": "존댓말 읽기",
|
||
"name": "Reading polite speech",
|
||
"goal": "Everything so far has been 반말. Now the 요 form and the -습니다 form, for RECOGNITION: a character switching into them is a social event, not just a different ending.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the polite 요 ending",
|
||
"the formal -습니다 ending",
|
||
"that a switch of register is a story signal"
|
||
],
|
||
"avoid": [
|
||
"honorific -(으)시- — that is the next unit"
|
||
],
|
||
"words": [
|
||
"안녕하세요",
|
||
"죄송합니다",
|
||
"아니요",
|
||
"그렇습니다"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "감사합니다",
|
||
"from": "1.6"
|
||
},
|
||
{
|
||
"word": "네",
|
||
"from": "1.2"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "5.2",
|
||
"ko": "높임말",
|
||
"name": "Honorifics",
|
||
"goal": "-(으)시- inside the verb, -세요, 께서 instead of 이/가, and the suppletive words: 드시다, 주무시다, 계시다, 드리다, 말씀. Recognition only — you are reading these, not producing them.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"honorific -(으)시- and -세요",
|
||
"께서",
|
||
"드시다 · 주무시다 · 계시다 · 드리다 · 말씀"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"말씀",
|
||
"님",
|
||
"드리다",
|
||
"계시다",
|
||
"주무시다"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "분",
|
||
"from": "2.5"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "5.3",
|
||
"ko": "부정 ② 지 않다 · 지 마",
|
||
"name": "Negation behind the verb",
|
||
"goal": "-지 않아 as the other way to say no, -지 못해 for the other kind of can't, and -지 마 for don't. The register split matters: 안 먹어 is a character speaking, 먹지 않는다 is narration.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-지 않다",
|
||
"-지 못하다",
|
||
"-지 마 (don't)",
|
||
"the spoken/narrated register split with 안"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"걱정하다",
|
||
"신경 쓰다",
|
||
"포기하다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.4",
|
||
"ko": "바람과 능력",
|
||
"name": "Wanting & being able",
|
||
"goal": "-고 싶어 (want to), -(으)ㄹ 수 있어/없어 (can, cannot), -아/어야 돼 (have to). Three things stacked onto the end of a verb.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-고 싶다",
|
||
"-(으)ㄹ 수 있다 / 없다",
|
||
"-아/어야 되다"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"싶다",
|
||
"수",
|
||
"필요하다",
|
||
"돼"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.5",
|
||
"ko": "고 · 지만",
|
||
"name": "And, but",
|
||
"goal": "-고 joins two clauses with no claim of cause; -지만 sets them against each other. Tense sits on the final verb with -고, but -지만 takes it directly.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-고 (and)",
|
||
"-지만 (but)"
|
||
],
|
||
"avoid": [
|
||
"-아서 and -(으)니까 — the next unit"
|
||
],
|
||
"words": [
|
||
"그리고",
|
||
"그렇지만"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.6",
|
||
"ko": "아서 · 니까",
|
||
"name": "Because",
|
||
"goal": "Two reasons endings that are not interchangeable. -아/어서 never takes past tense and never comes before a command. -(으)니까 does both — which is why every 'so let's…' line uses it.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-아/어서 (because; and then)",
|
||
"-(으)니까 (because, before commands and suggestions)",
|
||
"that -아/어서 cannot carry tense or precede a command"
|
||
],
|
||
"avoid": [
|
||
"-는데"
|
||
],
|
||
"words": [
|
||
"그래서",
|
||
"왜냐하면",
|
||
"때문에"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.7",
|
||
"ko": "는데 ① 대조",
|
||
"name": "는데 as contrast",
|
||
"goal": "-는데 doing exactly one of its jobs: setting two things against each other. 이 옷은 예쁜데 비싸. Minimal pairs against -지만 so the difference in feel is visible.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-는데 / -(으)ㄴ데 as contrast"
|
||
],
|
||
"avoid": [
|
||
"the other two jobs of -는데 — they are the next unit"
|
||
],
|
||
"words": [],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.8",
|
||
"ko": "는데 ② 배경",
|
||
"name": "는데 as background & lead-in",
|
||
"goal": "Its other two jobs: setting the scene before the main clause, and opening a topic then trailing off so the listener responds. Three labelled uses now, and a sorting exercise where you say which one each is doing.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-는데 as scene-setting background",
|
||
"-는데 as a soft trailing lead-in",
|
||
"telling the three uses apart"
|
||
],
|
||
"avoid": [],
|
||
"words": [],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.9",
|
||
"ko": "조건과 목적",
|
||
"name": "Condition & purpose",
|
||
"goal": "-(으)면 (if, when), -(으)면서 (while), -(으)려고 (intending to), -(으)러 (in order to, only with verbs of movement), -기 전에 and -(으)ㄴ 후에.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-(으)면",
|
||
"-(으)면서",
|
||
"-(으)려고",
|
||
"-(으)러",
|
||
"-기 전에 / -(으)ㄴ 후에"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"만약",
|
||
"혹시",
|
||
"아마",
|
||
"먼저"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "5.10",
|
||
"ko": "어휘 · 감정과 관계",
|
||
"name": "Vocabulary — feelings & relationships",
|
||
"goal": "A vocabulary round on the emotional register manhwa runs on, every word used inside the endings just learned.",
|
||
"vocabUnit": true,
|
||
"teaches": [
|
||
"vocabulary for feelings, relationships and reactions"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"사랑",
|
||
"기분",
|
||
"걱정",
|
||
"오해",
|
||
"비밀",
|
||
"거짓말",
|
||
"질투",
|
||
"고백",
|
||
"미안하다",
|
||
"고맙다"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "마음",
|
||
"from": "1.9"
|
||
},
|
||
{
|
||
"word": "약속",
|
||
"from": "2.2"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"phase": 6,
|
||
"ko": "실전 읽기",
|
||
"name": "Reading for real",
|
||
"units": [
|
||
{
|
||
"id": "6.1",
|
||
"ko": "수식",
|
||
"name": "Modifiers before nouns",
|
||
"goal": "Korean puts the whole description in FRONT of the noun, and marks tense inside it: -는 (now), -(으)ㄴ (already), -(으)ㄹ (yet to come). 내가 죽인 몬스터. The skill is finding where the modifier ends and the noun begins.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-는 / -(으)ㄴ / -(으)ㄹ modifying a noun",
|
||
"finding the boundary between modifier and noun"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"것",
|
||
"거",
|
||
"때",
|
||
"곳",
|
||
"적"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "6.2",
|
||
"ko": "인용",
|
||
"name": "Quotation",
|
||
"goal": "An isolation unit, drilled with choice and build tasks so gist-guessing cannot carry you. -라고 for a direct quote, -고 for reported speech, and the contractions -대 · -래 · -냬 · -재 that mean someone else said it first.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"-라고 direct quotation",
|
||
"-고 reported speech",
|
||
"the contractions -대 · -래 · -냬 · -재"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"라고",
|
||
"대",
|
||
"래",
|
||
"냬",
|
||
"재"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "6.3",
|
||
"ko": "말투 구분",
|
||
"name": "Narration vs speech",
|
||
"goal": "The other isolation unit: -다 endings (narration, thought, description) against -어 endings (someone speaking), and 며 against 면서. Given a line with no context, say which voice it is.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"the -다 narration register",
|
||
"telling narration from dialogue by the ending",
|
||
"며 vs 면서"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"이다",
|
||
"했다",
|
||
"한다",
|
||
"였다"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "6.4",
|
||
"ko": "띄어쓰기와 줄임",
|
||
"name": "Spacing & contractions",
|
||
"goal": "Where the spaces fall, and the contractions speech bubbles are full of: 나는 → 난, 너는 → 넌, 이것은 → 이건, 무엇을 → 뭘, 그 아이 → 걔.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"Korean word spacing and where a chunk ends",
|
||
"the common spoken contractions"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"난",
|
||
"넌",
|
||
"건",
|
||
"이건"
|
||
],
|
||
"revisits": [
|
||
{
|
||
"word": "뭘",
|
||
"from": "4.4"
|
||
},
|
||
{
|
||
"word": "걔",
|
||
"from": "4.8"
|
||
},
|
||
{
|
||
"word": "쟤",
|
||
"from": "4.8"
|
||
},
|
||
{
|
||
"word": "얘",
|
||
"from": "4.8"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "6.5",
|
||
"ko": "의성어 · 의태어",
|
||
"name": "Sound & manner words",
|
||
"goal": "The words lettered into the artwork rather than spoken by anyone. Not in most textbooks, and they carry a great deal of what a panel is doing.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"sound words 의성어 and manner words 의태어"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"쿵",
|
||
"쾅",
|
||
"헉",
|
||
"헐",
|
||
"두근두근",
|
||
"반짝",
|
||
"털썩",
|
||
"씨익",
|
||
"꿀꺽",
|
||
"덜덜"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "6.6",
|
||
"ko": "어휘 · 장르",
|
||
"name": "Vocabulary — genre",
|
||
"goal": "The vocabulary specific to what you actually read: regression and tower fantasy, romance drama, school life, action and crime.",
|
||
"vocabUnit": true,
|
||
"teaches": [
|
||
"genre vocabulary for fantasy, romance, school and action manhwa"
|
||
],
|
||
"avoid": [],
|
||
"words": [
|
||
"회귀",
|
||
"각성",
|
||
"스킬",
|
||
"던전",
|
||
"길드",
|
||
"마왕",
|
||
"헌터",
|
||
"복수",
|
||
"배신",
|
||
"계약",
|
||
"재벌",
|
||
"선배",
|
||
"일진",
|
||
"증거"
|
||
],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "6.7",
|
||
"ko": "패널 읽기",
|
||
"name": "Reading whole panels",
|
||
"goal": "Several bubbles in a row, with sound words and dropped subjects, read for what happened and who did it.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"reading a multi-bubble exchange as one scene"
|
||
],
|
||
"avoid": [],
|
||
"words": [],
|
||
"revisits": []
|
||
},
|
||
{
|
||
"id": "6.8",
|
||
"ko": "속도 읽기",
|
||
"name": "Speed reading",
|
||
"goal": "Real excerpt length, timed, no lookups. The finish line: you read it once and say what happened.",
|
||
"vocabUnit": false,
|
||
"teaches": [
|
||
"reading at speed without lookups"
|
||
],
|
||
"avoid": [],
|
||
"words": [],
|
||
"revisits": []
|
||
}
|
||
]
|
||
}
|
||
]
|
||
} |