Elamur Groupants⌕
☰

macula-pragmatics

The groupant beside tools/macula/src/prag.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

componentlabelwhere
approximantpartialapproximant
astpartialsyntax.json
compositionpartialcomposition
costsymbolic source derivedinvariant
descriptantpresentdescriptant
invariantpartialinvariant
testsexecuted bounded checkstests

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.

idtypelabelwhere
behavior_complementbehavior_complementpartial source derived modelbehavior_complement
reverse_reconstructionreverse_reconstructionpartial source derived modelreverse_reconstruction
rule_overriderule_overridepartial source derived modelrule_override
speech_foldspeech_foldpartial source derived modelspeech_fold
act_precedenceact_precedencepartial source derived modelact_precedence
quote_machinequote_machinepartial source derived modelquote_machine

Parts

Model text

descriptant

Descriptant

Prospective epoch

2026-10-31 source review predicted: Rules=(known default plus with) minus without. Words projects rows. quote finds first qualifying frame/subtree. read selects form/act/polarity in rule order. read_sentence maps(rows,open_before,rules) to reading/speech/frame/open_after. words_only removes punctuation/renumbers; prag carries state by book. JPS quote boolean fold independent; compare joins verse observations. Resource model: n rows: kids O(n), subtree fixed point worst O(n² log n), repeated candidates can add n. String scans O(B), joins O(R log R)+sort, memory O(R+B). No filesystem timings. External prospective.md predates test additions and preserves APIs, effect order, hazards and interaction hypotheses.

Observed epoch

Bounded real helper checks in tests.md constrain these models; syntax is a partial lexical projection with no macro expansion, name resolution or proof. Production expressions unchanged; five inline test modules added. Compiled mutants are temporary and exactly restored. Existing malformed-input and nonfinite domains remain explicit, not silently repaired. Parent composes this scope with siblings without adding overlapping costs twice.

Finite fixtures, not exhaustive rules/malformed rows or filesystem compare.

approximant

Forward relation

Rules=(known default plus with) minus without. Words projects rows. quote finds first qualifying frame/subtree. read selects form/act/polarity in rule order. read_sentence maps(rows,open_before,rules) to reading/speech/frame/open_after. words_only removes punctuation/renumbers; prag carries state by book. JPS quote boolean fold independent; compare joins verse observations.

Domain: Nonempty10-column rows/head domains required. without overrides with. Frame may open next sentence. Negation and polarity distinct. Quote recognizer flat, lowercase-s possessive heuristic.

invariant

Invariant and cost

Invariant

Nonempty10-column rows/head domains required. without overrides with. Frame may open next sentence. Negation and polarity distinct. Quote recognizer flat, lowercase-s possessive heuristic.

Cost

n rows: kids O(n), subtree fixed point worst O(n² log n), repeated candidates can add n. String scans O(B), joins O(R log R)+sort, memory O(R+B). No filesystem timings.

Limits

Finite fixtures, not exhaustive rules/malformed rows or filesystem compare. No percentage surrogate is implemented: categorical parsing/effect observations lack an admitted numerical error metric. Any future profile must define its metric/domain and use only1/2/5/10 percent caps.

composition

Local composition

Rules=(known default plus with) minus without. Words projects rows. quote finds first qualifying frame/subtree. read selects form/act/polarity in rule order. read_sentence maps(rows,open_before,rules) to reading/speech/frame/open_after. words_only removes punctuation/renumbers; prag carries state by book. JPS quote boolean fold independent; compare joins verse observations.

Children select narrow source functions with their exact byte intervals. Remaining branches stay in the file model; fragments are not exhaustive partitions. Calls and state joins follow the forward relation, not folder order. Shared scans/helpers are counted once in whole-file costs. Complement of composition is not union of complements; reverse composition retains compatible intermediates and caller premises.

models

Typed source-bound relations

Subject: exact source SHA-256 in manifest. Domain and resource premises are in invariant.md. Each model is partial, source-derived, over a single helper invocation or the described finite trace. Complements are proposed inner exclusions under those premises; reverse relations retain all compatible antecedents, with no unique inverse claim. The oracle is the named checks in tests.md; unexecuted cases remain hypotheses. No numerical approximation certificate.

behavior_complement

Unknown library rule names cannot enable behavior. Disabled carry prevents continuation solely from prior open. Aaron's does not open quote; nothingness not negation. Supplied rows invoke no teacher.

reverse_reconstruction

Reading admits many rows/heads/histories. With carry disabled both old booleans compatible; Cont with carry/no close requires prior open. Quote may ignore old open. Final JPS state loses positions/nesting.

rule_override

Active=(RULES minus OFF plus known with) minus without; unknown ignored by library, rejected by CLI.

speech_fold

Quote precedes close/continuation/bare/narration. Empty quote returns frame/open=true even carry disabled; nonempty quote opens iff carry and last word included.

act_precedence

rhetorical,ask-first,propose,resolve,volitive/command,question,promise,assert order; form independently first-form. Equal act need not equal form.

quote_machine

Apostrophe before alphanumeric after space/start opens; before nonletter closes except lowercase s+space. Alphabetic chars set inside/outside, punctuation neither.

tests

Checks and evidence

Named source/helper checks: prag::tests::frame_and_quote, prag::tests::rules_off_show_red, prag::tests::narrator_closes_quote, prag::tests::jps_quotes, prag::tests::negation_and_acts.

Wave31 on2026-10-31:30 distinct exact tests passed twice debug and twice release, with equal sorted named outcomes. This node claims only its listed subset; empty subset means source review only. Six actual source-behavior mutants compiled, failed assertions, restored exact bytes/hash, and passed focused green reruns. No assertion-only mutants; existing swapped-input controls are separate. Receipt bundle: $MOVA_DATA/runs/octopus-wave31-corpus-2026-10-31 (native-commands.json, source-test-map.json, mutation-results.json, .status/.log). No live corpus, teacher, frozen assessment, download or production data used.

Finite fixtures, not exhaustive rules/malformed rows or filesystem compare.

This page in Markdown → https://md.groupants.elamur.ai/free/en/mova/tools/macula/src/prag.rs.groupant/