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

# study-feedback

The groupant beside tools/enrich/src/study.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_fragment
- **status:** partial source bound model
- **source:** [`tools/enrich/src/study.rs`](https://github.com/ElamurAI/mova-free/blob/main/tools/enrich/src/study.rs)
- **source SHA-256:** `8bdc286a3d410509…`
- **covers:** Feedback and lexical projection (bytes 2400–4974)
- **part of:** [study-orchestrator](https://md.groupants.elamur.ai/free/en/mova/tools/enrich/src/study.rs.groupant/)
- **repository folder:** [`tools/enrich/src/study.rs.groupant/feedback.groupant`](https://github.com/ElamurAI/mova-free/tree/main/tools/enrich/src/study.rs.groupant/feedback.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 | [forward](#forward) |
| **ast** | not materialized |  |
| **composition** | partial | [composition](#composition) |
| **descriptant** | present | [epoch-memory](#epoch-memory) |
| **invariant** | partial | [invariant](#invariant) |
| **tests** | partial bounded checks | [checks](#checks) |

## 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 |
|---|---|---|---|
| `study-feedback-forward` | forward_relation | partial source model | [forward](#forward) |
| `study-feedback-behavior-complement` | behavior_complement | partial source model | [behavior-complement](#behavior-complement) |
| `study-feedback-reverse-reconstruction` | reverse_reconstruction | partial source model | [reverse-reconstruction](#reverse-reconstruction) |
| `study-feedback-coupling` | interaction_relation | partial source model | [coupling](#coupling) |

## Parts

- [study-feedback-priority](https://md.groupants.elamur.ai/free/en/mova/tools/enrich/src/study.rs.groupant/feedback.groupant/priority.groupant/)

## Model text


Partial source model, 2026-10-29. The raw Rust file remains authoritative. AST is not materialized; byte ranges are snapshot anchors, not semantic proofs.

### forward

First project review questions to phase=exercise and require equal length and pairwise question/answer identity with lesson exercises. Deterministically shuffled answers produce feedback F without changing retained fingerprint; priorities(P,F) then creates one lexical row per packet word.

### behavior-complement

A successful feedback result with assessment-only questions, changed question/answer identities or changed retained fingerprint is outside the guarded relation. The fingerprint observation is narrower than proof of all possible hidden state preservation.

### reverse-reconstruction

Given F and priorities, reconstruct compatible exercise subsequences with identical source/question/expected and compatible answer observations, plus arbitrary omitted assessment rows subject to external validation. Correct/understood/support flags do not uniquely identify retained parameters.

### coupling

Feedback order supplies indices; priority child aggregates weak flags but ignores understood. The projection therefore loses assessment rows and fine answer evidence. Preserve all compatible inputs in the converse instead of inferring that absent support proves absent knowledge.

### composition

The child consumes F only after question alignment and fingerprint checks. No learner update is authorized in this fragment. Feedback cost is two fingerprints plus one answer call per exercise; add child aggregation once. Existing identity/tamper tests cover guards; no full retained-state semantic equivalence is claimed.

### invariant

Forward and reverse observations refer to the same fixed source snapshot and dependency behavior. Ordering is deterministic for fixed inputs; filesystem/environment stability is assumed where relevant. The complement is an inner bound relative to this fragment's input/output universe.

### checks

See the file-level tests.md for executed bounded checks and limits. The first three model relations are specifications; tests sample correspondence rather than proving all inputs. No expanded semantic AST or executable general inverse solver exists.

### epoch-memory

2026-10-29: retained the file-level 23 models and added this finer scope. An initial incidence oracle incorrectly treated three-byte fox as a token; the existing tokenizer rejects it. Corrected the independent membership matrix rather than changing production behavior. This is a model correction, not an algorithm defect.
