Two green branches can still make a broken system.
Git can merge different lines cleanly while their combined behavior violates an expectation. Existing tests may miss that interaction. With parallel coding agents, the intended behavior of each branch becomes useful evidence for deciding what the integration should preserve.
Converge turns branch intent, diffs, changed symbols, and dependencies into candidate executable checks. It runs those checks on actual revisions before classifying the result.
Execute the promise on both sides of the merge.
A run starts from a local repository, base revision, two branches, and their intent files. Disposable worktrees keep verification separate from the user’s checkout. The tool checks existing suites and compares generated promise tests across the originating branch and merged revision.
A verified semantic conflict requires a clean Git merge, passing existing suites on both branches and the merge, a test tied to an explicit promise, a passing result on the originating branch, and a genuine assertion failure on the merged code. Compilation failures and timeouts remain inconclusive or potential interactions.
One verification core, two interfaces.
A shared TypeScript core owns validated schemas, Git operations, static analysis, provider boundaries, subprocess execution, classification, repair verification, and run storage. The CLI and Next.js dashboard consume that core. Stored reports are validated when loaded.
Commands are executable-and-argument arrays rather than evaluated shell strings. Test execution is bounded, and generated repairs are verified inside disposable worktrees rather than automatically applied to the primary checkout.
A reproducible counterexample.
The deterministic fixture shows a coupon-before-tax promise: both branches and their clean merge pass existing tests, but the generated regression expects 8400 while the merged implementation returns 8500. A disposable repair must pass the original suite and that new regression before being called verified.
The fixture requires no model credentials. An optional live mode uses an authenticated local Codex CLI for extraction, test generation, and repair. The architecture illustration on this page is explanatory, not a captured application screen.
Evidence has an explicit boundary.
Potential interaction, verified conflict, and verified repair are different report states. Passing a generated check never proves the absence of other conflicts. The system reports the behaviors it executed.
Analysis executes repository tests and generated code. Disposable worktrees, validation, restricted subprocesses, and timeouts reduce risk, but do not create an operating-system sandbox. It is intended for local repositories trusted enough to test. A hosted read-only report cannot inspect a visitor’s local filesystem.
Run the deterministic demo.
Install Node.js 20 or newer, pnpm, and Git. The commands below set up the fixture, verify its baseline, analyze the semantic conflict, verify a disposable repair, and open the dashboard at localhost:3000.
git clone https://github.com/kvitkas/converge.git
cd converge
pnpm install
pnpm demo:setup
pnpm demo:verify
pnpm demo:analyze:fixture
pnpm demo:repair:fixture
pnpm dev