Entity-aware Git merges

Updated Oct 17, 2026

The weave-git-merge skill covers Weave as a per-file, entity-aware Git merge driver that Git invokes through .gitattributes during merges, rebases and cherry-picks. It ships with the other skills through install-skills, which installs the skill only and does not run weave setup; Weave itself must be configured separately.

Treat the primary checkout as a read-only coordination anchor for unattended merge and rebase work; never use it as a scratch, formatting, conflict-repair, or rebase surface. Before any history rewrite, record the candidate head (OLD_HEAD), the exact fetched target commit, and their merge base. A completed rebase creates a new candidate, so gate and review evidence tied to the old head is stale for acceptance and the candidate-bound checks must be rerun against the new HEAD.

The skill assumes the dev-env-rocky baseline: Weave v0.5.1, a globally registered driver command that carries WEAVE_EVENT=1 and a quoted absolute path, no global attributes rule, merge.conflictStyle=zdiff3 set globally, and activation only through a repository's own reviewed attributes such as src/*.rs merge=weave. The skill shows how to verify a host against that baseline before trusting it.

For unattended multi-commit or long-lived-branch rebases, the workflow bypasses Weave by default, using Git's built-in merge machinery with merge.conflictStyle=zdiff3 instead. Ambient global or clone-local selection is never repository consent; a tracked .gitattributes rule is explicit opt-in for attended merges and requested dogfooding, and for unattended replays the skill bypasses it with a command-scoped override of the named driver, repeated on every --continue, rather than by editing attribute files. This matters because Weave 0.3.6 has recorded clean-exit corruption modes that pass parsers, compilers, and tests, so a clean exit and a green suite are never acceptance evidence on their own, and the 0.5.1 pin is not a claim that those modes are fixed.

When Weave is deliberately kept active, per-replay structural checks via git rebase --exec are the default, and driver stderr — including weave: N entities auto-resolved summaries, weave-warning: lines, and weave-event: JSON lines — must be preserved and read. A mandatory semantic post-operation audit then runs independently of the driver's exit code and the structural gates: target-changed but branch-untouched files must be byte-identical to the target, every deletion against the target in a branch-touched file must be explained, and newly repeated multi-line blocks need inspection. Record weave --version and weave-driver --version, and run weave check (or the MCP weave_check tool) when supported, knowing that its working-tree mode verifies merges only and reports NOTHING WAS CHECKED after a rebase; the independent audit stays authoritative.

Failures of any of these checks are andon events: stop, preserve evidence, and do not guess a repair. The rebase skill routes garbled or non-parsing resolutions here. See the detailed skill and behaviour reference.