---
title: "world-babi — Mova code model"
description: "Mova code model of world/src/babi.rs: components with their labels, obernants and the model text."
url: "https://groupants.elamur.ai/free/en/mova/world/src/babi.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/world/src/babi.rs.groupant/>

# world-babi

The groupant beside world/src/babi.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:** [`world/src/babi.rs`](https://github.com/ElamurAI/mova-free/blob/main/world/src/babi.rs)
- **source SHA-256:** `54596da093fa9515…`
- **repository folder:** [`world/src/babi.rs.groupant`](https://github.com/ElamurAI/mova-free/tree/main/world/src/babi.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 | [approximant](#approximant) |
| **ast** | partial | `syntax.json` |
| **composition** | partial | [composition](#composition) |
| **cost** | partial | [Cost](#cost) |
| **descriptant** | present | [descriptant](#descriptant) |
| **invariant** | partial | `model.md` |
| **tests** | bounded checks partial scope | [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) |
| `failure_precedence` | failure_precedence | partial source derived model | [failure_precedence](#failure-precedence) |
| `history_projection` | history_projection | partial source derived model | [history_projection](#history-projection) |
| `representation_transport` | representation_transport | partial source derived model | [representation_transport](#representation-transport) |
| `effect_boundary` | effect_boundary | partial source derived model | [effect_boundary](#effect-boundary) |

## Parts

- [world-babi-inventory](https://md.groupants.elamur.ai/free/en/mova/world/src/babi.rs.groupant/inventory.groupant/)
- [world-babi-graph](https://md.groupants.elamur.ai/free/en/mova/world/src/babi.rs.groupant/graph.groupant/)
- [world-babi-questions](https://md.groupants.elamur.ai/free/en/mova/world/src/babi.rs.groupant/questions.groupant/)

## Model text


### descriptant

#### world-babi

read increments t before fallible annotator acquisition, resolves root fallbacks, then updates subject/name memory. Relation verbs precede move/get/have/lose/give/be; copular relations precede locations/classes/attributes/short identity. ask handles three-word self identity before parsing; remaining branches parse recased text and prioritize path/count/yes-no/why/where/what-who. eval_file resets on literal line number 1 and sorts comma answers; reading failures and answer errors share the show cap. Compact transition: take(a,o): H'[o]=a; C'[old]=filter(C[old],x≠o); C'[a]=C'[a]++[o]. move(a,p,k): P'[a]=At(p), hist'[a]=hist[a]++[(k,t,p)], ohist carried objects append p iff last≠p. Query relation F(s,q) returns an answer/explanation or parse error under branch order.

##### Modeling epoch — 2026-10-31

Read full assigned source before editing; prospective predictions retained in external wave29 receipts. Stored/live/parser-dependent test paths are excluded from execution. Evidence is limited to named bounded fixtures; registration is partial modeling. Production behavior unchanged; only inline synthetic tests added to four assigned sources.

##### Review correction — exact ownership preimage

The exact holder-map preimage constrains both its domain and all present values. Matching only present target keys would admit extra held objects and make an empty target vacuous. The corrected relation requires empty final ownership for an empty target; source and executable evidence are unchanged.

### approximant

#### Forward relation

read increments t before fallible annotator acquisition, resolves root fallbacks, then updates subject/name memory. Relation verbs precede move/get/have/lose/give/be; copular relations precede locations/classes/attributes/short identity. ask handles three-word self identity before parsing; remaining branches parse recased text and prioritize path/count/yes-no/why/where/what-who. eval_file resets on literal line number 1 and sorts comma answers; reading failures and answer errors share the show cap. Compact transition: take(a,o): H'[o]=a; C'[old]=filter(C[old],x≠o); C'[a]=C'[a]++[o]. move(a,p,k): P'[a]=At(p), hist'[a]=hist[a]++[(k,t,p)], ohist carried objects append p iff last≠p. Query relation F(s,q) returns an answer/explanation or parse error under branch order.

##### Domain and resource limits

Finite valid structures and allocation-success executions under the branch conditions in models.md; integer overflow is outside measured fixtures. Exact categorical relations have no supplied percent surrogate. Macro expansion, arbitrary model quality and external effects are not inferred from syntax.

### invariant

## Invariant

take removes prior carry occurrence before appending; move_to appends person history but only changes adjacent object history when place differs. Person order is (u32 day-order,usize sentence index); spatial coordinates are i32 relative units. General read is not transactional.

### Cost

Split O(B); parser delegated. Ordered maps O(log V) plus string bytes, carry filtering O(C), reach O(VE), offset/path O((V+E)log V) plus adjacency clones. History sort O(HlogH), reverse fact scans linear. Allocation and integer overflow have no general bound.

### composition

#### Composition

Scoped children: inventory, graph, questions. read increments t before fallible annotator acquisition, resolves root fallbacks, then updates subject/name memory. Relation verbs precede move/get/have/lose/give/be; copular relations precede locations/classes/attributes/short identity. ask handles three-word self identity before parsing; remaining branches parse recased text and prioritize path/count/yes-no/why/where/what-who. eval_file resets on literal line number 1 and sorts comma answers; reading failures and answer errors share the show cap. Compact transition: take(a,o): H'[o]=a; C'[old]=filter(C[old],x≠o); C'[a]=C'[a]++[o]. move(a,p,k): P'[a]=At(p), hist'[a]=hist[a]++[(k,t,p)], ohist carried objects append p iff last≠p. Query relation F(s,q) returns an answer/explanation or parse error under branch order. Other functions and test additions are modeled only at this parent. bAbI Story and command World have different representations: command-language fixtures do not certify the UD parser adapter. StepGame lexical/load helpers connect directly to tests03; CLI helpers construct a separate world process but this wave does not spawn it. No composition-wide percent accuracy follows.

### models

### behavior_complement

Exclude replacement of an established lowercase speaker by distinct set_me name, holder removal by drop_(a,o) when owner differs, and path/offset across disconnected vertices. Do not exclude t increment on parser failure, partial name changes before semantic errors, or contradictory graph paths. Unknown facts may yield '?', not invented evidence. Explicit excluded tuple: (me=n, set_me(m), return=true∧me'=m)∈C for lowercase(m)≠n; (H[o]=b,drop_(a,o),o∉dom(H'))∈C when a≠b.

### reverse_reconstruction

Final holder map admits all acquisition/drop histories with the same last surviving assignments; overwritten positions and interleavings are lost. state_lines omits t, me, attributes and several histories. Offset d admits every graph whose first-discovered BFS path has displacement d, including unused contradictory edges. Who-are-you answer n on fast path constrains me=n but not class or history. Ownership fiber: F_H^{-1}(H*)={event sequences e | dom(final_holder(e))=dom(H*) and ∀o∈dom(H*), last_surviving_take(e,o)=H*[o]}. No object outside dom(H*) may retain a holder; H*=empty admits only histories with empty final holder map. Erased intermediate transitions remain free.

### failure_precedence

t increments before parse; subject resolution can rename before unknown-verb result. eval_file returns first Result error, not partial counts.

### history_projection

Where-before sorts person histories, uses last target occurrence and previous entry; object histories already store text order.

### representation_transport

UD heads one-based; kids indices zero-based only for heads 1..=W; vector adjacency uses subtraction in offset.

### effect_boundary

probe/eval/gaps/learn need parser/corpus; contrast creates dst before reading src and may leave partial outputs. Empty eval totals use max(1). Live paths excluded.

### tests

#### Bounded checks

Named checks associated with this source (not every fragment branch):

- babi::wave29_tests::identity_and_inventory_without_parser
- babi::wave29_tests::graph_and_sentence_boundaries_without_parser

17 unique named tests in total passed twice debug and twice release; sorted named outcomes equal across all four runs. Four compiled controls cover bAbI identity, StepGame tie ordering, parser-command state removal and bench-command CPU selection; each exits101 at a runtime assertion, exact source restored then positive exit0. Other sources have finite adversarial fixtures but no separately compiled mutant.

CLI integration coverage is command construction and temporary cleanup only; legacy school/model/cadence paths are not executed. No speed benchmark, GPU, live teacher, datasets or held-out replay.

Limits:

- Partial syntax projection only; no macro expansion or proof
- No useful percentage surrogate for exact categorical/state/effect semantics; executable approximant unsupported
- No live parser, corpus, gap journal, training or held-out evaluation
- Unicode recasing byte slices, unbounded recursion/overflow not covered

External receipt root: $MOVA_DATA/runs/octopus-wave29-worldeval-2026-10-31.
