fix(tutor): what live gpt-oss-20b lessons showed — marks lost, feedback swallowed, answers given away

Three unit-1.1 lessons with gpt-oss-20b through LM Studio and the server —
the first real model on the reworked turn. The letter-level check went out
right, and the +25 clamp held: a reported 80 on the first answer was stored
as 25. What failed was how the model wrote its blocks, a different way each
session. All three transcripts are in test/fixtures/, verbatim, and each
failure below is a test against them.

Marks lost. The prompt asks for `여덟 | wrong | 여덜`. The first session wrote
`we | wrong | 우라 → 우리`, English prompt first; the second wrote no ::result
at all and marked only in prose, `✗ 나 | I (humble) → 저`. evidence.ts keys on
the first field of a ::result row, so nothing was ever recorded — no
evidence, no schedule, no confusions, and a 다지기 review that could never
close. The artifact would have lost them the same way. domain/marking.ts
attaches each mark to its word only where that is unambiguous: one Korean
word first, or through a prompt of the exercise he answered, read via that
exercise's ::words as the letter check reads it. With no ::result block the
✓/✗ lines are read on the same terms, so a mark can never name a word the
exercise did not ask for; a mark on a whole sentence is still dropped. What
he mistook a word for is taken from what he actually wrote whenever the mark
itself gives no other word — the third session put the right answer there.
Its third session, marked through all of this: 20 evidence rows, 20 cards.

Progress on requests. The prompt allows marks, ::confirmed and ::progress
only in reply to an answer. The model wrote ::progress on every message, and
three requests for a new exercise took the unit from 50% to 80% with nothing
answered. A reply to anything but an answer now changes none of them.

