sounds
explainerThe whole sound system: 31-letter alphabet, all 7 vowels (5 free / 2 new), consonant values + digraphs, stress, no-palatalization, the î/â rule, [je] glide; embedded audio + reveal answers
scripts/hub.mjs · Phase 0 — Setup & calibration. Every number is read from the file that owns it — nothing here is hand-maintained.deck.html next to this page — rebuilt from
the ledgers at every close-out, so it is current. 1 of the 133 tracked items are not in it: they are
seeded against a unit that has not taught them yet.45 items are due. A /limba-drill clears the
queue in 10–15 minutes without teaching anything new; a /limba-lesson does the queue
first and then moves on to U04.
Last session left this pointer: (1) The 12 words of 2026-08-12 reach 48 hours on 2026-08-14 — ask them EN→RO bare, not as the full package. That is the one reading that separates instrument from retention, and the old design spends it. (2) U04 part 2 — al/a/ai/ale, possessives, diphthongs, family lexicon. (3) LEX-END needs the verb half first: the infinitive's final vowel is the conjugation class, it is now the top live pattern after VRB-CONJ, and U05 opens on it. (4) Add the -oare sub-rule to the gender-gate page — it is one line and it closes part of gate 4's hole. (5) NOUN-NUM needs singulars asked cold, with no plural block anywhere in the session, or its cause stays a guess. - Open questions. None outstanding. Three typo questions were asked and all three were answered in one numbered reply ("all mistakes"), which is what made LEX-END codable.
| VRB-CONJverb conjugation | 7× |
| LEX-ENDthe word is there and its ending is not — a final vowel dropped, added or exchanged | 6× |
| LEX-FFfalse friend | 6× |
| NOUN-GENnoun gender/plural form | 6× |
| ADJ-AGRadjective agreement | 4× |
| NOUN-NUMthe plural produced where the singular was asked, or the reverse | 3× |
| LEX-GAPthe word is not there — output is a plausible-shaped invention | 2× |
| ORTH-DIAdiacritics | 2× |
| PRONpronunciation (round-trip miss) | 2× |
| ORTH-CGsoft/hard c and g spelling | 1× |
| REGregister | 1× |
| 2026-08-13Drill, sweep mode | — |
| 2026-08-12Lesson | — |
| 2026-08-12Drill | — |
| 2026-08-12Drill | — |
| 2026-08-10Lesson | — |
| 2026-08-10Drill | — |
The whole sound system: 31-letter alphabet, all 7 vowels (5 free / 2 new), consonant values + digraphs, stress, no-palatalization, the î/â rule, [je] glide; embedded audio + reveal answers
the infinitive marker a (= EN "to"); a fi present in full — six forms, negation, questions; which piece each language deletes and the Eu student trap
subject pronouns complete + the coverage map of all 7 pronoun sub-systems with the unit each arrives in; ei/ele, no "it", register
ă and â/î with UA/RU anchors, minimal pairs, spelling combos (superseded by sounds — delta-only, no system)
The whole U01 intake as a drill surface — all 32 vocabulary items and 8 grammar patterns, audio on every one, tagged missed/held/not-tested from SES-004, with RO→EN and EN→RO modes and per-row reveal (superseded by deck.html — generated fresh from the ledgers by scripts/deck.mjs, so its tiers and tags never go stale)
The present-tense system — three conjugation classes (-a/-i/-e) and the -ez-/-esc- infixes, across all six verbs already issued; derive-from-the-eu-form + the five never-break rules + how to guess the infix; the noi/voi infix-drop rule; the -i/-ți register grid; the dropped-ă words that change meaning (adresă/adresa); infinitive ≠ eu-form; the 5 interrogatives; 8 reveal attempts, audio throughout
Every word that did not stay, tied to something already held — built after a full-backlog drill split the noun system in two: the plural routine ran 89% on securely-known words and 25% on shaky ones, grammar scored 85%, and vocabulary taught two days earlier scored 17%. Names the mechanism the session found: the wrong gender is not a gender error but the shape produced when the word is missing (o …ă as the default fill, nine sightings in one sitting, every one on a masculine or neuter). Section ① carries a withdrawal: the page first claimed the three words of sixteen that survived 48 hours were the three with a transfer anchor — the ledger showed all sixteen were already hooked, and no session ran on the intervening day, so that split measures intake volume and review interval, not anchoring. Carries 32 words as a two-layer drill surface (browse / RO→EN / EN→RO, per-row reveal, two clips per row) where the anchor conceals with the answer, plus the -e/-i coin flip stated as unstorable-by-rule and 4 guided attempts on nouns printed nowhere else on the page. 64 audio clips
a avea present in full — six forms, the n- contraction, questions; the naming chunks mă numesc / mă cheamă; 14 words for countries, nationalities and professions; the «у мене є» trap and the bare-profession rule
Numbers 0–100 complete — the spre/zeci machine with its UA parallel, the three contractions, the de threshold at 20; age with a avea; the interrogatives cine / ce / cum; 16 words; audio on every item + 5 reveal-answer attempts
The present-tense system — three conjugation classes (-a/-i/-e) and the -ez-/-esc- infixes, across all six verbs already issued; derive-from-the-eu-form + the five never-break rules + how to guess the infix; the noi/voi infix-drop rule; the -i/-ți register grid; the dropped-ă words that change meaning (adresă/adresa); infinitive ≠ eu-form; the 5 interrogatives; 8 reveal attempts, audio throughout
Every word that did not stay, tied to something already held — built after a full-backlog drill split the noun system in two: the plural routine ran 89% on securely-known words and 25% on shaky ones, grammar scored 85%, and vocabulary taught two days earlier scored 17%. Names the mechanism the session found: the wrong gender is not a gender error but the shape produced when the word is missing (o …ă as the default fill, nine sightings in one sitting, every one on a masculine or neuter). Section ① carries a withdrawal: the page first claimed the three words of sixteen that survived 48 hours were the three with a transfer anchor — the ledger showed all sixteen were already hooked, and no session ran on the intervening day, so that split measures intake volume and review interval, not anchoring. Carries 32 words as a two-layer drill surface (browse / RO→EN / EN→RO, per-row reveal, two clips per row) where the anchor conceals with the answer, plus the -e/-i coin flip stated as unstorable-by-rule and 4 guided attempts on nouns printed nowhere else on the page. 64 audio clips
The whole noun system — three genders with the counting test, and what "neuter" categorically is (two agreement patterns not three, ne-uter = "neither", the Latin origin, corpus/corpora → -uri, why it is a schedule not an identity); all five plural classes as marked paradigms; the stem alternations, consonant and vowel, with masă/mese vs casă/case and why the plural is stored not derived; the complete final-i inventory including the c/g digraph case and the Medici trap; un/o/niște; 14 words; 27 audio clips, 9 reveal attempts
Why each U03 plural has the shape it has — the 14 nouns sorted into the six things a plural ending can do, then one card per word: the marked ending, the marked stem change, the operations that ran, and the cause. Establishes that oa/ea are conditioned, not stored (oa before a/ă/e, ea before a/ă only) — the rule that makes calculatoare gaining a diphthong and ferestre losing one the same event; isolates masă/mese as the one plural in the set that no rule reaches. Gender, translation and audio on every word; 5 reveal checks
The plural as a procedure you run forward — three ordered steps (gender picks the shelf · the shelf gives the ending · the ending rewrites the stem), built after the mechanism page of 2026-08-09 explained every plural correctly and production still failed: that page reasons backwards from the answer, and this one runs forwards from the singular. Carries the ending shelf per gender with the two decidable feminine sub-cases and the -or → -oare bet; the oa/ea position table with its one asymmetric cell; the frozen-diphthong exemption (ceas, deal — if the singular already breaks the table, the word sits the rule out); the load stated as one stored fact per noun, not three; 4 worked examples and 6 attempts on nouns printed nowhere else on the page. The 16-word house set is a two-layer drill surface (browse / RO→EN / EN→RO, per-row reveal) with two clips per row so RO→EN can play the prompt without speaking the plural. 36 audio clips
Noun gender as an ordered procedure, not a word list — four gates run in sequence (-ă → f · alive → m · consonant/-u + inanimate → n · -e → not decidable), with the -e hole in the previous sheet named and fixed and animacy promoted from tie-breaker to rule; all 14 U03 nouns routed through the gate with the deciding gate labelled and only two left to store; the closed masculine -e set; the soft/hard c/g spelling grid (ce/che, ge/ghe) that caused two errors which looked unrelated; 6 audio clips, 5 gate-naming reveals
Every word that did not stay, tied to something already held — built after a full-backlog drill split the noun system in two: the plural routine ran 89% on securely-known words and 25% on shaky ones, grammar scored 85%, and vocabulary taught two days earlier scored 17%. Names the mechanism the session found: the wrong gender is not a gender error but the shape produced when the word is missing (o …ă as the default fill, nine sightings in one sitting, every one on a masculine or neuter). Section ① carries a withdrawal: the page first claimed the three words of sixteen that survived 48 hours were the three with a transfer anchor — the ledger showed all sixteen were already hooked, and no session ran on the intervening day, so that split measures intake volume and review interval, not anchoring. Carries 32 words as a two-layer drill surface (browse / RO→EN / EN→RO, per-row reveal, two clips per row) where the anchor conceals with the answer, plus the -e/-i coin flip stated as unstorable-by-rule and 4 guided attempts on nouns printed nowhere else on the page. 64 audio clips
The adjective as a procedure you run forward — three ordered steps (read the noun's gender and number · the form-class decides whether an ending exists at all · the ending rewrites the word), built the same evening as the teach page because a 10-item drill separated the two halves cleanly: the ending was chosen correctly on every item, and three of four misses were the stem left unrewritten (proste, frumosi, verdi). States step 3 as one line — -ă and -e open the vowel, -i softens the final consonant — which is the complete account of those three misses. Carries the consonant set before -i (d→z, s→ș, t→ț, c stays c) against the nouns the learner already inflects correctly (oglinzi, străzi, frați, munți, studenți), because this is the same step 3 that carries the U03 plural at 90%; the cluster caveat (prost → proști, only the s moves); the vowel-stays warning before -i (proști, frumoși keep their o); the four form-classes; and mare corrected — gender does not move it, number does. One UA line for the concept only (рука → руці). 4 worked examples and 6 attempts on nouns printed nowhere else on the page. 21 audio clips
Adjective agreement, complete — the grid stated as four cells, not six, because the neuter has no adjective form of its own and borrows the masculine in the singular and the feminine in the plural; all four form-classes (4 forms bun · 3 mic, nou · 2 mare, verde · 1 maro), with the -ic exception named against simpatic. States the load as one fact per adjective and the endings as fixed — there is no -e/-i coin flip and no -uri on an adjective, which is the one place the adjective is easier than the noun the learner has been losing. Three UA deltas: the adjective follows the noun, no third form for the neuter, and not every adjective moves (o casă mare, never mară). Carries the 12 U04 words — 6 family, 6 adjectives — as a two-layer drill surface (browse / RO→EN / EN→RO, per-row reveal, two clips per row) where every row's anchor is stated and conceals with the answer, this being the session that tests whether an anchor is what makes a word survive. 6 guided attempts on adjectives printed nowhere else on the page. 28 audio clips
The adjective as a procedure you run forward — three ordered steps (read the noun's gender and number · the form-class decides whether an ending exists at all · the ending rewrites the word), built the same evening as the teach page because a 10-item drill separated the two halves cleanly: the ending was chosen correctly on every item, and three of four misses were the stem left unrewritten (proste, frumosi, verdi). States step 3 as one line — -ă and -e open the vowel, -i softens the final consonant — which is the complete account of those three misses. Carries the consonant set before -i (d→z, s→ș, t→ț, c stays c) against the nouns the learner already inflects correctly (oglinzi, străzi, frați, munți, studenți), because this is the same step 3 that carries the U03 plural at 90%; the cluster caveat (prost → proști, only the s moves); the vowel-stays warning before -i (proști, frumoși keep their o); the four form-classes; and mare corrected — gender does not move it, number does. One UA line for the concept only (рука → руці). 4 worked examples and 6 attempts on nouns printed nowhere else on the page. 21 audio clips
The tables below are read straight out of the files that define these rules — the phase plan from the plan, the five parts from the session mechanic, the seven beats from the teaching contract. They keep their working voice, file references and all, because a friendlier paraphrase here would be a second copy free to drift from the rules actually in force. Change a rule in its own file and this drawer changes with it.
Every unit is a themed block of grammar and vocabulary. Phases group them and each ends with an assessment that gates the next one: a mini-mock at U10, a threshold test at U20, a full four-section mock at U30. Phase 4 stops teaching and only drills the exam. Right now you are in Phase 0 — Setup & calibration, which comes before the teaching phases below: it is setup and calibration, not units.
| Phase | Units | Weeks | Ends | Weekly load |
|---|---|---|---|---|
| 1 | U01–U10 | 5 | 2026-09-03 | ~4 lessons + 2 drills |
| 2 | U11–U20 | 6 | 2026-10-15 | ~4 lessons + 2 drills (U11–U15 buffer week included) |
| 3 | U21–U30 | 5 | 2026-11-19 | ~4 lessons + 2 writes |
| 4 | drilling | 6 | exam | weekly mock cycles |
The weekly load column above is the plan. Lessons carry new material; drills keep the old material warm without adding any; the weekly review checks pace against the exam date and changes the plan when reality disagrees with it.
/limba-drill/limba-lesson/limba-mock/limba-retro/limba-review/limba-vocab/limba-writeThe order is deliberate: the graded check comes before applied practice, so the check measures what the teaching alone landed, and practice becomes targeted repair of whatever it just missed.
| # | Part | Time | What happens |
|---|---|---|---|
| 1 | SRS review | ~10′ | node scripts/queue.mjs → quiz due items at the mode their tier calls for (RO→EN at tier 1, EN→RO bare at 2, the full package as the tier-3 gate, sweep at 4–5 — srs.md); grammar items via one production sentence each → update tier/last |
| 2 | New material | ~30′ | Current unit (../curriculum.md): 10–20 new vocab items with gender/plural + transfer hooks; 1 grammar point — built per teaching.md, all eight beats, split chat/visual per its table (paradigms and word lists live in the visual, chat carries the contrast) |
| 3 | Graded check | ~10′ | 10 questions over today's + due material, sampling at least 3 of the day's new words (see below); score recorded in the session log |
| 4 | Applied practice | ~15′ | Short reading or guided dialogue that forces due + new items into use, aimed at what part 3 just missed; exam-adjacent formats preferred |
| 5 | Close-out | ~5′ | The ritual below |
What happens when a part scores badly depends on which part — a bad SRS review and a bad graded check mean opposite things:
| Where it failed | What it means | What to do |
|---|---|---|
| Part 3 — graded check | Today's material was too hard. | Target is 60–70% — the challenge sweet spot. Two consecutive sessions > 80% → pace up (more items, denser texts) at the next review. < 50% → pace down and drill the gap before new material. |
| Part 1 — SRS review | Retention of already-taught material has failed. The intake volume or the interval is wrong. | < 50% → do not teach a full part 2 on top of it. Cut the new intake hard or drop it entirely, spend the reclaimed time on a repair loop over the misses, and flag it for /limba-review — this is evidence about the ladder and the intake number, not about today's unit. |
| Part 1, second session the same day | Nothing. Those rows were answered hours ago; tier 1 is a zero-day interval, so the queue reports them due again. | The band does not apply. Run part 1 as declared re-exposure — no score, no tier movement, report a pattern instead of a number (srs.md, "Due when the row was already reviewed today"). Reading a low number here as failed retention would cut the day's new material for the opposite reason. |
| A drill's SRS pass | Nothing to calibrate. | A drill has no target score. The band is calibrated for ten questions on the day's new material; a drill measures retention of old material, where the same number means the opposite thing. Report the number, do not grade the session against it. SES-010 scored 61% and SES-009's blocks 71% and 67%, and all three came close to being read against a band that was never fitted to them. |
When something is genuinely broken, the fix is the repair loop: test → show the answers → work out why each miss happened → build the material that was missing → retest on new items covering the same ground. Up to three rounds. It is the shape you invented in SES-007, where it took a score from 43% to 86% in one sitting.
How the new-material half of a lesson is built. The rule behind the order: the whole system first, the difference from Ukrainian second — the opposite order is efficient only for someone who already holds the map.
| # | Beat | What it does |
|---|---|---|
| ① | Placement | Where this sits in its topic, what it exhausts, what's deferred and to which unit, which exam sections it serves |
| ② | The whole system | The complete inventory — table, paradigm, or rule set — before any contrast |
| ③ | The load | What must actually be memorised, and what follows automatically from it |
| ④ | The delta | What differs from UA/RU/EN, grounded per ../reference/transfer.md |
| ⑤ | Worked examples | 2–3, fully translated, with a one-line "what's happening" |
| ⑥ | First contact only | What was named but not taught, and the unit where it returns |
| ⑦ | Guided attempt | 2–3 low-stakes items with concealed answers — before anything graded |
| ⑧ | The compressed rule | One line to carry away |
Every word and grammar pattern sits on the tier ladder shown above. Anything you recall cleanly moves up a rung and comes back later; anything you miss drops one and comes back sooner. Each rung asks a harder question than the one below it: tier 1 only asks what a Romanian word means, tier 2 asks you to produce the bare word from English, and tier 3 asks the whole thing — article, singular and plural — which is the exam-shaped question and the gate into "owned". Tiers 4 and 5 are a fast recognition sweep that keeps it warm. Nothing is ever retired before exam day.
/limba-drill/limba-lesson/limba-mock/limba-retro/limba-review/limba-vocab/limba-writenpm installnpm testnpm run test:watchnode scripts/queue.mjsnode scripts/queue.mjs --countsnode scripts/dex.mjs <word>node scripts/deck.mjsnode scripts/leakcheck.mjs <set.json>node scripts/leakcheck.mjs <visual>.htmlscripts/speak.sh "<text>"scripts/pronounce.sh "<text>"node scripts/tts-embed.mjs <f>node scripts/tts-warm.mjsnode scripts/hub.mjsscripts/feedback.sh "<src>" --file <f>