---
title: "mova-nautilus-improve — Mova code model"
description: "Mova code model of tools/nautilus/src/improve.rs: components with their labels, obernants and the model text."
url: "https://groupants.elamur.ai/free/en/mova/tools/nautilus/src/improve.rs.groupant/"
---
Elamur: [Mova](https://md.mova.elamur.ai/free/en/) · [Dictionary](https://md.dictionary.elamur.ai/free/en/) · [Research](https://md.research.elamur.ai/free/en/) · **Groupants**

This page as HTML: <https://groupants.elamur.ai/free/en/mova/tools/nautilus/src/improve.rs.groupant/>

# mova-nautilus-improve

The groupant beside tools/nautilus/src/improve.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

- **kind:** groupant
- **status:** partial source bound model
- **source:** [`tools/nautilus/src/improve.rs`](https://github.com/ElamurAI/mova-free/blob/main/tools/nautilus/src/improve.rs)
- **source SHA-256:** `c623f6095229f324…`
- **repository folder:** [`tools/nautilus/src/improve.rs.groupant`](https://github.com/ElamurAI/mova-free/tree/main/tools/nautilus/src/improve.rs.groupant)
- **repository commit:** `48f2e6f74146`

> **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

| component | label | where |
|---|---|---|
| **approximant** | partial source derived | [Forward approximant](#forward-approximant) |
| **ast** | partial | `syntax.json` |
| **composition** | partial source derived | [Composition](#composition) |
| **cost** | partial source derived | [Cost](#cost) |
| **descriptant** | present | [Descriptant](#descriptant) |
| **invariant** | partial source derived | [Invariant](#invariant) |
| **tests** | finite evidence | [tests](#tests) |

## 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.

| id | type | label | where |
|---|---|---|---|
| `behavior_complement` | behavior_complement | partial source derived model | [behavior_complement](#behavior-complement) |
| `reverse_reconstruction` | reverse_reconstruction | partial source derived model | [reverse_reconstruction](#reverse-reconstruction) |

## Model text


### model

## mova-nautilus-improve

### Descriptant

The `layer` source: improve an existing dictionary layer in place through review-only proposals. Reads the layer file (records, judaism-senses, emode-senses or mystic-senses), finds weak rows natively, asks the teacher only for weak rows with evidence, ten per question, and turns the answer into proposal lines in the builder's own format. Source: `tools/nautilus/src/improve.rs`.

### Forward approximant

parse: line -> its exact tab columns (render = join, byte-identical). weakness(format,row,base): records meaning<40 or sense<80 or examples<3; judaism no primary record and no own pos/meaning, or >=2 examples and neither sense nor interpretation; emode an empty modern/meaning/difference; mystic sense<80 or no primary record and no meaning. askable = weak and (an example, or a sense for records/mystic). LayerJob.next(seen) = the first ten askable rows of part `part` (FNV(word) mod parts) whose words are in no seen key `<layer>:w1+w2...`. validate: lines with exactly the format's fields, each `-` or 2..1200 chars without date or control characters; >= half of the asked words well formed, else rejected; proposal = the changed lines, rebuilt in the target columns (examples, kind, forms, tests and note from the row; pos/meaning empty when the base has the word, as the builder writes); none changed: rejected as kept.

### Invariant

The layer file is opened read-only; a proposal line has exactly the builder's columns (records 6, judaism 6, emode 9, mystic 4); a teacher field never replaces a corpus quotation; the same file and seen set give the same item.

### Cost

One read and parse of the layer file per next/open call (20 MB primary layer: about 0.1 s); one question of at most 12000 bytes per ten rows.

### Composition

Parent: `nautilus`. Implements work::Job for the loop and the pool; animal::Config::job builds it; pool.rs counts its open items.

### behavior_complement

Never writes the layer file or the builder's senses files; never asks a thin row (fewer than two corpus examples) or a row without evidence; never writes examples for corpus-quoted formats; never admits. Evidence status: source-derived model with finite checks, not a proof.

### reverse_reconstruction

A proposal line and the row it came from recover which fields the teacher changed (the others are the row's); the item key recovers the asked words. No unique inverse is claimed: an all-`-` answer and no answer both leave the row as it is.

### Epoch 2026-11-04

First model, written with the source (the Nautilus work pool); no prospective prediction is claimed beyond the checks.

### Epoch 2026-11-04 (senses)

Batches of `batch` asked rows (native and junk-free rows ride along); askable needs a non-junk word and min_uses examples that use the word (Mova's lemmas, boilerplate excluded: 2 for judaism/emode); asked_fields = only the weak fields; plan_row = senses::plan with the base's numbered senses, the store's fixed sense and native picks only when every asked field is sense-like; task shows senses, fixed sense, two excerpts and an `answer:` line; validate_planned: word, pick, exactly the asked fields; absent lines rejected; a sense field restating a numbered sense dropped and marked; `# pick` lines appended. Red controls: absent gate removed; restatement gate removed.

### tests

#### Checks (2026-11-04)

improve::tests: rows_read_back_byte_for_byte (every row of the repository's emode-senses, judaism-senses, mystic-senses, mystic-school and primary-school.v2 renders back to its bytes), weak_rows_and_builder_lines (emode 9 columns, judaism empty pos/meaning with a base record, records appended examples; red: wrong field count, a date, an unchanged line, a word not asked), cc_by_sa_headers.

Command: `cargo test --release` of the crate (tools/nautilus with MOVA_OCTOPUS_TEST_MODEL=$MOVA_DATA/download/0/0.4/en.bin). Finite fixtures; no terminal, teacher or model was called; not a proof.

2026-11-04 (senses): cargo test --release (0.4 en.bin), tools/nautilus 37 unit + 2 English tests, two identical runs; tools/turtle 9 + 2 pass. 2026-11-04 (senses): senses_picks_restatements_and_absent_lines (asked fields [2,3], one shared lemma not enough, restated sense field dropped and marked, absent line rejected, two shared lemmas = native pick, ag and boilerplate archive not askable); weak_rows_and_builder_lines with the pick column. Red: absent gate, restatement gate, prefix matching.
