Elamur Groupants⌕
☰

mova-whale-review

The groupant beside tools/whale/src/review.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
approximantpartialForward approximant
astpartialsyntax.json
compositionpartialComposition
costpartialCost
descriptantpresentDescriptant
invariantpartialInvariant
testsfinite evidencetests.md

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
behavior_complementbehavior_complementpartial source derived modelbehavior_complement
reverse_reconstructionreverse_reconstructionpartial source derived modelreverse_reconstruction

Model text

Descriptant

Review hints: the Whale's own terminal reads the Whale's current description next to the paper parts it describes and answers with typed hint lines (MISSING, WRONG, UNCLEAR, REPHRASE, ORDER). Hints are per-paper working materials, cached by (description hash, paper hash); they guide which questions come first; their text never enters a description. Source: tools/whale/src/review.rs.

Forward approximant

requests(reading, description, parts, max_bytes): frame + description + as many described parts (paper order) as fit; further parts in further requests; each <= max_bytes (100,000 by default, 20,000..100,000); None when the description alone does not fit. parse(answer): KIND: part | text lines (ORDER: text), deduplicated, at most 40. cached/store/latest: hints/index.jsonl + round-NNN.json + round-NNN.md. focus(hints): content words of missing/wrong/unclear hints.

Invariant

A (description, paper) pair is reviewed at most once; every hint answer is kept with the Whale's answers, so the answer-overlap gate refuses any 6-gram copy of it in a description; no request exceeds max_bytes.

Cost

One request per <= max_bytes chunk (usually one); parsing linear in the answer; learn.rs asks only when a round gained fewer than min_gain_words words or the draft passes.

Composition

Parent: whale-workers. Called by learn.rs (when to review, ask, store, journal review/review_cached/hints; gaps orders terms and sentences by focus); configured by batch.rs/learn.rs (review).

behavior_complement

Not done: rewriting or reordering the description from hints (the writer restates in paper order and keeps every restatable clause; rephrase/order hints are journaled as ignored), checking that a hint is right, reviewing parts the description does not cover, a hint vocabulary beyond five kinds. Evidence status: source-derived model with finite checks, not a proof.

reverse_reconstruction

round-NNN.json names the description and paper hashes, request hashes and sizes and answer hashes; with knowledge/answers/SHA.txt the answers are recovered. Hints do not determine the answer text.

Epoch 2026-11-04 (created)

Fake-terminal tests only; no live review was run.

tests.md

review::tests::hints_are_parsed_bounded_and_cached; learn::tests::review_hints_are_cached_guide_questions_and_stay_out_of_descriptions (2026-11-04): requests <= 100,000 bytes with the description and the paper part; hints stored as json and md; no description reviewed twice; the hinted term is asked; hint text in no description. Red control: a description copying the hint fails the answer-overlap gate.

This page in Markdown → https://md.groupants.elamur.ai/free/en/mova/tools/whale/src/review.rs.groupant/