chore: take in the 16 Sep bundle — lib, curriculum v5, prompt, gate audit
The artifact was reworked after real incidents: a week of lost data, a
student taught out of order, and spelling diagnoses the model invented.
This takes the new export in verbatim; the port catches up in the
commits that follow.
Copied byte-identical from the bundle:
lib/ lexicon.js and sync.js are new; gate.js gains enforcement,
hangul.js letter-level marking, srs.js recall evidence,
conjugation.js deconjugate(); blocks.js now takes the last
block, closes gloss at "=", and parses recall, ::result and
::confirmed
data/ curriculum.json v5 — six 다지기 phase reviews; the 371
roadmap words are unchanged and no band moves
prompt/ English-only rule, recall, LETTER-LEVEL CHECK, marking
audit-gate.mjs, run-checks.sh, fixtures/ — the word gate measured
against 54 real tutor messages
CI runs run-checks.sh in place of validate.mjs alone, and `npm run check`
gains the audit. Baselines: validate PASS 0/0; audit 7 of 41 and 2 of 13.
types/lib/ declares the new API, and test/lib/ pins it: letterCheck on
the prompt's own 짧다/빫다 case, deconjugation, the roadmap-first order
that keeps 마셔 out of Phase 1, sync's three gates, and recall evidence —
including the two ways lib's evidence is looser than PORT.md, pinned as
they are so the call site that tightens them is visibly needed.
TaskHost gains a plain recall renderer so the tree typechecks against the
wider Task union.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"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[].",
|
||||
"version": 5,
|
||||
"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[]. | v5: every phase ends with a 다지기 review unit that confirms all of its rules and words.",
|
||||
"phases": [
|
||||
{
|
||||
"phase": 1,
|
||||
@@ -297,6 +297,23 @@
|
||||
"이야기"
|
||||
],
|
||||
"revisits": []
|
||||
},
|
||||
{
|
||||
"id": "1.10",
|
||||
"ko": "다지기",
|
||||
"name": "Phase 1 review — every sound rule, every word",
|
||||
"goal": "Nothing new. This unit exists to prove Phase 1 holds: every one of the nine sound topics, read correctly and named correctly, and every word introduced along the way, recognised without a lookup. You do not leave 한글 until all of it is confirmed.",
|
||||
"vocabUnit": false,
|
||||
"review": true,
|
||||
"teaches": [
|
||||
"confirming, not adding — everything Phase 1 introduced, proven unaided"
|
||||
],
|
||||
"avoid": [
|
||||
"anything from a later phase",
|
||||
"introducing any new word — this unit adds none"
|
||||
],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -584,6 +601,23 @@
|
||||
"별로"
|
||||
],
|
||||
"revisits": []
|
||||
},
|
||||
{
|
||||
"id": "2.9",
|
||||
"ko": "다지기",
|
||||
"name": "Phase 2 review — the frame, confirmed",
|
||||
"goal": "Nothing new. Confirm the whole basic frame: the copula, 있다/없다, word order and the ending word, pointing and asking, both number systems with their counters, negation in front — and every word Phase 2 introduced.",
|
||||
"vocabUnit": false,
|
||||
"review": true,
|
||||
"teaches": [
|
||||
"confirming, not adding — everything Phase 2 introduced, proven unaided"
|
||||
],
|
||||
"avoid": [
|
||||
"anything from a later phase",
|
||||
"introducing any new word — this unit adds none"
|
||||
],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -800,6 +834,23 @@
|
||||
"지키다"
|
||||
],
|
||||
"revisits": []
|
||||
},
|
||||
{
|
||||
"id": "3.8",
|
||||
"ko": "다지기",
|
||||
"name": "Phase 3 review — every conjugation, confirmed",
|
||||
"goal": "Nothing new. Confirm the 아/어 rule and all seven irregular classes by producing them on demand, past and future included, plus every verb and adjective Phase 3 introduced.",
|
||||
"vocabUnit": false,
|
||||
"review": true,
|
||||
"teaches": [
|
||||
"confirming, not adding — everything Phase 3 introduced, proven unaided"
|
||||
],
|
||||
"avoid": [
|
||||
"anything from a later phase",
|
||||
"introducing any new word — this unit adds none"
|
||||
],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1008,6 +1059,23 @@
|
||||
"from": "3.5"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "4.9",
|
||||
"ko": "다지기",
|
||||
"name": "Phase 4 review — every particle, confirmed",
|
||||
"goal": "Nothing new. Confirm each particle by choosing correctly between them in context — 은/는 against 이/가 especially — and by tracking a dropped subject through an exchange. Plus every word Phase 4 introduced.",
|
||||
"vocabUnit": false,
|
||||
"review": true,
|
||||
"teaches": [
|
||||
"confirming, not adding — everything Phase 4 introduced, proven unaided"
|
||||
],
|
||||
"avoid": [
|
||||
"anything from a later phase",
|
||||
"introducing any new word — this unit adds none"
|
||||
],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1237,6 +1305,23 @@
|
||||
"from": "2.2"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "5.11",
|
||||
"ko": "다지기",
|
||||
"name": "Phase 5 review — every ending, confirmed",
|
||||
"goal": "Nothing new. Confirm every ending and clause connector from Phase 5, told apart by feel and not just by shape, plus the honorific and formal registers, plus every word the phase introduced.",
|
||||
"vocabUnit": false,
|
||||
"review": true,
|
||||
"teaches": [
|
||||
"confirming, not adding — everything Phase 5 introduced, proven unaided"
|
||||
],
|
||||
"avoid": [
|
||||
"anything from a later phase",
|
||||
"introducing any new word — this unit adds none"
|
||||
],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -1419,6 +1504,23 @@
|
||||
"avoid": [],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
},
|
||||
{
|
||||
"id": "6.9",
|
||||
"ko": "다지기",
|
||||
"name": "Phase 6 review — reading, confirmed",
|
||||
"goal": "Nothing new, and the last unit on the roadmap. Confirm every reading skill from Phase 6 — modifiers, quotation, register, spacing, sound words, genre vocabulary — on real manhwa lines at speed.",
|
||||
"vocabUnit": false,
|
||||
"review": true,
|
||||
"teaches": [
|
||||
"confirming, not adding — everything Phase 6 introduced, proven unaided"
|
||||
],
|
||||
"avoid": [
|
||||
"anything from a later phase",
|
||||
"introducing any new word — this unit adds none"
|
||||
],
|
||||
"words": [],
|
||||
"revisits": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user