Feedback swallowed. The model closed no blocks, so lib read what followed
each one as rows: "your score is about 5%" became a result row the student
never saw, and a "---" became a recall item he was asked to write in 한글.
Another session fenced every block in ```. gloss.ts now decides every
block's extent from the raw text — at "::", the next block, a rule or fence
line, a blank line with no row after it, or for the piped blocks the first
line without a "|" — and hands lib the blocks properly closed. The gate
audit, now run through the parser the lesson uses, still flags 7 and 2.

Answers given away. Translate rows came with their meanings ("나 | I") and
recall hints were the answers ("two | 이"). A translate row keeps only its
Korean line, and a recall hint that is the expected word, or any word the
message declares, is dropped.

Also: the spelling a recall prompt expects now keeps its qualifiers. With 나
"I, me (casual)" and 저 "I, me (humble)" in one list, "I (humble)" matched
나: no letter check was sent, and the mark for 저 was filed under 나.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-09-16 22:50:33 +02:00
parent e40aad637a
commit 467d9d1d7c
12 changed files with 850 additions and 70 deletions

View File

@@ -0,0 +1,37 @@
{
"source": "gpt-oss-20b (LM Studio) through server/src/backends/openai.ts, unit 1.1, 16 Sep 2026, third session. The whole transcript, verbatim. Every block wrapped in a markdown code fence; ::result third fields hold the right answer rather than the slip; recall hints are the answers.",
"turns": [
{
"role": "user",
"body": "Let's start unit 1.1 자음과 모음 (Consonants & vowels). Give me the full introduction, then a first exercise."
},
{
"role": "assistant",
"body": "Welcome to Unit1.1: **자음과 모음** the consonants and vowels that make up Korean syllables. \nIn this unit you will learn the ten basic vowels, the plain consonants, and how a single consonant plus one vowel creates a block (a “syllable”). Well keep it simple: no final consonants, no compound vowels, no tense or aspirated consonants.\n\n**What youre learning now**\n\n1. **Plain consonants** – ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅎ \n These are the first letters youll see in any Korean word. \n2. **Ten basic vowels** – ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ \n Each vowel is a block on its own or combined with a consonant to form a syllable. \n3. **Blocks (syllables)** one initial consonant + one vowel, no final consonant. \n For example: “가” (ㄱ+ㅏ) and “나” (ㄴ+ㅏ). \n\n**Why this is important**\n\nKorean is written in blocks that are each a syllable. If you can read the shape of every block, you can read any word without having to know how it sounds. Well start with the simplest shapes so you dont get lost.\n\n**Common mistakes beginners make**\n\n- Mixing up consonants that look similar:andㅋ,andㅍ,andㅎ. \n Remember we only use plain consonants here no aspirated or tense versions. \n- Forgetting the vowel part of a block. \n Every block has one vowel; if you miss it, the whole syllable becomes unreadable.\n\n**Examples to keep in mind**\n\n* 가 (ㄱ+ㅏ) → “ga” \n* 나 (ㄴ+ㅏ) → “na” \n* 바 (ㅂ+ㅏ) → “ba” \n* 다 (ㄷ+ㅏ) → “da” \n\nYoull see many of these in the words we will practice. The new words you can start reading now are: **나**, **너**, **우리**, **이**, **그**, **저**, **여기**, **거기**, **저기**, **어디**, **누구**, **아이**, **어머니**, **아버지**, **나무**, **머리**, **소리**, **하나**, **바다**, **다리**. \nEach of these has only one consonant and one vowel, so they are perfect for this unit.\n\n---\n\n### First exercise: **Recall** (you write the Korean)\n\nYoull see an English word or phrase and you must type the correct Korean block(s) using the onscreen keyboard.\n\n```\n::task recall\nI | 나\nYou (casual) | 너\nWe | 우리\nTwo (Sino) | 이\nThat (near) | 그\nThere (over there) | 저기\nWhere? | 어디\nWho? | 누구\nChild | 아이\nMother | 어머니\nFather | 아버지\nTree | 나무\nHead | 머리\nSound | 소리\nOne (Native) | 하나\nSea | 바다\nBridge | 다리\n```\n\n---\n\n**Words used in this lesson**\n\n```\n::words\n나 | I, me (casual)\n너 | you (casual)\n우리 | we, our\n이 | two (Sino)\n그 | that (near you or already mentioned)\n저기 | over there\n어디 | where?\n누구 | who?\n아이 | child\n어머니 | mother\n아버지 | father\n나무 | tree\n머리 | head\n소리 | sound\n하나 | one (Native)\n바다 | sea\n다리 | bridge\n```"
},
{
"role": "user",
"body": "My written answers:\nI → 나\nYou (casual) → 너\nWe → 우라\nTwo (Sino) → 이\nThat (near) → 그\nThere (over there) → 저기\nWhere? → 어디\nWho? → 누구\nChild → 아이\nMother → 어머니\nFather → 아버지\nTree → 나무\nHead → 머리\nSound → 소리\nOne (Native) → 하나\nSea → 바다\nBridge → 다리\n\n════ LETTER-LEVEL CHECK — computed by the app ════\nThis is the actual jamo comparison. Use it exactly. Do NOT work out for yourself which letter was wrong, and never call a letter wrong that is listed as correct.\n• We\n wanted 우리 [우=ㅇ+ㅜ · 리=ㄹ+ㅣ]\n wrote 우라 [우=ㅇ+ㅜ · 라=ㄹ+ㅏ]\n syllable 2 (라 for 리) — WRONG: vowel: wrote ㅏ, should be ㅣ — CORRECT, do not call these mistakes: first consonant ㄹ, batchim none\n\n(No lookups.)"
},
{
"role": "assistant",
"body": "Great work on the first round! \nYou almost nailed every word—just a single mistake in **We**. \n\n---\n\n### Your results\n\n```\n::result\nI | ok\nYou (casual) | ok\nWe | wrong | 우리\nTwo (Sino) | ok\nThat (near) | ok\nThere (over there) | ok\nWhere? | ok\nWho? | ok\nChild | ok\nMother | ok\nFather | ok\nTree | ok\nHead | ok\nSound | ok\nOne (Native) | ok\nSea | ok\nBridge | ok\n```\n\n### Progress\n\n```\n::progress 94 | Youre almost done with this unit—just one mistake to fix.\n```\n\n---\n\nNow lets reinforce a few new words that we havent practiced yet. \n\n```\n::task recall\nI | 나\nTwo (Sino) | 이\nThat (near) | 그\nI (humble) | 저\nHere | 여기\nThere (there) | 거기\n```\n\n### Words used in this lesson\n\n```\n::words\n나 | I, me (casual)\n이 | two (Sino)\n그 | that (near you or already mentioned)\n저 | I, me (humble)\n여기 | here\n거기 | there\n```"
},
{
"role": "user",
"body": "My written answers:\nI → 나\nTwo (Sino) → 이\nThat (near) → 그\nI (humble) → 나\nHere → 여기\nThere (there) → 여기\n\n════ LETTER-LEVEL CHECK — computed by the app ════\nThis is the actual jamo comparison. Use it exactly. Do NOT work out for yourself which letter was wrong, and never call a letter wrong that is listed as correct.\n• There (there)\n wanted 거기 [거=ㄱ+ㅓ · 기=ㄱ+ㅣ]\n wrote 여기 [여=ㅇ+ㅕ · 기=ㄱ+ㅣ]\n syllable 1 (여 for 거) — WRONG: first consonant: wrote ㅇ, should be ㄱ; vowel: wrote ㅕ, should be ㅓ — CORRECT, do not call these mistakes: batchim none\n\n(No lookups.)"
},
{
"role": "assistant",
"body": "Youre getting the hang of it! \nTwo small mistakes—lets fix them.\n\n---\n\n### Your results\n\n```\n::result\nI | ok\nTwo (Sino) | ok\nThat (near) | ok\nI (humble) | wrong | 저\nHere | ok\nThere (there) | wrong | 거기\n```\n\n### Progress\n\n```\n::progress 98 | Youre almost finished with this unit—just a couple of words to practice.\n```\n\n---\n\nNow lets practice the two words you missed. Well do another recall exercise, and well add one new word that hasnt appeared yet: **너** (you, casual).\n\n```\n::task recall\nI (humble) | 저\nThere (there) | 거기\nYou (casual) | 너\n```\n\n### Words used in this lesson\n\n```\n::words\n저 | I, me (humble)\n거기 | there\n너 | you (casual)\n```"
},
{
"role": "user",
"body": "My written answers:\nI (humble) → 저\nThere (there) → 거기\nYou (casual) → 너\n\n(No lookups.)"
},
{
"role": "assistant",
"body": "Excellent! All three words were read correctly.\n\n---\n\n### Your results\n\n```\n::result\nI (humble) | ok\nThere (there) | ok\nYou (casual) | ok\n```\n\n### Progress\n\n```\n::progress 100 | Youve mastered all the basic blocks in this unit. Ready to move on to the next one!\n```"
}
]
}

View File

@@ -0,0 +1,69 @@
{
"source": "gpt-oss-20b (LM Studio) through server/src/backends/openai.ts, unit 1.1, 16 Sep 2026, second session. The whole transcript, verbatim. The model marked in prose only, with no ::result block, and wrote ::progress on messages that answered nothing.",
"turns": [
{
"role": "user",
"body": "Let's start unit 1.1 자음과 모음 (Consonants & vowels). Give me the full introduction, then a first exercise."
},
{
"role": "assistant",
"body": "Welcome! Im your reading tutor for the very first lesson in Korean, unit1.1 자음과 모음 (Consonants & vowels). \nThis unit is all about **how a block is built**: one initial consonant + one vowel. The blocks you will read are the simplest syllables in Korean no final consonants, no compound vowels, no tense or aspirated sounds. \n\n### Why this rule matters \nEvery Korean word is made of these blocks stacked together. If you can read a block, you already know how to decode every other block that follows it. The first step is therefore the most fundamental: recognizing and saying the consonantvowel pair. \nThe ten basic vowels are ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ. \nThe plain consonants you will see in this unit are ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ ㅎ. \n\n### A quick example of a block \nTake **나**: it is made of the consonant ㄴ and the vowel ㅏ, written together as 하나의 블록. \nWhen you see this block, you read “na”. \nThe same idea applies to every other block: \n- **너**(ㄴ+ㅓ) → “neo” \n- **이**(ㅇ+ㅣ) → “i” (the ㅇ is silent at the start) \n- **그**(ㄱ+ㅡ) → “geu” \n- **저**(ㅈ+ㅓ) → “jeo”\n\n### Common mistake \nA new learner often mixes up ㄴ and ㄹ because they look similar. If you read a block that starts with ㄴ but sound it like ㄹ, the meaning will be wrong. Practice the shapes and sounds of each consonant separately.\n\n### New words for this unit \nThe words well use in your exercises are all simple blocks that fit the rule: **나 너 이 그 저**. \n\nYoure ready to start reading! Lets practice by writing these words from English prompts.\n\n---\n\n::task recall\nI | 나\nyou (casual) | 너\ntwo (Sino) | 이\nthat (near you) | 그\nI (humble) | 저\n\n::words\n나 | I | ㄴ+ㅏ\n너 | you (casual) | ㄴ+ㅓ\n이 | two (Sino) | ㅇ+ㅣ\n그 | that (near you) | ㄱ+ㅡ\n저 | I (humble) | ㅈ+ㅓ"
},
{
"role": "user",
"body": "My written answers:\nI → 나\nyou (casual) → 너\ntwo (Sino) → 이\nthat (near you) → 그\nI (humble) → 나\n\n════ LETTER-LEVEL CHECK — computed by the app ════\nThis is the actual jamo comparison. Use it exactly. Do NOT work out for yourself which letter was wrong, and never call a letter wrong that is listed as correct.\n• I (humble)\n wanted 저 [저=ㅈ+ㅓ]\n wrote 나 [나=ㄴ+ㅏ]\n syllable 1 (나 for 저) — WRONG: first consonant: wrote ㄴ, should be ㅈ; vowel: wrote ㅏ, should be ㅓ — CORRECT, do not call these mistakes: batchim none\n\n(No lookups.)"
},
{
"role": "assistant",
"body": "✓ 나 | I \n✓ 너 | you (casual) \n✓ 이 | two (Sino) \n✓ 그 | that (near you) \n✗ 나 | I (humble) → 저\n\n::words\n나 | I | ㄴ+ㅏ\n너 | you (casual) | ㄴ+ㅓ\n이 | two (Sino) | ㅇ+ㅣ\n그 | that (near you) | ㄱ+ㅡ\n나 | I (humble) | ㄴ+ㅏ\n\n::progress 80 | Youre reading most of the simple blocks correctly! Keep practicing to get all five right."
},
{
"role": "user",
"body": "새 문제 주세요. Give me a new exercise."
},
{
"role": "assistant",
"body": "Heres a new practice set. Write the Korean words from the English prompts.\n\n---\n\n::task recall\nthe sea | 바다 \nbridge | 다리 \nI (humble) | 저 \nyou (casual) | 너 \none | 하나\n\n::words\n나 | I | ㄴ+ㅏ\n너 | you (casual) | ㄴ+ㅓ\n이 | two (Sino) | ㅇ+ㅣ\n그 | that (near you) | ㄱ+ㅡ\n저 | I (humble) | ㅈ+ㅓ\n바다 | the sea | ㅂ+ㅏ + ㄷ+ㅏ \n다리 | bridge | ㄷ+ㅏ + ㄹ+ㅣ \n하나 | one | 하(ㅎ+ㅏ) + 나(ㄴ+ㅏ)"
},
{
"role": "user",
"body": "My written answers:\nthe sea → 바다\nbridge → 나\nI (humble) → 나\nyou (casual) → 너\none → 하나\n\n════ LETTER-LEVEL CHECK — computed by the app ════\nThis is the actual jamo comparison. Use it exactly. Do NOT work out for yourself which letter was wrong, and never call a letter wrong that is listed as correct.\n• bridge\n wanted 다리 [다=ㄷ+ㅏ · 리=ㄹ+ㅣ]\n wrote 나 [나=ㄴ+ㅏ]\n length differs: 2 syllables expected, 1 written | syllable 1 (나 for 다) — WRONG: first consonant: wrote ㄴ, should be ㄷ — CORRECT, do not call these mistakes: vowel ㅏ, batchim none\n• I (humble)\n wanted 저 [저=ㅈ+ㅓ]\n wrote 나 [나=ㄴ+ㅏ]\n syllable 1 (나 for 저) — WRONG: first consonant: wrote ㄴ, should be ㅈ; vowel: wrote ㅏ, should be ㅓ — CORRECT, do not call these mistakes: batchim none\n\n(No lookups.)"
},
{
"role": "assistant",
"body": "✓ 바다 | the sea \n✗ 나 | bridge → 다리 \n✗ 나 | I (humble) → 저 \n✓ 너 | you (casual) \n✓ 하나 | one \n\n::words\n바다 | the sea | ㅂ+ㅏ + ㄷ+ㅏ \n다리 | bridge | ㄷ+ㅏ + ㄹ+ㅣ \n하나 | one | 하(ㅎ+ㅏ) + 나(ㄴ+ㅏ) \n너 | you (casual) | ㄴ+ㅓ \n이 | two (Sino) | ㅇ+ㅣ \n그 | that (near you) | ㄱ+ㅡ \n저 | I (humble) | ㅈ+ㅓ \n나 | wrong | ㄴ+ㅏ \n\n::progress 60 | Youre reading most of the simple blocks correctly! Keep practicing to get all five right."
},
{
"role": "user",
"body": "새 문제 주세요. Give me a new exercise."
},
{
"role": "assistant",
"body": "Heres a fresh practice set. Write the Korean word that matches each English prompt.\n\n---\n\n::task recall\nhere | 여기 \nthere | 거기 \nover there | 저기 \ntree | 나무 \nsound | 소리\n\n::words\n여기 | here | ㅇ+ㅕ \n거기 | there | ㄱ+ㅓ + 기(ㄱ+ㅣ) \n저기 | over there | ㅈ+ㅓ + 기(ㄱ+ㅣ) \n나무 | tree | ㄴ+ㅏ + 무(ㅁ+ㅜ) \n소리 | sound | ㅅ+ㅗ + 리(ㄹ+ㅣ) \n\n::progress 65 | Youre getting more comfortable reading simple blocks! Keep practicing to nail all five."
},
{
"role": "user",
"body": "My written answers:\nhere → 여기\nthere → 여기\nover there → 여기\ntree → 나무\nsound → 소리\n\n════ LETTER-LEVEL CHECK — computed by the app ════\nThis is the actual jamo comparison. Use it exactly. Do NOT work out for yourself which letter was wrong, and never call a letter wrong that is listed as correct.\n• there\n wanted 거기 [거=ㄱ+ㅓ · 기=ㄱ+ㅣ]\n wrote 여기 [여=ㅇ+ㅕ · 기=ㄱ+ㅣ]\n syllable 1 (여 for 거) — WRONG: first consonant: wrote ㅇ, should be ㄱ; vowel: wrote ㅕ, should be ㅓ — CORRECT, do not call these mistakes: batchim none\n• over there\n wanted 저기 [저=ㅈ+ㅓ · 기=ㄱ+ㅣ]\n wrote 여기 [여=ㅇ+ㅕ · 기=ㄱ+ㅣ]\n syllable 1 (여 for 저) — WRONG: first consonant: wrote ㅇ, should be ㅈ; vowel: wrote ㅕ, should be ㅓ — CORRECT, do not call these mistakes: batchim none\n\n(No lookups.)"
},
{
"role": "assistant",
"body": "✓ 여기 | here \n✗ 여기 | there → 거기 \n✗ 여기 | over there → 저기 \n✓ 나무 | tree \n✓ 소리 | sound \n\n::words\n여기 | here | ㅇ+ㅕ \n거기 | there | ㄱ+ㅓ + 기(ㄱ+ㅣ) \n저기 | over there | ㅈ+ㅓ + 기(ㄱ+ㅣ) \n나무 | tree | ㄴ+ㅏ + 무(ㅁ+ㅜ) \n소리 | sound | ㅅ+ㅗ + 리(ㄹ+ㅣ) \n\n::progress 70 | Youre reading most of the simple blocks correctly! Keep practicing to get all five right."
},
{
"role": "user",
"body": "새 문제 주세요. Give me a new exercise."
},
{
"role": "assistant",
"body": "Youre doing great! Lets keep practicing by writing the Korean words that match each English prompt. \n\n---\n\n::task recall\nI (humble) | 저 \nyou (casual) | 너 \ntree | 나무 \nsound | 소리 \nthe sea | 바다\n\n::words\n저 | I (humble) | ㅈ+ㅓ \n너 | you (casual) | ㄴ+ㅓ \n나무 | tree | ㄴ+ㅏ + 무(ㅁ+ㅜ) \n소리 | sound | ㅅ+ㅗ + 리(ㄹ+ㅣ) \n바다 | the sea | ㅂ+ㅏ + 다(ㄷ+ㅏ) \n\n::progress 75 | Keep up! Youre reading most of these simple blocks correctly."
},
{
"role": "user",
"body": "새 문제 주세요. Give me a new exercise."
},
{
"role": "assistant",
"body": "Heres a fresh practice set. Write the Korean word that matches each English prompt.\n\n---\n\n::task recall\nI (humble) | 저 \nyou (casual) | 너 \nchild | 아이 \nmother | 어머니 \nhead | 머리\n\n::words\n저 | I (humble) | ㅈ+ㅓ \n너 | you (casual) | ㄴ+ㅓ \n아이 | child | 아(ㅇ+ㅏ) + 이(ㅇ+ㅣ) \n어머니 | mother | 어(ㅇ+ㅓ) + 머(ㅁ+ㅔ?) + 니(ㄴ+ㅣ) \n머리 | head | 머(ㅁ+ㅔ?) + 리(ㄹ+ㅣ) \n\n::progress 80 | Youre reading most of these simple blocks correctly! Keep practicing to get all five right."
}
]
}

View File

@@ -0,0 +1,8 @@
{
"source": "gpt-oss-20b (LM Studio) through server/src/backends/openai.ts, unit 1.1, 16 Sep 2026. Verbatim.",
"answered": "**Unit1.1 자음과 모음 Consonants & vowels**\n\nThe first thing youll learn is how Korean letters are put together into *blocks* (or syllables). \nEvery block has two parts: an initial consonant (the *기초 자음*) and a vowel. \nWe will only use the plain, singleletter consonants that can start a block:\n\nㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈㅎ\n\nand the ten basic vowels:\n\nㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ\n\nNo final consonant will appear yet, so each block looks like “ㄱ + ㅏ” → **가**, “ㅇ + ㅔ” → **여**.\n\nBecause the syllable is just a pair of letters, you can read it by looking at the shape: \nthe initial consonant on the left and the vowel on the right. \nIf you see ㄴ and ㅓ together, you know its **너**; if you see ㅇ and ㅜ together, its **우리**.\n\nThe goal of this unit is to recognize these blocks and write them out. \nYoull practice by reading Korean words that contain only one block (no final consonant) and writing the English meaning or the Korean word itself.\n\n---\n\n### First exercise *Recall* \n\nWrite the Korean syllables for each English prompt. \n(Use the new words listed in this unit.)\n\n::task recall\nI | 나 \nyou | 너 \nwe | 우리 \nthere | 거기 \none | 하나\n\n---\n\n::words\n나 | I | (plain consonant ㄴ + vowel ㅏ) \n너 | you | (ㄴ + ㅓ) \n우리 | we | (ㅇ + ㅜ) \n거기 | there | (여(ㅇ+ㅕ), 기(ㄱ+ㅣ)) \n하나 | one | (ㅎ + ㅏ)\n\n---\n\n*You have just started. Keep practicing the shapes of these syllables, and youll be ready to read more Korean words soon.*",
"answer": "My written answers:\nI → 나\nyou → 너\nwe → 우라\nthere → 거기\none → 하나\n--- → 나\n\n════ LETTER-LEVEL CHECK — computed by the app ════\nThis is the actual jamo comparison. Use it exactly. Do NOT work out for yourself which letter was wrong, and never call a letter wrong that is listed as correct.\n• we\n wanted 우리 [우=ㅇ+ㅜ · 리=ㄹ+ㅣ]\n wrote 우라 [우=ㅇ+ㅜ · 라=ㄹ+ㅏ]\n syllable 2 (라 for 리) — WRONG: vowel: wrote ㅏ, should be ㅣ — CORRECT, do not call these mistakes: first consonant ㄹ, batchim none\n\n(No lookups.)",
"marking": "You did most of them right, just a couple of small mistakes:\n\n::result\nI | ok | 나 \nyou | ok | 너 \nwe | wrong | 우라 → 우리 \nthere | ok | 거기 \none | ok | 하나\n\nYou wrote an extra line \"--- → 나\" that didnt match any prompt you can ignore it.\n\nThe first time youve answered, your score for this unit is about **5%**. Keep practicing the shapes of these syllables; well add a few more words next.\n\n---\n\n### Next exercise *Recall* \n\nWrite the Korean syllables for each English prompt. \n(Use the new words listed in this unit.)\n\n::task recall\ntwo | 이 \nthat | 그 \nI (humble) | 저\n\n---\n\n::words\n나 | I | (ㄴ + ㅏ) \n너 | you | (ㄴ + ㅓ) \n우리 | we | (ㅇ + ㅜ) \n거기 | there | (여(ㅇ+ㅕ), 기(ㄱ+ㅣ)) \n하나 | one | (ㅎ + ㅏ) \n우라 | wrong answer for 우리 | (ㅇ + ㅜ, 라(ㄹ+ㅏ)) \n이 | two | (ㅇ + ㅣ) \n그 | that | (ㄱ + ㅡ) \n저 | I (humble) | (ㅈ + ㅓ)\n\n::progress 5%",
"asked": "Give me a translate exercise that uses the words 도서관 and 병원.",
"reply": "**Translate read the Korean, type the English meaning**\n\nHere are simple words that contain only one block each (no final consonant). \n\n::task translate\n나 | I \n너 | you \n우리 | we \n거기 | there \n하나 | one\n\n---\n\n::words\n나 | I | (ㄴ + ㅏ) \n너 | you | (ㄴ + ㅓ) \n우리 | we | (ㅇ + ㅜ) \n거기 | there | (여(ㅇ+ㅕ), 기(ㄱ+ㅣ)) \n하나 | one | (ㅎ + ㅏ)\n\n---\n\n*Try to read each Korean word and write the English translation. Good luck!*"
}