Every table so far
referenceEvery table taught so far on one page, and the endings that mean four different things depending on the table.
scripts/hub.mjs · Phase 1 — A1 foundations (U01–U10). 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. 2 of the 268 tracked items are not in it: they are
seeded against a unit that has not taught them yet.Run /limba-lesson — 3 lessons short, 2 drills short.
The queue leads part 1, then U08.
102 came around, 149 in the pool. Part 1's 10′ takes the oldest 10 of them; the rest keep their place in line — the queue is oldest-first so the tail can wait. A drill instead spends ≈185′ on the same rows and teaches nothing new. Agree a block budget before the first set.
SES-032 left: (1) The weekly review and replan the learner has asked for — this is the second session in a row to stand open across an idle stretch. (2) The -ez- third person produced many times, not re-explained — ERR-105, ERR-093. (3) stânga and dreapta drilled against each other, anchored on drept. (4) The U07 part-2 words re-met. (5) Polite against familiar, chosen on cue — ERR-108. (6) U08 opens. (7) Carried: SES-031's Next.
Every table taught so far on one page, and the endings that mean four different things depending on the table.
The whole sound system: 31 letters, seven vowels, the digraphs, stress and the î/â rule — every sound playable.
A fi in the present, all six forms, with negation and questions — and the Eu student trap Ukrainian sets.
Subject pronouns complete, plus a map of all seven pronoun sub-systems and the unit each one arrives in.
ă and â/î with their anchors and minimal pairs (superseded by sounds, the whole system).
Unit 1's whole intake as a drill surface (superseded by deck.html, which rebuilds itself from the ledgers).
The three present-tense classes rebuilt after they failed, including the -ez- and -esc- infixes.
Thirty-two words that did not stay, each tied to something the learner already holds.
A avea in the present, the two ways to give your name, and 14 words for countries, nationalities and jobs.
Numbers 0–100 as a machine rather than a list, age with a avea, and the interrogatives cine, ce and cum.
The three present-tense classes rebuilt after they failed, including the -ez- and -esc- infixes.
Thirty-two words that did not stay, each tied to something the learner already holds.
The whole noun system: three genders with the counting test, and all five plural classes as paradigms.
Why each of unit 3's fourteen nouns takes the plural it takes, one change at a time.
The plural as three ordered steps you run forward, not a table you search backwards.
Noun gender as four gates run in sequence, not a word list to memorise.
Thirty-two words that did not stay, each tied to something the learner already holds.
The adjective as three ordered steps, built after step 3 turned out to be the one that goes missing.
Agreement as four cells rather than six, and the four form-classes an adjective can belong to.
All six owners across four forms, plus al/a/ai/ale at first contact in its possessive job only.
The adjective as three ordered steps, built after step 3 turned out to be the one that goes missing.
All eight forms of the article as an ending, and when Romanian requires the where Ukrainian uses nothing.
Group I stated as one set of six endings, and the half of the article rule that says when it is compulsory.
all four present-tense groups stated as one table of endings, plus the reflexive verbs.
Telling the time with și and fără, plus all seven days and all twelve months with their Russian mapping.
la, în and pe chosen by the kind of place, with the verb — not the noun — carrying where you are going.
The command form in all four shapes, plus left, right and the last of the words for crossing a city.
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 1 — A1 foundations (U01–U10) — highlighted below.
| 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, each beat in one place only, per its table — the page holds the material, chat carries placement, the load as a number, one trap, and the link |
| 3 | Graded check | ~10′ | 10 questions over today's + due material, sampling at least 3 of the day's new words; 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%. 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, spend the time on a repair loop over the misses, and flag it for /limba-review — 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, and the block does not run — see When part 1 does not run below, and srs.md. |
| A drill's SRS pass | Nothing to calibrate. | A drill has no target score. The band is fitted to 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. |
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/factcheck.mjsnode scripts/deck.mjsnode scripts/leakcheck.mjs <set.json>node scripts/newvisual.mjs <slug>node scripts/visualcheck.mjs <visual>.htmlnode scripts/visualcheck.mjs --allscripts/speak.sh "<text>"scripts/pronounce.sh "<text>"node scripts/tts-embed.mjs <f>node scripts/tts-warm.mjsnode scripts/profile.mjsnode scripts/hub.mjsnode scripts/closeout.mjs --startnode scripts/closeout.mjs --briefnode scripts/closeout.mjs --finishscripts/feedback.sh "<src>" --file <f>