← In the News

Foremerge asks coding agents to declare intent before they write code

Foremerge · naw103, GPTree · Show HN, September 21, 2026

Machine-readable Download Markdown

Foremerge is a coordination layer that sits above Git: one Rust binary, Apache-2.0, version 0.5.0, with its shared state in a SQLite file inside the repository's Git common directory. Before editing, each agent publishes an intent and the semantic scopes it will touch, plus the operation it intends on each one. Scopes come in twelve kinds, from symbol and api through schema, migration and contract. When one agent declares symbol:PaymentService=replace and another declares symbol:PaymentService=extend, the second publish returns a HIGH destructive_vs_additive finding before either has written a line. Detection is deterministic: in the project's own words, "it never asks a model to judge conflicts, so the same inputs always produce the same answer."

The acceptance gate is the more interesting half. "Acceptance is verification-gated: Foremerge runs the check itself rather than taking an agent's word for it," the documentation says, and agent-reported test results are "provenance only. They do not satisfy acceptance." Where a repository has nothing worth checking, work is "recorded as UNVERIFIED with the reason, so the audit trail never implies a check ran when none did." Claims on a scope are advisory leases rather than locks, with a stated reason: "a single crashed agent would then stall the whole fleet."

The project is candid about what it has not shown. Its own limitations section calls conflict detection "deterministic and explainable, but heuristic," able to "miss synonymous concepts and warn on compatible work," and says there is a benchmark plan but "no published coordinated-vs-uncoordinated performance results yet." That sits awkwardly beside the Show HN post, which claims the author has "tested this up to 98 parallel agents all working on the same repo with zero conflicts." The more careful figure is in the same post: a replay of 76 real intents, one conflict flagged, and a disclosed blind spot where one agent claimed a scope by class name and another claimed it by an internal method.

Why it matters: Most fleet tooling so far has given agents more isolation. This gives them a shared declaration and then refuses to take their word for whether the work passed. If you are running more than one agent on one repository, the question it raises is answerable today: what would your agents have to declare for a collision to be visible before the code exists?