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

# question-generation

The groupant beside models/question-generation.groupant 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_group
- **status:** partial source bound instance
- **bound sources:** 13
- **repository folder:** [`models/question-generation.groupant`](https://github.com/ElamurAI/mova-free/tree/main/models/question-generation.groupant)
- **repository commit:** `855da7bd4a7b`

> **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 model | [forward](#forward) |
| **ast** | not materialized |  |
| **composition** | partial source model | [composition](#composition) |
| **cost** | partial source model | [cost](#cost) |
| **descriptant** | partial source model | [epoch-memory](#epoch-memory) |
| **invariant** | partial source model | [invariant](#invariant) |
| **tests** | bounded executed | [wave17-evidence](#wave17-evidence) |

## 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 |
|---|---|---|---|
| `question-generation-behavior-complement` | behavior_complement | partial source model | [behavior-complement](#behavior-complement) |
| `question-generation-reverse-reconstruction` | reverse_reconstruction | partial source model | [reverse-reconstruction](#reverse-reconstruction) |
| `question-generation-selected-prompt-gate-coordinates` | paragraph_sentence_coordinate_transport | partial source model | [selected-prompt-gate-coordinates](#selected-prompt-gate-coordinates) |
| `question-generation-rule-schema-span-constraint` | versioned_span_constraint_transport | partial source model | [rule-schema-span-constraint](#rule-schema-span-constraint) |
| `question-generation-normalization-source-ambiguity` | normalized_span_provenance_relation | partial source model | [normalization-source-ambiguity](#normalization-source-ambiguity) |
| `question-generation-quota-selection-cardinality` | capacity_selection_transport | partial source model | [quota-selection-cardinality](#quota-selection-cardinality) |
| `question-generation-wave18-retry-gather-ledger` | retry_selection_report_accounting_relation | partial source model | [question-generation-wave18-retry-gather-ledger](#question-generation-wave18-retry-gather-ledger) |
| `question-generation-wave18-report-preflight-preservation` | accounting_preflight_artifact_preservation | partial source model | [question-generation-wave18-report-preflight-preservation](#question-generation-wave18-report-preflight-preservation) |
| `question-generation-wave18-metadata-error-through-gather` | retry_metadata_error_propagation | partial source model | [question-generation-wave18-metadata-error-through-gather](#question-generation-wave18-metadata-error-through-gather) |
| `question-generation-wave20-implicit-repair` | validated_prompt_repair_lemma_relation | partial source model | [question-generation-wave20-implicit-repair](#question-generation-wave20-implicit-repair) |
| `question-generation-wave20-explicit-anchor` | anchor_coordinate_span_transport | partial source model | [question-generation-wave20-explicit-anchor](#question-generation-wave20-explicit-anchor) |
| `question-generation-wave20-invalid-preflight` | validation_effect_exclusion_relation | partial source model | [question-generation-wave20-invalid-preflight](#question-generation-wave20-invalid-preflight) |

## Model text


### model

## Question generation

### forward

Selection -> retained ordered references -> numbered prompt and gate-local coordinates; supplied TSV is independent of prompt generation. Rule/schema agreements constrain interpretation.

### invariant

Retain doc#para identity and source sentence IDs alongside one-based p/anchor coordinates. Attempted/eligible/accepted counts are distinct.

### cost

Selection bookkeeping and sorting, rendered bytes, gate token/span comparisons; bounded fixture cost only.

### composition

Four independent tagged joins use identical ordered paragraph references and rule values within each join. The original wave17 slice had four production source children and one synthetic harness; later registered children and harnesses extend that slice. No composed teacher pipeline or semantic AST is claimed.

### epoch-memory

## Qagen synthetic integration harness — prospective model

Date: 2026-10-30. Source inspection base: 8910dafb6fcaebedc498b536dc62301e63826866. This document precedes harness construction. No execution results are claimed. Root owns installation, adjacent groupant, syntax/source binding, compilation, mutation runs and final evidence.

The finite forward model is an explicit composition of pure production functions: supplied Para/Pick/skip -> select indices -> ordered Para references -> prompt body and gate coordinates. A second observation joins schema and Pick rule to prompt constraints and accepted/rejected supplied TSV. The supplied TSV is a synthetic independent witness, not generated by the prompt. These four named tests do not constitute one live teacher pipeline; no corpus, DuckDB, teacher, parser or database runs are involved.

The domain consists of tiny valid in-memory paragraph vectors, unique doc#para identities, consistent synthetic word counts, positive sentence weights, ordinary finite sizes, and literal TSV. Sentence IDs and source paragraph numbers deliberately differ from local numbering. Selection consumes skip keys, not Pick.exclude file paths. Fixture metadata is supplied, not read_paras acquisition evidence.

First obernant — behavior_complement: selected outputs exclude ineligible and skipped identities; prompts exclude source sentence IDs and skip payloads; gate local p/anchor references exclude source paragraph/sentence coordinates. V2 rejects explicit spans from nonanchor sentences and context, and punctuation-changed spans. Closed schema excludes invented labels. Rule V1 intentionally has a larger explicit-answer acceptance domain. Advisory paragraph notes do not imply pair rejection. Prompt-only semantic constraints such as question quality and answer length remain outside the implemented gate guarantees.

Second obernant — reverse_reconstruction: a gate (p,anchor) and the ordered batch recover the source (doc,para,sent_id) for that observation; the gate result alone cannot recover those identities. Quotients introduced by case/quote/whitespace normalization admit multiple raw texts; the ambiguity witness uses distinct raw sentences and IDs with the same normalized span. Selection output is compatible with many rejected input paragraphs and cannot recover excluded content. Quota observations are compatible with many size/cap inputs; no unique inverse is claimed.

Predicted tests:

1. selected_identity_exclusions_join_prompt_and_gate_coordinates: selected input positions [1,3], keys tale#17 and tale#19, literal prompt P1/P2 sentence numbering, and accepted gate coordinates (1,1,[2]) and (2,1,[1]) recover literal source IDs ending 702 and 901. Excluded and heading payloads do not appear.
2. closed_schema_and_rule_join_prompt_and_span_gate: all seven literal schema names agree with prompt type lines; V1 prompt lacks VERBATIM SPAN, V2 includes it; one punctuation-changing explicit response is accepted under V1 and rejected under V2, while an exact span stays accepted. Invented type and explicitness are rejected under both versions.
3. sentence_provenance_survives_normalization_ambiguity: two raw quoted/cased/space-varied sentences normalize to king's bell rang.; same accepted local coordinates and preserved answer text map to different source IDs. Wrong-anchor and context-only answers fail in both paragraphs. This witnesses compatible preimages rather than reverse uniqueness.
4. quota_caps_join_book_selection_and_prompt_cardinality: total sentence weights (10,6), eligible non-skipped caps (1,2), request 4, produce quotas (1,2) and indices [0,5,6]; prompt contains three paragraphs. A large ineligible pool influences weight but cannot exceed caps; one skipped B paragraph contributes weight but no selection capacity.

Invariants: selection indices are increasing and map to the same ordered prompt/gate batch; gate p and anchors are 1-based local coordinates; accepted pair k is compact after rejected rows; explicit source provenance requires an anchor span under V2; schema/rule version is shared rather than guessed. Literal expected strings, indices, accepted tuples and rejection reasons are independent observations, not computed by the operation under test.

Cost model: at these fixed fixture sizes, bounded memory/time. General composition adds selection bookkeeping and seeded sorting, prompt output bytes, gate preprocessing and span/token comparisons; no whole-pipeline asymptotic claim or performance gain is measured. Reconstructing source identity from known batch and pair is O(1) indexing per anchor; compatible raw-text preimages are unbounded. No approximation/error-budget claim.

Prospective compiled mutation: in prompt::prompt change only rendered sentence index k + 1 to k + 2, retaining valid Rust and all other behavior. The named selected_identity_exclusions_join_prompt_and_gate_coordinates test must fail assertion marker W17-J1-PROMPT-COORDINATES after successful compilation. Restore exact source bytes before positive reruns. This is a wiring observation: gate still interprets anchors from 1 while prompt would instruct from 2. An alternate mutation in the harness batch adapter reverses selected references and must fail the same literal prompt-body assertion; production mutation is preferred.

Evidence to collect by root: owner API confirmations; exact final source/harness hashes; installation sidecar and partial syntax projection; focused named debug twice and release twice with normalized outcomes; compiled mutation failure at the intended assertion, restoration hash and final positives. Current evidence is source inspection only; this worker neither compiles nor mutates repository sources.

Construction receipt: external harness written and rustfmt --edition 2024 completed successfully; compilation and test execution remain pending. Harness SHA-256: 7f9447e887eae69a2a95f443555140cc8dbfa95d83a29b8062383fca5f9d38a4. Inspected source SHA-256: select.rs f8ed8d3d50fdae707957bdce4872ed66e9a9591b963f9fe6c875f29104d1c151; prompt.rs 6fe8471363a925217a3b9b80a97ce4a8e322318d2b4274394dbf4b461f6b04bb; schema.rs fb31471cabbbd651d312bcd06ffffea17f2b99694242170dfdf05bd82ef4d249; gate.rs 8a01354b712e6c60e6a5216f640f12f1965ebfa6ec10a12f56c1a0871d1b2721. Root must rebind post-integration identities.

API coordination: wave17_select confirmed public select/quotas/Pick/Para APIs unchanged, including sentence weights before exclusions. wave17_prompts confirmed schema/rules/prompt signatures and prose unchanged; checked_add adjacency repair does not affect fixtures. wave17_gate confirmed gate API unchanged, batch/local coordinate semantics, and span normalization limits. Its planned strict malformed-anchor/prefix parsing does not affect the well-formed supplied TSV.


### checks

Four named synthetic tests pass twice in debug and twice in release; six typed views retain their declared domains. Native, compiled-control and partial-syntax receipts are recorded in wave17-evidence.md.

### wave18-extension

Wave18 question-generation integration reaches run retry resolution, report gathering and collection on synthetic Rule V1 supplied inputs. One join connects retry selection, accepted s1 answer and persisted ledger aggregates; another checks malformed-ledger and u64-overflow preflight errors preserve all three existing report artifacts; a Unix join propagates retry metadata ELOOP through gather despite a valid primary. Costs cover reached raw/ledger parsing, aggregation and output bytes, not transport or model inference. These are distinct supplied-input observations, with no live teacher, model, database or corpus operation.

Complement: Extend question-generation's complement with choosing primary over a valid retry, dropping source/batch/sentence identity, inconsistent collected/disk accounting, report artifact modification before the tested malformed/overflow ledger preflight completes, and retry metadata errors reclassified as absence or fallback. This preflight relation excludes concurrent writers, late-write rollback, semantic QA accuracy and unexecuted acquisition paths; it is not full transactional reporting.

Reverse: Retain all directory/raw/ledger antecedents consistent with selected retry identity, accepted row coordinates, returned aggregates and persisted bytes. Aggregate totals cannot recover call order, discarded primary/rejected text or unique token allocations. A preflight failure plus unchanged artifacts reconstructs only the observed old bytes under the tested error condition. Metadata failure constrains the observed error path without uniquely identifying filesystem topology.

Reached API costs only. Bounded native evidence is recorded in wave18-evidence.md; prior evidence retained.

### wave20-extension

Three synthetic joins compose real Fixes validation, prompt numbering, repair gating, anchor-ID mapping, span checking and injected lemma classification. They preserve admitted behavior and exclude invalid preflight side effects without teacher/model execution.

Complement: Admissible repair outputs retain item and paragraph identity, valid one-based anchors, gate-approved spans or preserved implicit answers. Its complement includes dropped/misaligned items, out-of-range anchors, invalid UTF-8 slicing, callback effects before invalid-input rejection and explicit outputs failing the span relation. Synthetic checks cover only selected branches.

Reverse: A repaired explicit span identifies compatible sentences/anchors but not a unique old answer; implicit output preserves the chosen old answer and anchors but loses generating prompt provenance. Lemma coverage is many-to-one in forms, order and content labels. Validation errors retain many malformed antecedents; no inverse dataset reconstruction.

Reached API costs only. Bounded native evidence is recorded in wave20-evidence.md; prior evidence retained.

### catalog

## Question generation typed relations

Source-derived finite joins; bounded native evidence is recorded in wave17-evidence.md.

### behavior-complement

Type: behavior_complement. Named check: all four qagen joins.

Universe: supplied Para/Sent/Pick/skip, versioned schema/prompt and independent TSV observations. Exclude skipped/ineligible selections, source-coordinate substitution for local p/anchors, invented labels, V2 explicit nonanchor/context spans and punctuation-changing spans. Prompt semantic constraints not enforced by the gate remain outside this complement; no acquisition/teacher behavior is inferred.


Wave18 extension: Extend question-generation's complement with choosing primary over a valid retry, dropping source/batch/sentence identity, inconsistent collected/disk accounting, report artifact modification before the tested malformed/overflow ledger preflight completes, and retry metadata errors reclassified as absence or fallback. This preflight relation excludes concurrent writers, late-write rollback, semantic QA accuracy and unexecuted acquisition paths; it is not full transactional reporting.


Wave20 extension: Admissible repair outputs retain item and paragraph identity, valid one-based anchors, gate-approved spans or preserved implicit answers. Its complement includes dropped/misaligned items, out-of-range anchors, invalid UTF-8 slicing, callback effects before invalid-input rejection and explicit outputs failing the span relation. Synthetic checks cover only selected branches.

### reverse-reconstruction

Type: reverse_reconstruction. Named check: all four qagen joins.

Retain every input vector, metadata, raw sentence text, Pick/skip and response sharing selected identities, prompt/gate observations and quotas. The same retained batch plus p/anchor recovers source doc/para/sent_id; gate output alone cannot. Case/quote/whitespace normalization has many raw preimages, selection loses rejected content and quotas lose weight/cap details.


Wave18 extension: Retain all directory/raw/ledger antecedents consistent with selected retry identity, accepted row coordinates, returned aggregates and persisted bytes. Aggregate totals cannot recover call order, discarded primary/rejected text or unique token allocations. A preflight failure plus unchanged artifacts reconstructs only the observed old bytes under the tested error condition. Metadata failure constrains the observed error path without uniquely identifying filesystem topology.


Wave20 extension: A repaired explicit span identifies compatible sentences/anchors but not a unique old answer; implicit output preserves the chosen old answer and anchors but loses generating prompt provenance. Lemma coverage is many-to-one in forms, order and content labels. Validation errors retain many malformed antecedents; no inverse dataset reconstruction.

### selected-prompt-gate-coordinates

Type: paragraph_sentence_coordinate_transport. Named check: selected_identity_exclusions_join_prompt_and_gate_coordinates.

Input positions [1,3] yield source paragraphs17/19, prompt P1/P2 and [1]/[2], accepted (p,k,anchors)=(1,1,[2]),(2,1,[1]), recovering source702/901 in the same ordered batch. Exclusions never enter the prompt; source paragraph numbers and sentence IDs are not local coordinates. Costs include selection, rendering, gate and O(1) source indexing per anchor.

### rule-schema-span-constraint

Type: versioned_span_constraint_transport. Named check: closed_schema_and_rule_join_prompt_and_span_gate.

Seven literal schema labels agree with prompt type instructions. Pick rule1/2 selects the corresponding prompt constraint and gate; exact Red, blue flowers passes both, punctuation-changed red blue flowers passes V1 and fails V2. Invented causal/inferred labels fail. Literal response supplied independently; no language-model obedience claim.

### normalization-source-ambiguity

Type: normalized_span_provenance_relation. Named check: sentence_provenance_survives_normalization_ambiguity.

Distinct quoted/cased/spaced raw sentences normalize to king's bell rang.; accepted local anchors preserve identical answer text but recover distinct source IDs through their own batch positions. Wrong-anchor and context-only explicit spans fail. The raw sentence fibers are nonunique; context is visible in prompt but unavailable as an answer anchor.

### quota-selection-cardinality

Type: capacity_selection_transport. Named check: quota_caps_join_book_selection_and_prompt_cardinality.

Literal total sentence weights(10,6), eligible nonskipped caps(1,2), request4 yield quotas(1,2), indices[0,5,6], book counts(1,2) and exactly three prompt paragraphs. Ineligible/skipped paragraphs affect weights but add no capacity. Positive weights and tiny fixtures exclude overflow/zero-weight generalizations; no performance gain is measured.

### question-generation-wave18-retry-gather-ledger

Type: retry_selection_report_accounting_relation.

Domain is one supplied paragraph, batch 1 and sentence s1, one-row primary and retry files with distinct answers, Rule V1, and two call records for the same batch. try_final_raw must select retry_path, gather must accept exactly its retry answer, and collect must preserve that answer with the s1 coordinate in qa.tsv while omitting the primary answer. params must report one pair, two calls, one retry, 18 input tokens, 2.5 seconds and 0.25 estimated cost; on-disk params.json must equal the returned JSON. All row positions and batch/source coordinates are shared, and ledger values are exact supplied finite values. Cost is linear in these raw/ledger/output bytes plus bounded Rule V1 parsing and report aggregation. This invokes supplied-input public APIs, without a teacher or model.

Source-derived partial relation. Wave18 bounded integration evidence is recorded in wave18-evidence.md; prior evidence is retained separately.

### question-generation-wave18-report-preflight-preservation

Type: accounting_preflight_artifact_preservation.

Domain is one valid primary raw row and preexisting qa.tsv, rejects.tsv and params.json sentinel bytes. In separate fixtures use malformed JSONL or two otherwise valid calls whose input token totals u64::MAX+1 overflow. collect must return an error and all three old artifacts must remain byte-for-byte identical. The first fixture checks parse failure; the second checks checked aggregation overflow. This relation requires accounting validation to precede report writes; it does not claim atomic multi-file replacement after output writing begins, filesystem race safety, or semantic QA quality. Work is bounded by reading/validating the supplied ledger and any preflight stages reached before failure; memory and output observations are limited to these fixture bytes.

Source-derived partial relation. Wave18 bounded integration evidence is recorded in wave18-evidence.md; prior evidence is retained separately.

### question-generation-wave18-metadata-error-through-gather

Type: retry_metadata_error_propagation.

Unix-only domain is a valid primary raw row and a retry symlink referring to its own filename, causing ELOOP on metadata resolution. Both try_final_raw and report::gather must return errors. A retry metadata error must not be treated as absence, and the valid primary must not silently become fallback. Cost is bounded path/metadata attempts and the stages reached before this error; behavior on non-Unix platforms is outside this cfg-gated test. The fixture validates a particular error propagation path, not every permission error, symlink topology or concurrent filesystem state.

Source-derived partial relation. Wave18 bounded integration evidence is recorded in wave18-evidence.md; prior evidence is retained separately.

### question-generation-wave20-implicit-repair

Type: validated_prompt_repair_lemma_relation.

One synthetic paragraph with cat/dog sentences and item cats sleeps anchored1. Validated Fixes builds prompt Item1; implicit gate output preserves old answer and anchor. Counting lemma stub maps cats->cat, treats the as function word; try_doubt returns (1,1.0), exactly two calls (answer then anchor). No real annotator/model.

Source-derived partial relation. Wave20 bounded integration evidence is recorded in wave20-evidence.md; prior evidence is retained separately.

### question-generation-wave20-explicit-anchor

Type: anchor_coordinate_span_transport.

Same paragraph, response Item1 anchor2 the dog runs becomes explicit. Numeric anchor2 maps to sent_id s2; independent span_reason accepts output. Same actual repair output fed to try_doubt returns(2,1). Word normalization may erase case/punctuation information; sentence identity is retained.

Source-derived partial relation. Wave20 bounded integration evidence is recorded in wave20-evidence.md; prior evidence is retained separately.

### question-generation-wave20-invalid-preflight

Type: validation_effect_exclusion_relation.

Fixes rejects anchor0; try_doubt rejects [1,0] before any callback; legacy doubt with anchor2 on one sentence returns None with zero calls. Multibyte first label is classified malformed by real fix gate without panic. Errors do not authorize partial effects; no file/model/database operations.

Source-derived partial relation. Wave20 bounded integration evidence is recorded in wave20-evidence.md; prior evidence is retained separately.

### wave17-evidence

#### Wave17 bounded integration evidence, 2026-10-30

212 selected Mova checks pass twice in debug and twice in release, with identical normalized named outcomes: 155 prior focused checks, 33 new source-unit checks, 17 additional existing synthetic QA checks and seven new joins (three pragmatic, four question-generation). Root qagen library runs explicitly skip lemma::tests::doubt_with_en_model. The 100-algorithm library and its prior evidence are unchanged and are not remeasured in this epoch.

Seven existing sources gain models, with 21 nested fragments and 81 typed views; the two harnesses add 11 views, the new question-generation group adds six, and existing parents add five. Final inventory: 329/762 Rust sources, 433 pending (350 public,83 closed), 659 nodes,16 groups,314 fragments,3676 views,1109 type labels,319 partial syntax projections. Filename coverage in prag is complete; semantic coverage is scoped. Six qagen sources remain in the backlog.

Witnessed repairs: exact u128 Hamilton quotient/remainders remove the >2^53 weight-order error and usize sum overflow; checked prompt adjacency prevents i64 wrap/panic; QA anchors reject empty list components and paragraph labels permit at most one P/p prefix; accounting refuses nonfinite fields before opening and propagates non-NotFound I/O errors; run reports identify Codex transport. No broad option-compatibility change or transport rename was made.

Owner evidence records eight old-code failure witnesses and 14 compiled production mutants, followed by exact restoration and positive runs. Two root compiled adapter controls additionally fail named assertions: reversed Item/label identity and a wrong sentence-source mapping. Compiler errors are not counted as mutation rejection. Stale group bindings and wrong child identities are structurally rejected and restored exactly.

Independent source review found no further production counterexample within declared domains and refined costs: quota initialization/cap scanning remains at zero rounds; string comparisons/cloning and general JSON-object lookup work are explicit. The small quota oracle covers 45,056 tuples; this finite evidence is not a Lean proof or complete input verification. Native code and syntactic projections remain separate from models.

A gate worker also invoked a broader 26-test legacy run containing an optional local-model test; captured evidence does not establish whether that model branch ran or returned early. It is documented separately and excluded from the root 212-check receipt. Root checks use supplied fixtures and isolated temporary files, with no live teacher, parser model, corpus/database acquisition, GPU, whole-school or adoption workflow. No speed gain or new approximation-error budget is claimed.

Raw receipts: $MOVA_DATA/runs/octopus-wave17-integration-2026-10-30. native-evidence-hashes.json SHA-256 2aee840e096dcaf3d558e55c95b86f6a6623506aa620351c1e9d009ba29e94e5; mova-normalized.txt e7d315a6d937998d03e2cdc2555ba4fd96137ef61ef873104329ca632b697274; structural-controls/summary.json a50d4387189f34044579c0d068475201acf1f6e7ee8e3297c0db6909f3180975. Focused formatting passes. Cargo Clippy completes with warnings; this is not a warning-free strict-lint claim. Macro bodies remain opaque in partial syntax. External child dependencies are not inferred to have complete models from these joins.

### wave17-validation

#### Wave17 final validation, 2026-10-30

All 329 registered file sidecars, 16 inter-file groups and 314 fragments pass structural validation; repeated reports are byte-identical. They contain 3676 typed views with 1109 labels and 319 partial syntax projections. All nine changed Rust sources pass registration against base 8910dafb6fcaebedc498b536dc62301e63826866.

The require-all gate exits 1 because 433 of 762 Rust files remain unregistered (350 public, 83 closed). This is the explicit backlog, not complete repository coverage. Source binding and structure do not prove semantic completeness. Native results are in [wave17-evidence.md](https://md.groupants.elamur.ai/free/en/mova/models/question-generation.groupant/#wave17-evidence).

External run: $MOVA_DATA/runs/octopus-wave17-integration-2026-10-30. gates-summary.json SHA-256 b6bfb39a7ae4612aab676749df84b10e7965f12242e8531c25c2d5835f2a91d3.

~~~json
{
  "changed_rust_sources": 9,
  "groupants_repeat_identically": true,
  "receipts": [
    {
      "exit": 0,
      "file": "groupants-final-1.json",
      "mode": "groupants",
      "sha256": "57a8d8f91057b4b8170c2ea817d4a42afd1e0adba8f4a96a761e7e9318597ea6"
    },
    {
      "exit": 0,
      "file": "groupants-final-2.json",
      "mode": "groupants",
      "sha256": "57a8d8f91057b4b8170c2ea817d4a42afd1e0adba8f4a96a761e7e9318597ea6"
    },
    {
      "exit": 0,
      "file": "changed-final.json",
      "mode": "changed",
      "sha256": "67e94102b7d0c8817f2ee502eb956a293bc33f63f577c00fb0dccc2fac677c8c"
    },
    {
      "exit": 1,
      "file": "require-all.json",
      "mode": "inventory",
      "sha256": "8b6cf519ac5e6a86131eee6222c2c13cb30551781c33be0fdc8ea780f32e05d4"
    }
  ],
  "require_all_expected_incomplete": true
}
~~~

### wave18-evidence

#### Wave18 question-generation evidence — 2026-10-30

Existing qagen/src/run.rs and report.rs gain file groupants and nine nested fragments. Three new supplied-input joins extend question-generation under school-support. Four qagen sources remain unregistered: fix, lemma, lib and main. Filename coverage is not full behavioral coverage.

Final root validation: 55 selected checks passed twice in debug and twice in release with identical normalized outcomes: 48 library checks, four wave17 joins and three wave18 joins. Every broad library run explicitly skips lemma::tests::doubt_with_en_model. Fixtures use synthetic raw/retry text, supplied calls and isolated temporary directories. No live teacher, parser model, database, corpus, training or school assessment ran.

Existing signatures are preserved and run::try_final_raw is added: strict metadata errors propagate through gathering and pending-work checks; final_raw remains an intentionally lossy compatibility wrapper. Token totals use checked u64 arithmetic; nonfinite floating accumulation errors; large finite values avoid decimal-scaling overflow. Retry metadata, call accounting, gathering, optional doubt computation and serialization now precede artifact writes. Malformed or overflowing ledgers leave prior qa.tsv, rejects.tsv and params.json intact. Later write failures and concurrent directory changes remain nontransactional.

Owner receipts record six old-code witnesses in both profiles and seven compiled production mutations followed by exact restoration. Root misrouted retry text to the primary filename; the named retry-path assertion failed, then restored execution passed. Independent review and a floating-point threshold probe found no further concrete defect in this scope. All-target qagen Clippy completes with dependency warnings; formatting passes. V1 fixtures test source/accounting consistency, not factual answer quality.

#### Wave18 integration scope — 2026-10-30

Base ae72362aaa65659aa444cb7d090a05636c0e0691. Inventory: 353/784 Rust files registered, 431 pending (348 public, 83 closed); 696 nodes, 16 groups, 327 fragments, 3,899 typed views, 1,196 labels and 343 partial syntax projections. Added 24 registered file entries: 20 new algorithm implementation/test files, two existing qagen sources and two new harnesses; 13 fragments and 223 views. The library export source also changes, giving 25 changed Rust files.

Declared groupants pass structural validation. Repeated syntax projections match byte-for-byte. Injected stale bindings and wrong child identities reject, then restore exactly. Root corrected two imported file-node child lists and 32 graph heading references found by integration validation. These are model-wiring repairs. Source binding and section validation do not prove semantics, expanded ASTs or a complete dependency closure.

Final receipts cover 550 algorithm checks and 55 focused qagen checks, each twice in debug and twice in release. Unrelated Mova subsystems and the whole school were not rerun. No numerical approximation tier is introduced. Complement models and compatible-antecedent models remain distinct, with explicit information loss.

Raw receipts: $MOVA_DATA/runs/octopus-wave18-integration-2026-10-30; final native logs in native-final/. Prospective models and prior dated evidence remain. Question generation belongs to school-support; no inference-core or live acquisition pipeline is introduced.


##### Receipt bindings

External run: $MOVA_DATA/runs/octopus-wave18-integration-2026-10-30. Native evidence index SHA-256: f85b3e074aa997321aff915acd6068610e33c9e50322525af7b6f529a7d7f422. Algorithm normalized outcomes: a307113f556e3e4dab5bf677df657899f439ffab39a1c8e1113ed23c97c1c733. Qagen normalized outcomes: 34efc5330be15215be0220412a9af2a517680394f975a7011f75a799a5210d21. Structural controls: a50d4387189f34044579c0d068475201acf1f6e7ee8e3297c0db6909f3180975. Benchmark summary: 8ad77b5c224d73c393111ef5f6e14de3bb1d2b8108f5f01a89f90eee8d4a3c20.

### wave20-evidence

#### Question-generation evidence — 2026-10-30

All 69 qagen checks pass twice per debug/release profile with identical normalized outcomes, explicitly skipping lemma::tests::doubt_with_en_model. Three new synthetic joins compose checked Fixes construction, prompt numbering, implicit-answer retention, explicit anchor-to-sentence transport, span checking and injected lemma classification. These are supplied-input observations, not a live teacher pipeline.

Existing fix/lemma/lib/main sources now have groupants and nine scoped fragments. Invalid anchors fail before lemma callbacks; malformed multibyte item prefixes avoid invalid string slicing; collection preparation precedes writes on tested failures; CLI options are validated before dispatch. Nine worker mutants and five old-code witnesses remain in leaf evidence. Root's qagen adapter control rejects and restores. Late multi-file writes remain nontransactional.

[Integrated receipts](https://md.groupants.elamur.ai/free/en/mova/models/algorithm-library.groupant/#wave20-evidence) and [final validation](https://md.groupants.elamur.ai/free/en/mova/models/algorithm-library.groupant/#wave20-validation) retain scope. No live teacher, model loading, corpus/database operation, full-school, GPU or whole-Mova training run is involved. No universal floating-point accuracy, semantic completeness, Lean proof or end-to-end throughput claim follows.
