# Scope and demand research

2026-10-31 uniqueness extension: searched `MoonBit unique constraint three way merge review constraint violation` and `MoonBit unique merge conflict review bundle uniqueness`; inspected mbitsv 0.1.0's [schema validator](https://assets.mooncakes.io/assets/CJR-zhang/mbitsv%400.1.0/schema.mbt.html) and [quality gate](https://assets.mooncakes.io/assets/CJR-zhang/mbitsv%400.1.0/quality_gate.mbt.html), which already expose table schema validation and duplicate-key quality checks. These generic capabilities are established overlap. The contribution here is a separate three-snapshot, policy-bound phase: individually valid sources may produce duplicates, reviewers inspect complete original/candidate records and explicitly repair them, and replay/export revalidate every phase. [Dolt's constraint-violation workflow](https://www.dolthub.com/docs/sql-reference/version-control/merges/) documents merge-created unique/foreign-key violations; [Pandera checks](https://pandera.readthedocs.io/en/latest/checks.html) demonstrate established validation demand. Neither proves adoption of this exact API. Also inspected adjacent bit-vcs file/KV merge search results, not table uniqueness review. Search coverage is incomplete, especially unpublished branches and alternate terminology; no uniqueness claim is made. No external implementation or tests are incorporated.

2026-10-31 browser extension: searched `MoonBit CSV browser three way merge review MoonRow mbitsv` and `site.mooncakes.io MoonRow diff merge browser`, and reopened the [MoonRow 0.1.0 API](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0) and [mbitsv 0.1.0 API](https://mooncakes.io/docs/CJR-zhang/mbitsv@0.1.0). MoonRow exposes `compare(before, after, options)` / `compare_csv`; mbitsv exposes delimited-table parsing, writing, quality analysis and comparison. This UI adds no general comparison or parsing API: it completes this repository's already-established three-snapshot structural review/replay workflow using the same core. Browser rendering and local-file processing are ordinary engineering, not a new originality claim. Search also found [bit_diff3's content merge](https://assets.mooncakes.io/assets/mizchi/bit_diff3%400.48.0/diff3.mbt.html), an adjacent text-level boundary rather than row/column evidence. Other terminology, unpublished branches and packages remain uncertain; these searches do not establish ecosystem uniqueness. No external UI/merge implementation or tests were incorporated.

2026-10-31 column-evolution extension: searches `MoonBit column rename deletion three way merge ColumnLineage MoonRow` and `site.mooncakes.io moonconfig merge review table` again found [MoonRow's keyed two-snapshot comparison](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0) and [moonconfig's generic JSON review](https://mooncakes.io/docs/forey217/moonconfig@0.2.0), with their already acknowledged overlap. [bit-vcs' file merge source](https://assets.mooncakes.io/assets/mizchi/bit_lib%400.47.0/merge.mbt.html) also implements file rename/delete conflicts: those semantics are established, not novel. Our extension remains within three rectangular tables: explicit branch column absence, whole-column evidence, missing intersections, key preservation and bound review dependencies. It does not add generic file rename detection or JSON merge. The search is limited and does not prove ecosystem uniqueness; no competing source/tests were reused.

2026-10-31 file-export extension: rechecked [MoonRow 0.1.0](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0) and [mbitsv 0.1.0](https://mooncakes.io/docs/CJR-zhang/mbitsv@0.1.0), with searches `MoonBit CSV three way merge review output MoonRow mbitsv`. The inspected public boundaries remain keyed snapshot comparison and delimited-table/quality/diff operations. Safe file publication is ordinary CLI engineering, not a separate originality claim; this change completes the existing three-way merge/replay workflow without adding a general file utility API. Search coverage remains limited and does not establish uniqueness. APIs were checked against the pinned async 0.21.3 source with `moon ide doc`/`peek-def`; no external implementation/tests were copied.

2026-10-12 transport extension: inspected [mbitsv 0.1.0](https://mooncakes.io/docs/CJR-zhang/mbitsv@0.1.0) and [MoonRow 0.1.0](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0); searches `MoonBit TSV three way merge review sheet` and `daff merge tsv format tabular conflicts`. TSV parsing and two-table comparison already exist and are not claimed as independent value. This addition carries the existing three-way structural invariants, original-input review and atomic Git-driver recovery to quoted TSV data. [daff](https://github.com/paulfitz/daff) documents CSV/TSV and merge/Git workflows, confirming an established workflow rather than novelty. Search and inspected versions are incomplete; no uniqueness claim or new popularity count is made. No external parser/code/tests were copied.

Snapshot: 2026-10-11. This documents the selected project's boundary, not proof that no competitor exists. Sources: Mooncakes registry/readmes/generated APIs, GitHub source/readmes, official stable MoonBit documentation and Python package statistics. Search terms included `MoonBit CSV merge`, `MoonBit table three-way merge`, `MoonBit reconcile`, `csvdiff`, `diff3`, `table_diff_by_key`, `compare_csv`, `apply_decisions`, `JSON merge`, and `delete column conflict`.

## Adjacent MoonBit capabilities

| Project/source | Public boundary inspected | License / recent evidence | Relationship |
|---|---|---|---|
| [moonconfig 0.2.0](https://mooncakes.io/docs/forey217/moonconfig@0.2.0), [GitHub](https://github.com/forey217/moonconfig) | `merge`, `merge_json`, `resolve`, `guarded_diff`, `apply`: JSON configuration three-way review/guarded patch replay; arrays treated atomically | MIT; registry publication 2026-10-02 | Strong overlap with a fixed-schema CSV→JSON cell merge. That initial boundary was rejected. It does not establish rectangular row/column lifecycle invariants. |
| [MoonRow](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0), [GitHub](https://github.com/JingLan0v0/MoonBit) | `compare(before,after,options)`, `compare_csv`, `parse_csv`, JSON/text reports; two snapshots, exact/compound keys, schema equality except ignored columns | Apache-2.0; Mooncakes 0.1.0 visible, recent listing activity in October 2026 | Shared keyed identity and CSV groundwork; no ancestor/ours/theirs structural resolution workflow in inspected API. |
| [mbitsv](https://mooncakes.io/docs/CJR-zhang/mbitsv@0.1.0), [GitHub](https://github.com/CJR-zhang/mbitsv) | Delimited-text parsing/quality tooling and `table_diff_by_key` two-table comparison | MIT; registry 0.1.0 dated 2026-08-20 | Parsing/diff overlap, not a complete structural three-way merge contract. |
| [MoonFrame](https://github.com/ihb2032/MoonFrame) | DataFrame operations, filtering, joins and CSV data analysis | Apache-2.0; registry 0.7.0 dated 2026-10-02 | Relational joins align two datasets; they do not encode branch ancestry or destructive merge intent. |
| [bit_diff3 / bit-vcs](https://github.com/mizchi/bit-vcs), [registry](https://mooncakes.io/docs/mizchi/bit_diff3@0.48.0) | `content_merge`: text three-way merge primitives | Apache-2.0; registry 0.48.0 dated 2026-09-21 | Generic text merge loses keyed table identity and independently changed cells on the same CSV line. |

Publication dates/listing activity are maintenance signals, not evidence of production adoption or sustained support. This is a limited API/source inspection, not an exhaustive audit of every unpublished branch. Repository names, packages and APIs can change; rerun these searches before substantially expanding scope. Other reconciliation tools may cover matching/reports without using the same vocabulary. Failure to find a package is not evidence of absence.

## Independent value and overlap decision

**Independent value:** merge concurrently edited keyed tables while making whole-row/whole-column deletion conflicts and undefined row×column intersections explicit, producing only validated complete tables with source evidence.

JSON merge's generic `merge/resolve` shape is established and deliberately not claimed as novel. The differentiating work is the two-dimensional domain contract: column removal versus any value/new row on that column; row removal versus any value/new column on that row; atomic selection of conflicting insertions; unknown intersections distinct from empty strings; compound-key identity; final rectangularity/uniqueness checks. A CSV wrapper over JSON alone would not supply these rules. Our first milestone implements them, rather than deferring differentiation to future features.

## Other-language demand evidence

- [daff](https://github.com/paulfitz/daff), MIT, includes tabular comparison/merge workflows and Python distribution. The research snapshot observed 929 GitHub stars and 76 forks. [PyPI daff](https://pypi.org/project/daff/) version 1.4.2, released 2025-05-04. [PyPIStats](https://pypistats.org/packages/daff) snapshot: 16,721,647 downloads/month, 4,344,255/week, 394,652/day. These are package installations, **not unique users or merge operations**; [dbt-core's dependency](https://github.com/dbt-labs/dbt-core/blob/1.10.latest/core/setup.py) explains substantial indirect installs.
- [csv-diff](https://github.com/simonw/csv-diff), Apache-2.0, supplies keyed CSV comparison and JSON reports in Python. [PyPIStats](https://pypistats.org/packages/csv-diff): 76,693/month, 27,325/week, 2,929/day at the snapshot. Useful evidence for recurring keyed-table change inspection, not direct evidence for three-way structural merge demand.
- [csvdiff3](https://github.com/sctweedie/csvdiff3), MIT, explicitly supports CSV three-way diff/merge and Git-driver use. Snapshot 10 stars / 4 forks. Its README accepts column deletion despite changes on the retained side, so its structural policy differs from this project's explicit review. This narrow workflow has weaker direct popularity evidence; no download count was established.

An earlier isolated Python daff experiment merged independent price/stock edits on one synthetic record, while ordinary `git merge-file` conflicted on that CSV line. It demonstrates functional value, not a benchmark. No third-party implementation or fixture was copied into the merge engine.

The broad table-change workflow is established and useful beyond a niche MoonBit demo. Demand for this stricter structural policy specifically remains medium-confidence until downstream developers adopt it. No popularity number is presented as evidence of MoonBit adoption.

## Selection judgment

Prior candidate investigation included localization-catalog auditing and SARIF baseline workflows. Their existing format/runtime and reporting overlap required tighter boundaries. The selected table capability scored best on a 1–5 qualitative scale: user value 4, differentiation 4 **after structural narrowing**, technical depth 4, feasibility 4, portability 5, demonstration 5, maintenance affordability 4. The evidence above supports that judgment; it is not market research or a uniqueness claim. The explicit structural slice is independently useful now, and input-bound review/Git integration extend the same contract rather than creating unrelated features.

Toolchain sources: [stable module configuration](https://docs.moonbitlang.com/en/stable/toolchain/moon/module.html), [package configuration](https://docs.moonbitlang.com/en/stable/toolchain/moon/package.html), [v0.10.14 release](https://www.moonbitlang.com/updates/2026/09/21/index).

## Ordering and explicit lineage extension

Rechecked Mooncakes' MoonRow 0.1.0 and moonconfig 0.2.0 public boundaries on 2026-10-11 before this extension. Searches also included `MoonBit column rename merge`, `MoonBit table schema lineage`, `moonrow merge rename`, and `daff column rename merge CSV`. The inspected MoonRow boundary remains two-snapshot comparison with matching non-ignored schemas; moonconfig remains JSON configuration merge/review. This extension stays inside structural three-way table reconciliation, rather than introducing a general rename/filter/diff API. Unpublished implementations and alternate terminology remain uncertain.

Search also found [MoonFrame's `Series::rename`](https://mooncakes.io/assets/ihb2032/MoonFrame%400.5.1/series/series.mbt.html), in indexed 0.5.1 source: it returns a series with a new name and shared storage. That single-source operation is established overlap and is not claimed as new here. Our public addition declares correspondence across three schemas, preserves original review snapshots and applies the existing structural/cell conflict rules; it does not expose a general table/series rename utility.

[daff's tabular diff specification](https://paulfitz.github.io/daff-doc/spec.html) explicitly represents column rename and discusses respecting row order in CSV/spreadsheet workflows. This is evidence that these concerns occur in established table tooling, not a claim that our explicit mapping policy is novel or that demand counts measure this particular feature. The implementation/tests here were independently authored; no daff code or fixtures were incorporated.

## Explicit row identity extension

On 2026-10-12, rechecked [MoonRow 0.1.0](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0) and [moonconfig 0.2.0](https://mooncakes.io/docs/forey217/moonconfig@0.2.0). Search terms: `MoonBit row key rename lineage three way table merge`, `daff csv merge row primary key changes rename`. The inspected MoonRow API still compares two snapshots; primary key changes appear as deletion/addition. The inspected moonconfig boundary remains generic JSON merge/review, not retained-record identity across three rectangular tables. Our addition is an explicit correspondence within the existing structural merge workflow, not a general entity matching library. Alternate package names, unpublished code and uninspected branches remain uncertain.

[daff](https://github.com/paulfitz/daff) already provides row matching and table merge/Git workflows. Identifier alignment is established table tooling, and no novelty or additional download/adoption claim is made for this particular policy. This implementation requires caller-declared one-to-one retained records, checks final key collisions, preserves original review inputs and uses output coordinates for decisions. It neither guesses entity equality nor bypasses ordinary structural conflicts. No external code/tests were copied; real fixture licensing remains in THIRD_PARTY.md.

## Review revision extension

2026-10-12 collaboration extensions: searches `MoonBit table three way merge scoped review combine decisions` and `daff table merge conflict review distributed review`, with fresh inspection of [MoonRow 0.1.0](https://mooncakes.io/docs/JingLan0v0/moonrow@0.1.0) and [moonconfig 0.2.0](https://mooncakes.io/docs/forey217/moonconfig@0.2.0). MoonRow exposes two-snapshot comparison/reporting; moonconfig's generic configuration merge/review remains acknowledged overlap. Assigning, combining and auditing reviews are ordinary workflow operations, not independent novelty claims. These extensions stay within the three-snapshot rectangular-table contract, including whole-object decisions, unknown intersections and structural dependencies. The inspected boundaries do not establish this full table-specific workflow; unpublished projects and other terminology remain uncertain. [daff](https://github.com/paulfitz/daff) remains evidence for established table version-control workflows, not demand counts for these particular APIs. No competing implementation or tests were copied.

Editable-sheet extension uses the same 2026-10-12 `MoonBit TSV three way merge review sheet` search and inspected mbitsv/MoonRow versions described above. Parsing, report rendering and generic review are established adjacent capabilities. This slice is an input-bound handoff inside this project's structural workflow: complete current evidence and coverage are checked before decisions, and structural choices expose a new review phase. It is neither a general spreadsheet editor nor a separate originality claim. The inspected APIs do not establish this complete three-snapshot structural workflow; unpublished packages/branches and alternate terminology remain uncertain. No external implementation or tests were copied. [daff's tabular diff specification](https://paulfitz.github.io/daff-doc/spec.html) shows established editable table-change representations, not demand statistics for this exact API.

On 2026-10-12, searched `MoonBit conflict review change revoke decisions` and inspected [moonconfig's 0.2.0 documentation](https://mooncakes.io/docs/forey217/moonconfig@0.2.0) again. Generic three-way review and explicit decisions are established overlap, already acknowledged above. Revising choices is ordinary workflow functionality, not a new independent product or originality claim. This extension remains specific to retained row/column structural dependencies: changing whole-object selection can invalidate missing-intersection decisions, and those choices must be explicitly revoked. It does not add generic JSON patch/review utilities. Search results are incomplete and do not establish ecosystem uniqueness or demand for this exact API. No external implementation or test suite was reused.
