Build1 distinct publisher3 min readPublished
A reader's thirty-one questions pushed the author of Foremerge into saying plainly where declared intent stops working: symbol scopes are still strings in 0.4.0, and undeclared work cannot block anyone's acceptance.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Follow any of these and your For You feed starts watching them — no settings page required.
build
98ms repo maps: what moving symbol indexing out of Node actually buys an agent1 distinct publisher
build
The only way to prove a contract test can fail is to ship a server that lies1 distinct publisher
build
A gate that warns and a fan that queues: test the executor, not the card1 distinct publisher
build
Waku 0.1.0 bets the product is the control plane, not another coding agent1 distinct publisher
Foremerge does not intercept filesystem writes, deliberately, and that refusal shapes everything else in the design. The author's answers on dev.to state the consequence without softening it: absent that interception a semantic lock cannot be enforced, so a lock would be an advisory pretending to be a lock [13]. The second reason given is operational. Agents abandon work constantly, and one stale lock could gridlock an entire fleet [12].
Staying out of the write path is what sets the severity ceiling. In 0.4.0 only declared operations can assert HIGH, and matches inferred from prose cap below it, on the argument that a coordination layer which guesses wrong at HIGH gets ignored within a week [8]. Combine that ceiling with the gate and the boundary of the model appears. Work that was never declared can produce nothing above the ceiling, so it cannot on its own stop a declared ChangeSet from being accepted [16]. The store is as complete as the participation in it.
Symbol scopes resolve as strings today, and structural resolution through at least one language adapter is a 1.0 item [10], which is where the word semantic starts to leak. A scope claim therefore rests on two agents naming the same symbol the same way, and the answer about where deterministic rules hit their wall begins by conceding that the wall is meaning rather than exact text, in a passage the available text cuts off mid-sentence [18].
There is also a missing table. No coordinated-versus-uncoordinated benchmark appears in the post, because the author has put exactly that, with raw data, plus calibration evidence that findings correlate with real conflicts, into the definition of 1.0 [10]. What exists is one day of refactoring from an incident that review caught and CI would have caught [5]. For that day to transfer, three conditions have to hold together: agents in parallel worktrees touching the same class, merges that are clean at the line level, and no test covering the extension point that was deleted [17]. Miss the third and your suite already reports the problem, later and at the price of a full run.
The install is small. The recurring cost is a declaration step before every write, and the post puts no number on it [1].
The part I would keep regardless is the detector's determinism: reproducible, testable, free, offline, and identical for every user, on the stated argument that a judge which changes its mind between runs erodes the trust the layer exists to provide [15]. That determinism is what lets a finding stand up in review instead of turning into an argument.
My context is the one the author names as primary, solo work with two or more agents on one machine [9]. There a declaration step is cheap against a day of refactoring, and a ledger entry saying I overrode a finding beats a lock held by a worktree that died an hour ago. For fleets I would wait, which is also what the author says, since teams and fleets need further validation before the tool leans on them [9].
Ranked by verification strength, evidence, and original report placement.
Foremerge is a coordination protocol for coding agents that sits above Git; agents publish intent and claim semantic scopes with declared operations before writing code, so two plans that cannot both be true collide in a queryable store instead of in the merge.
Foremerge ships as one Rust binary, local-first, Apache-2.0 licensed, exposing a CLI, a local JSON API and an MCP server over one SQLite store in the repository's git common dir; the README includes a terminal recording.
A reader named Vedant Madane went through the repo and left thirty-one questions across a GitHub discussion; the author answered every one in the thread and then republished the full Q&A, lightly edited, plus three questions he says he missed in the thread and answers for the first time in the post.
The triggering incident: the team used an agent to replace a payment service class while an automated agent picked up a backlog ticket to extend that same class with an additional provider; different worktrees, no overlapping lines, both merged clean, and the second change depended on an extension point the first had deleted.
The team caught the payment class collision in review and says it would have failed CI, though something like it can slip into production without proper tests in place; it cost a day of refactoring.
The author extracted the tool from the team's internal tools monorepo and open-sourced it in late August.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · September 3, 2026
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
One voice, checkable artifact
Every fact in this story comes from the author's own dev.to Q&A, including the payment-class wreck and the day it cost. What keeps the number off the floor is that most of the load here is mechanical and inspectable: the binary is Apache-2.0, the SQLite store sits in a known location, and the claim that inferred matches cap below HIGH in 0.4.0 is the kind of thing anyone can check against the source. The design reasoning is well laid out; the history behind it is unverified, and the post as supplied breaks off before the non-goals argument finishes.
First-party only
A late-August open-sourcing and the author's own team are the entire adoption record. The post names its target user as one person running two or three agents on a laptop and says fleets and teams need further validation before the project leans on that. No installs, stars, downstream projects or third-party deployments appear anywhere.
Mostly self-deflating
The author does most of the deflating himself: no benchmarks yet, no versioned schemas, symbol scopes still strings, findings advisory by construction. What still runs ahead of the evidence is the word protocol. A protocol implies other implementations and a stable surface, and by his own 1.0 list this is a single 0.4.0 binary with no schema versioning and no calibration showing that findings track real conflicts. Add the gap he does not foreground: since only declared operations reach HIGH, the coordination guarantee holds only among agents that already opted in.
Founder writing his own launch follow-up
This is the tool's author publishing on his own dev.to account days after open-sourcing it, with no editor between the claim and the reader, and the anecdote that justifies the whole design is one only he can attest to. Two things cut the other way: the thirty-one questions were set by an outside reader rather than chosen for comfort, and the answers volunteer the unflattering details, that scopes are strings and that a lock would be an advisory pretending to be a lock.
Confident about design, not about consequence
We can state with some assurance what this tool does and why it was built that way, because the author explains it in detail and the code is open for anyone to contradict him. We cannot say whether it prevents anything. The single incident behind it is unverified, the benchmarks that would settle it are on a 1.0 list, and nobody outside the author's team has reported using it.