<p align="center" <img src=".github/og.png" alt="Lattice — stop serializing work that only looks like it conflicts" width="100%" </p
Lattice
English · 日本語
Stop serializing work that only looks like it conflicts. Lattice is a schedulability compiler for multi-agent development. It observes the real boundaries of your codebase, proves which tasks can run in parallel, and — when two tasks genuinely collide — refactors the seam between them and recompiles the plan so they can run in parallel after all.
Built and maintained by Quo at kitepon.dev.
Why
Give three coding agents three tasks and the usual outcome is one of two failures:
- You serialize too much. "These both touch renderer.ts, so run them one at a time."
Often they touch different symbols in that file and could have run together.
- You serialize too little. Nothing declared a dependency, so you run them in parallel and
discover the collision after both have written conflicting code.
Both failures come from the same gap: nobody actually measured the boundary. Dependency arrows in a task list are a claim about intent, not evidence about code.
Lattice closes that gap with a different move. It does not just detect the conflict — it removes it. When two tasks contend for one file, Lattice derives a cut, applies it in an isolated worktree, verifies the transform against five acceptance conditions, and recompiles the plan against the transformed source. The conflict edge disappears because the shared surface stopped being shared.
What it actually does
declare boundaries → compile independence → conflict?
├─ no → run in parallel
└─ yes → propose a seam
→ transform in an isolated worktree
→ verify (5 conditions)
→ land + recompile → run in parallelA real example, from this repository. Two tasks both needed to change src/seam-commit.mjs. Lattice compiled the declarations, reported conflictcount: 1 with severability: codeseam, proposed a cut, and applied it in an isolated worktree. After all five acceptance conditions passed, the file was split into one owned surface per task plus a shared and a residual surface. Recompiling reported conflictcount: 0 and placed both tasks in the same parallel group.
Nobody hand-refactored that file. The product cut it so the work could parallelize.