kadence
Proof

The conflict study

8,396 merge commits across 130 public repositories, replayed to see how often task files actually conflict.

Before building on the claim that an append-only journal removes merge conflicts, we checked how often those conflicts happen to other people. Not by asking — by counting.

Method

Backlog.md and git-issues keep tasks as files in git, so the history of their merges is readable.

  1. GitHub code search found 245 public repositories with backlog/tasks/ or .issues/.
  2. Each was cloned partially (--filter=blob:none --no-checkout).
  3. Every merge commit was replayed with git merge-tree --write-tree on its two parents. Git itself reports whether a conflict arises — this is not a heuristic, it is the same machinery a real merge uses.
  4. Conflicts were then filtered by path to the task files.

Why not git show --cc

The first attempt used a combined diff and produced false positives: --cc reports files created in the merge commit itself as differing from both parents. Replaying the merge has no such flaw.

Results

MeasureValue
Candidates found245
Dropped: no task files42
Dropped: no merge commits73
Usable130
Merge commits replayed8,396
Conflicting anywhere681 (8.1%)
Conflicting in task files44 (0.52%)
Repositories where it happened20 of 130 — 15.4%

Verdict against thresholds set in advance

ThresholdConditionResult
Confirmedmore than 30% of repositoriesno
Inconclusive10–30%← 15.4%
Refutedunder 10%no

The hypothesis was neither confirmed nor refuted. It landed in the middle band, closer to the lower edge.

What that means, without dressing it up

The problem is real but rare. A conflict in task files happens in roughly one merge in two hundred. A team doing 20 merges a month meets one every five months. That is why conflict-freedom is our proof and not our headline.

The distribution is very uneven. In 110 of 130 repositories there were none at all. But a handful carry seven, five, five. A minority of teams do feel this regularly — a narrower segment than expected, and one that can be named.

The most valuable finding: the type

Classifying 28 conflicts from the six most active repositories:

TypeCountWhat it meansRemoved by append-only
CONFLICT (content)25 (89%)Two branches edited the same taskYes — exactly our scenario
CONFLICT (add/add)2 (7%)Two branches created tasks with the same idNot automatically
CONFLICT (modify/delete)1 (4%)One branch edited, the other deletedYes

The overwhelming majority of real conflicts are precisely the type our architecture removes by construction. The mechanism hits what it aims at.

The other measurement

Probe A asked whether the problem exists. Probe C asked what the answer costs an AI agent once it does: 948 bytes, constant as the project grows.

Raw data

The full results, the per-repository breakdown and the CSV are in the product repository: probe-a-results.md and probe-a-data.csv.

On this page