Elamur Groupants⌕
☰

world-student-probe

The groupant beside world/examples/student_probe.rs in the Mova repository: what the code computes, what it never does, how to go back from its outputs, its invariants, cost and checks.

Facts

Implementation material. A Mova code model describes this code at one source revision: partial models, finite checks and their stated scope. It is not a reviewed general exposition, and its labels are shown as written, never raised.

Components

componentlabelwhere
approximantsource derivedforward
astpartialsyntax.json
costmeasured 2026 11 04cost
descriptantpresentepoch-memory
invariantsource derivedinvariant
testsexecuted bounded checkstests

Obernants

The typed relations around the forward model: the behaviour complement (what the code never does), the reverse reconstruction (every input compatible with an output) and specialised views.

idtypelabelwhere
world-student-probe-behavior-complementbehavior_complementpartial source derived modelbehavior-complement
world-student-probe-reverse-reconstructionreverse_reconstructionpartial source derived modelreverse-reconstruction

Model text

student_probe OUT_DIR COURSE...: the course pupil run through world::knowledge's public API with a clock on every stage and every answer. It is the reference observer for the speed measurements and the source of traces for the student's vidtvorant (../../src/knowledge.rs.groupant/student-vidtvorant.groupant).

forward

Per course: collect every text the course run parses (teaching lines; questions, right and wrong options of exercises, tests and exams) as course_texts does; count the distinct parse units (prag::frames::units) and their whitespace words; PragStudent::default(); preparse (timed, includes the model load on the first call); read_kinds; then per lesson read, two exercise passes of learn with shuffled(n<<20 | i<<1) (the recomputation reference of learn_lesson), then each test (seed | 1) and exam (seed | 1 ^ 0xE8A3) answered with answer and timed. Writes <course>.trace.tsv (shown options, choice, right, understood, scores, anchors, targets, frames remembered, answer ns) and <course>.stages.json (stage seconds, wall, process CPU seconds, counts, VmHWM).

invariant

The answers equal world knowledge course <course> --trace with PRAG_OFF=course-controls MOVA_COURSE_BEFORE=0: the same seeds, the same lesson order and, by the exactness of exercise reuse (docs/school.md, «Exact reuse inside lesson training»), the same weights after each lesson (reuse on in the CLI, off here). Nothing is written to the shared state (state::root() is not touched). Timing never feeds a decision.

cost

Parse ahead + Σ lessons (read + 2·exercises·answer + (tests + exams)·answer). Measured 2026-11-04 (one P-core thread, host load average 9–34): 6.2–18.1 s per course (median of five), parse ahead 40–70%, peak resident memory 0.95–1.09 GiB. Without exercise reuse it is slower than the CLI pupil alone (geography whole course: 7.0 s CLI against 7.8 s at load 9 and 11.7 s median here).

behavior-complement

Does not run the controls, the score before the exercises, the GPU path (unless the environment selects it), rule or gap diagnostics, nor save results; does not use the parse cache of bench; does not decide anything from times.

reverse-reconstruction

A trace row is compatible with every student state that gives the same choice and scores; times are compatible with many schedules and machine loads, so only medians over repetitions are used.

tests

Equality of choices with the CLI trace on commands (472 rows), myths (537) and geography (955), 2026-11-04. Five repetitions per course gave identical choices (the vidtvorant runner refuses otherwise).

epoch-memory

2026-11-04: added to measure the student's speed per stage and per answer without changing knowledge.rs; the trace format of the CLI stays as it is.

This page in Markdown → https://md.groupants.elamur.ai/free/en/mova/world/examples/student_probe.rs.groupant/