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

# correspondence-cli

The groupant beside tools/correspondence/src/main.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:** [`tools/correspondence/src/main.rs`](https://github.com/ElamurAI/mova-free/blob/main/tools/correspondence/src/main.rs)
- **source SHA-256:** `71986dbfd4c503aa…`
- **repository folder:** [`tools/correspondence/src/main.rs.groupant`](https://github.com/ElamurAI/mova-free/tree/main/tools/correspondence/src/main.rs.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 | [forward](#forward) |
| **ast** | partial | `syntax.json` |
| **cost** | partial | [cost](#cost) |
| **descriptant** | present | [descriptant](#descriptant) |
| **invariant** | partial | [invariant](#invariant) |
| **tests** | finite 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 |
|---|---|---|---|
| `correspondence-cli-behavior` | behavior_complement | partial source model | [behavior-complement](#behavior-complement) |
| `correspondence-cli-reverse` | reverse_reconstruction | partial source model | [reverse-reconstruction](#reverse-reconstruction) |

## Model text


### descriptant

#### CLI for bounded correspondence scans and create-new JSON reports.

2026-10-31, wave36. This file supports the first bounded typed correspondence scanner. The inventory found 200 algorithm implementations and 473 other registered source groupants at the baseline; 56 pure nonalgorithm groups and three mixed groups are reported separately. Root and mixed groups must not be mislabeled as ordinary application leaves.

Earlier source/model formats are predominantly prose. Missing machine formulas remain gaps. An initial ownership check based only on lexical model paths was strengthened after review: canonical model files must remain within the declared owner sidecar, including symlink targets. The negative control uses an internal foreign-sidecar symlink.

Finite relation structural candidates, finite coincidences and two-order composition summaries are distinct observations. Even an identity on the supplied finite endpoints is not an unrestricted inverse theorem or a production replacement. Effects require an explicit common-state adapter; generic composition of effectful formulas is rejected by the core.

### model

## Correspondence CLI model

### forward
Accept exactly scan REPO REGISTRY CATALOG NEW_JSON. Run corpus::scan first; serialize a successful report with serde_json pretty formatting, then mova_modelcheck::write_new using create_new and sync_all. Print output path, coverage and explicit non-proof/non-substitution fields. Invalid arguments, scanner failures and existing output paths return errors.

### behavior-complement
Within stable input files and successful allocation, excluded behavior includes accepting a different command/argument count, overwriting an existing report, presenting a scanner failure as success or marking a finite report as proof. The CLI does not run teacher calls, training, production replacements or network requests.

### reverse-reconstruction
A successful report and console summary admit every invocation naming the same readable inputs and a previously absent writable output path. Serialization is a projection and cannot uniquely recover the shell environment, filesystem history or executable context. An existing-file error does not imply invalid formula semantics. If a write/sync fails after create_new, a partial file may remain; no atomic-replacement guarantee is claimed.

### invariant
No output file is created until the scanner returns success. create_new protects existing output bytes. The scanner owns ownership/hash/type validation; CLI composition preserves the scanner report and adds only a concise status line.

### cost
Scanner cost plus O(J) JSON serialization/write bytes for report size J; sync latency is environment-dependent. Arguments and report output are not semantically interpreted by the CLI.

### checks
2026-10-31: baseline empty-catalogue CLI scan twice produced identical report bytes. Reusing the first output path returned File exists. Six scanner tests cover dispatch dependencies. Scoped Clippy and formatting pass; no full workspace suite was run. No universal semantic equivalence or production performance claim follows.
