Mova0.6 pre-release⌕
☰
home / docs / tools / Sea Turtle — mova-turtle

Sea Turtle — mova-turtle

🐢 Sea Turtle is one of Mova's animals (Rust on Mova): the school maker — questions, lessons and exams in the school's lesson format. The long-lived teacher that comes back every year. See the sea animals of Mova and how the schools are made.

It works natively first: it checks courses with the school's own rules and makes gap questions from a 🐚 Nautilus dictionary layer. Written lessons and questions come from a teacher only through the Turtle's own private terminal and the operator's word (nautilus::teacher, purpose questions, over mova-terminal).

Commands

turtle check COURSE|DIR                          the school's rule and the marks of every lesson (JSON; fails on ✗)
turtle gap LAYER_TSV COURSE SOURCE OUT JOURNAL MODEL   gap questions from a Nautilus layer into the new folder OUT
                                                 (MODEL: Mova's en.bin, which reads each gap's slot)
turtle made JOURNAL                              makings, lessons and questions recorded in the journal
turtle lesson-task COURSE TOPIC FIRST N          print a teacher question to write N lessons (nothing is sent)
turtle work CONFIG TEACHERS PROFILE STATE [STEPS|- [SECS [BATCH]]]   the standing loop over the configured courses
turtle work-summary STATE                        events, throughput, rejection and hold reasons
turtle work-resume STATE                         continue after a limit has passed
turtle plan DEPUTY_CONFIG CONFIG ID < text       read English, run it with the Turtle's hands, print the answer
turtle serve DEPUTY_CONFIG CONFIG SOCKET LOCK    answer English on a private socket (one per LOCK; STOP ends it)
turtle ask SOCKET ID [urgent] < text             send English to a serving Turtle

Build and test:

cargo build --release --manifest-path tools/turtle/Cargo.toml --offline --locked
MOVA_OCTOPUS_TEST_MODEL=$MOVA_DATA/download/0/0.4/en.bin cargo test --manifest-path tools/turtle/Cargo.toml --offline --locked

What it does

In English

deputy.example.json (handler turtle; operations check with the course, made; no slots): "Check the command course.", "Please check the command course.", "Could you check the command course?", "Check the commands lessons.", "How many questions did you make?", "How many questions have you made?", "Check the commands course." (the 0.5 parse reads «commands» as its object; the 0.4 parse read it as a verb and refused). Refused with a review candidate: negation, "Delete the command course.", "Check the course." (which course?), and questions about a check ("Is the command course checked?"): only made (declared observes) answers questions. Answers: "I checked the commands course: N lessons with M questions. Every lesson keeps the school's rules and its right answers are marked at varied places.", "I have not made any questions yet."

serve holds a singleton lock like Nautilus. crab-workers.example.json lists the English service, the standing loop and the Turtle's own terminal holder (Opus through Claude Code, terminal.example.json), all autostart: false.

The standing loop

work (src/work.rs over nautilus::work with make::LessonJob) works the configured courses in two kinds of step. A sweep reads every open lesson in order (held-out and control sets, a name with test or shuffled, are never read) and closes those that pass check::lesson, up to BATCH (500) a sweep, with the loop's own native journal line; a sweep that closed something is followed by the next at once, with no pause. Only when a sweep closes nothing does a teacher step (Loop::step) take the first open lesson, one with a problem: it goes to the teacher with its problems under that loop's gates (the operator's word, a question at most every 600 s, limits), and the answer is kept as a review-only proposal only when it is the same lesson (course and number) and passes the same check; then the loop pauses SECS (four times that while idle or waiting). The course files are never written.

Tests

Unit tests, and English and gap tests that need the model in MOVA_OCTOPUS_TEST_MODEL (see Build and test above; the gap tests also read Open English WordNet under json). Red controls: only/just and mum/parent are refused as near-synonyms, now/out/just and go/say as words that fit the gap, on today's sentences and on the whole commands layer. Negative controls (each red, restored): check without the school's rule; held-out course names read; the deputy vocabulary without «command»; the fit check switched off (unit and real-data gap tests red); the sweep reading held-out courses; a teacher step after a sweep that closed lessons.

Scope

Turtle checks existing courses, makes native gap questions from dictionary layers, prepares lesson tasks and keeps teacher replies as review-only proposals. The standing loop never writes course files and never admits a proposal. Course publication and question generators outside this crate are not part of it.

This page in Markdown → https://md.mova.elamur.ai/free/en/docs/tools/turtle/