self-study-interface-probe
The groupant beside tools/enrich/tests/groupant_pipeline.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
| component | label | where |
|---|---|---|
| approximant | bounded checked | Forward |
| ast | partial | syntax.json |
| cost | symbolic unmeasured | Cost |
| descriptant | present | descriptant |
| invariant | partial | Invariant |
| tests | bounded executed | 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 |
|---|---|---|---|
behavior_complement | behavior_complement | bounded source correspondence | behavior_complement |
reverse_reconstruction | reverse_reconstruction | bounded source correspondence | reverse_reconstruction |
terminal_gate | temporal_composition | bounded source correspondence | terminal_gate |
byte_binding | representation_identity | bounded source correspondence | byte_binding |
channel_split | information_flow | bounded source correspondence | channel_split |
grade_square | learner_alignment | bounded source correspondence | grade_square |
publication_boundary | state_projection | bounded source correspondence | publication_boundary |
failed_restage_frame | rejected_transition_frame | bounded source correspondence | failed_restage_frame |
Model text
descriptant
Self-study interface combiner
This probe joins actual child APIs on local synthetic artifacts. Its inputs are the test Rust source and partial syntax, the forward/invariant/cost equations, eight typed complementary views, and retained evidence. It exposes errors hidden by individually correct leaves: event order, serialization identity, question-channel identity and learner-pair wiring.
Epoch 2026-10-30
The teacher trace model exposed acceptance of completion-before-answer and concatenated turns. A focused baseline binary rejects the new temporal assertion; the corrected decoder must pass it. Split artifacts require retention::parse_material; the complete-course parser intentionally rejects question-only or training-only files. Correcting this test adapter retains the production parser distinction.
Future epochs should preserve literal review bytes, distinct channel parsers and explicit report trust. This fixture has self_study=None and reuses one synthetic assessment on both axes. It neither runs the full study dispatcher nor demonstrates learned quality, held-out isolation, process identity or crash transactions. Temporary fixture bytes and elapsed times are not output identities.
model
Self-study interface probe
Forward
This source composes real decode_events, stage, status, split_lesson, retention::parse_material, AssessmentContract::new/bind and compare on one synthetic 24-source packet. No teacher process, training, retained state or live exam runs. The packet has self_study=None; this is an interface probe, not study::finish_improve execution.
Successful decoding supplies exactly the review text bound to teacher-reply.json. Staging produces six hashed artifacts with state=staged, complete=false and published=false. Split/parse gives 12 exercises in training and 8 tests plus 4 exams in assessment; assessment contains no teaching/exercise fields. Bound synthetic grades permit gain=1 with an unchanged learner square. Both comparison axes reuse the same assessment.
Six temporal countermodels reject before the test adapter writes review artifacts. Equal parsed JSON with different review bytes rejects. A same-count foreign question projection, foreign candidate label and positive learning counter reject. Repeated staging rejects and preserves lesson bytes and receipt.
Invariant
Fixture files share packet/prompt digests and one literal review text. Assessment rows retain phase tags, per-kind indices, labels and choice-derived correctness. Identities are joined before comparing counts. Fresh temporary directories have single ownership.
The test-owned save_completed writes review before reply; production review writes reply first. No crash-order equivalence follows. Reports are constructed JSON, not learner observations. Local hashes bind bytes, not a remote identity.
Cost
Cost sums reached parsing, validation, hashing, assertions and temporary-file operations. For H bytes, S source rows, Q question rows and maximum scan length B, a conservative validation term is O(H+QSB), plus parser/lint and receipt checks. These fixtures are fixed-size; no fitted time model or speedup is claimed.
behavior_complement
Type behavior_complement. U is the tagged finite fixture/observation space of four tests. R requires Forward equations, rejection gates and output-file frames. U minus R includes accepted invalid traces, changed review bytes admitted, wrong split fields/counts, automatic publication, identity/activity mismatches admitted, or changed outputs after rejected restaging. This target does not enumerate arbitrary process or filesystem failures.
reverse_reconstruction
Type reverse_reconstruction. A receipt/question projection admits predecessors sharing exact bound hashes and validation constraints. Ignored events, metadata and histories remain ambiguous. A comparison fixes score differences/inequalities, not unique choices or learner execution. A failed observation has multiple compatible faulty gates or inputs.
terminal_gate
Type temporal_composition. For the six declared countermodels and initially absent output files, decoding error leaves review/reply/staged artifacts absent in this adapter. Production failure records and crash cleanup are outside this frame.
byte_binding
Type representation_identity. Equal parsed reviews can have unequal bytes. Stage requires literal review bytes equal the decoded result before receipt creation. Pretty-printing witnesses failure of semantic JSON equality as a replacement. Neutral events can vary while the result text is fixed.
channel_split
Type information_flow. Valid fixture split/parse preserves question phase counts and removes teaching/exercises from assessment. It does not establish unseen passages: training includes source sentences. No held-out quality claim follows.
grade_square
Type learner_alignment. Binding and comparison retain question projection, per-kind order, passive counters and matching baseline/candidate labels. Foreign same-count projections and mixed candidate labels reject. Structurally valid labels/counters are trusted reports, not process attestation.
publication_boundary
Type state_projection. Successful staging and a favorable synthetic score comparison do not change published=false or complete=false. No canonical promotion or learned knowledge is implied.
failed_restage_frame
Type rejected_transition_frame. A second stage call on this completed fixture rejects and preserves lesson bytes and validated receipt. Partial writes, concurrency, I/O failure and process death are outside this narrow frame.
evidence
Executed evidence โ 2026-10-30
Four interface tests pass in debug and release, using actual child APIs and synthetic local files. Two release repeats have identical named result records. No teacher call, network request, training or real assessment corpus is used.
A saved compiled pre-fix binary runs exactly temporal_countermodels_cannot_create_review_artifacts and fails its rejection assertion with exit 101. The repaired decoder passes. The first probe used the complete-course parser for split files and correctly failed its required-fields check; the adapter now uses retention::parse_material, as the retained workflow does. This adapter correction is separate from the production decoder bug.
The integrated packages pass 155 algorithm unit tests, 28 enrichment unit tests, 4 interface tests, 7 teacher unit tests and one algorithm doctest in both profiles. The live teacher smoke test remains ignored. Strict algorithm/teacher Clippy and no-dependency Clippy for the interface target pass; existing world warnings remain. No complete-workspace Clippy or test claim is made.
Partial syntax is generated twice identically. Structural validation checks source/evidence references and typed headings; finite runtime tests establish only the stated fixtures. Literal review bytes, phase separation, trusted grade metadata, ignored event fields and absent full-dispatch/training coverage are explicit in model.md.
This page in Markdown โ https://md.groupants.elamur.ai/free/en/mova/tools/enrich/tests/groupant_pipeline.rs.groupant/