01
Foremerge — the merge conflict Git cannot see, caught before either agent writes code
Foremerge (Apache-2.0, Rust, 491 stars, 18 forks, created August 21, 99 commits, 1 contributor, v0.4.3 released September 18) is a coordination layer that sits above Git without changing how Git works. The problem it names is specific and checkable against your own repo: one agent replaces PaymentService with StripePaymentService while another adds PayPal support to PaymentService. Different files, no overlapping lines, so Git merges both without complaint — and the PayPal work is now stranded on a class nothing calls. Foremerge makes each agent declare its intent and the scopes it will touch before editing, as prose plus a typed operation (replace, extend), reads those declarations against every other agent's, and raises a HIGH advisory naming both agents while both worktrees are still clean. State lives in a SQLite file under the repo's Git common directory, so separate worktrees share one picture. curl -fsSL https://foremerge.com/install.sh | sh, then foremerge init and foremerge setup all to wire the MCP server and skill into Claude Code, Codex, or Cursor.
Two design choices are worth more than the pitch. Acceptance is verification-gated: you register a check by name (foremerge checks set test -- cargo test --all-targets) and Foremerge runs it itself rather than taking an agent's word that it passed, with agent-reported results recorded as provenance only and work accepted without a check stamped UNVERIFIED with the reason. And nothing here calls a model — the conflict detector is deterministic, so the same inputs produce the same verdict, and claims are advisory rather than locks on the reasoning that one crashed agent holding a lock stalls the whole fleet. The README's status block is unusually direct about the rest: "Published benchmark results do not yet exist, and coordination between machines is outside this project's scope." Two things surfaced only in the Show HN thread. Asked the obvious objection — you do not know in advance what you will need to change — the author answered that the initial intent does not have to be complete, only correct about the destructive parts, which is why it is declared as prose rather than a file list and why only a HIGH signal on declared scope blocks acceptance. And asked whether a decision model would help, he disclosed that his company has been training its own, Corgen, for eighteen months and is benchmarking it now; none of that appears in the README.
Reach for it if you run more than two coding agents on one repo in parallel worktrees and have already lost an afternoon to two plans that were each individually correct; it replaces the PR-time conflict review that catches this class of problem only when a human happens to know both tickets. Delete the convention where your agents announce their plans in a shared Slack channel nobody reads. Tradeoffs: one contributor and 99 commits, with the README documenting a 0.5.0 that is ahead of the 0.4.3 on crates.io; the SQLite store does not replicate across machines, and the README warns you not to infer distributed safety from putting it on a network mount; and 85 total crates.io downloads against 491 stars is the usual signal that far more people have starred this than have run it.