esc · exit theater
MingLLM Research · July 2026

Chorus

Six agents. One file. Same moment. Chorus merges simultaneous edits per symbol, and the converged file is a pure function of the intent set — any land order, same bytes.

Read the paper · 14 pp
Yiming Beckmann · MingLLM  ·  engine: Loom Conductor · chorus-core (Rust, 12 languages)
00 — the live demo

Six agents. One file. Watch it merge.

Chorus is the merge engine under Loom's fleet: it lets many coding agents edit the same file at the same moment — no locks, no turns. It merges per function rather than per line, surfaces the one edit pair that truly collides instead of guessing, and converges to byte-identical output in any land order. Four acts, ~50 seconds, then it loops.

00b — the full film · 11 minutes

Chorus, explained from scratch

The complete story for someone who has never heard of a merge conflict: why six agents on one file breaks everything, what the industry has tried — locks, git, file ownership, CRDTs, LLM merging — where each one falls short, and how Chorus puts members, visible checks, and order-independence together. Eight chapters.

01 — the mechanism, drawn

How a merge that cannot care about order works

Three wireframes from the paper. Every claim below is true of the shipping engine — the figures are redrawn from the paper's own diagrams.

utils.ts imports · other fn formatDate class User fn parseRow { Edit(formatDate) Add(parseDate) Remove(helper) } recompute(origin, intent set) pure function

Files become symbol cells, edits become intent. tree-sitter decomposes every file (12 languages) into per-symbol cells plus fenced "other" regions. Agents never submit diffs — they submit Edit / Add / Remove ops keyed by cell, and the merged file is recomputed from the fixed origin plus the accumulated set.

order 1 Edit Add Remove order 2 Remove Add Edit { } = same bytes

Any arrival order, the identical file. Lands accumulate raw intent into an order-free set; the converged (canonical, conflict-set) is recomputed from scratch as a pure function of that set. Permutation invariance isn't tested in — it's true by construction, then cross-checked on every fuzz case.

tests, per writer tree same tests on merged tree M w1 · formatDate w2 · parseDate w3 · dropHelper silent loss detected merge blocked

Structure isn't enough — behavior is gated too. After the structural merge, C2 replays every writer's own green tests on the merged tree. A test that was green on a writer's tree and is not passing on M is a silent loss: the merge surfaces instead of shipping. Absent or crashed suites count as failures — the gate fails closed.

02 — measured, not claimed

The engine behind the figures

12languages, one grammar graph
416pinned engine tests
16adversarial review rounds
~40silent-loss findings fixed
0orders that change the bytes
03 — the paper

Order-independent structural merging, in full

Fleets of AI coding agents make concurrent edits to the same file the common case rather than the exception. Merge queues restore safety by serializing — surrendering the parallelism the fleet exists for — while line-based three-way merge resolves concurrent edits order-dependently and without language structure. Chorus takes a third path: files decompose into per-symbol cells, writers submit intent rather than diffs, and the converged file is recomputed as a pure function of the fixed origin and the accumulated intent set, making land-order independence a structural property rather than a test target.

Real conflicts do not disappear: same-cell contention, removals that would dangle a surviving reference, and every ambiguous construct fail closed and surface per cell while the rest of the file lands. A semantic gate then replays each writer's own passing tests on the merged tree and blocks silent behavioral loss. We evaluate with sixteen rounds of adversarial review that produced mechanically-reproduced counterexamples, and a mutation-kill audit of our own fuzzing oracle that found — and fixed — three blindness classes the campaign could not see.

Open the PDF

Cite

@misc{beckmann2026chorus,
  author = {Beckmann, Yiming},
  title  = {Chorus: Order-Independent
            Structural Merging for Fleets
            of Concurrent AI Coding Agents},
  year   = {2026},
  note   = {MingLLM Technical Report},
  url    = {https://loom.mingllm.com/chorus}
}