Skip to content

Commit ca2088e

Browse files
committed
docs(agents): state the corollary that a local merge-tree of an os-regen path is not GitHub mergeability, and name the sound probe (#15871)
AGENTS.md §11 already says the `merge=os-regen` driver is a LOCAL facility. What it never stated is the corollary that costs a seat a round trip: a local `git merge-tree` of a routed path runs the same merge-ort machinery as `git merge`, so it HONOURS the driver, while GitHub runs none — the two answer different questions about the same snapshot. The added bullet names the sound instrument (a throwaway bare clone sharing the object store, where the driver is genuinely absent, which is GitHub's actual condition) and refuses the falsified `-c merge.os-regen.driver=` spelling, whose empty string does not disable the driver but leaves git failing to run it and reporting a conflict for every routed path — including ones that text-merge cleanly. Measurements are on PR #15868, which carries the same text in `scripts/pm/os-regen-merge.sh`'s header. Part of #15815 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
1 parent ef3a138 commit ca2088e

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

AGENTS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -650,6 +650,16 @@ Even inside your own worktree, operate defensively:
650650
(`authorable-surface/`, `json-schema.manifest/`, `api-surface/`) to keep parallel
651651
spec PRs textually disjoint; every gate reads the whole directory as one set, so
652652
ratchet semantics are unchanged (`packages/spec/scripts/lib/sharded-artifacts.ts`).
653+
- **Corollary — a local `merge-tree` is NOT GitHub's mergeability**, and it has already
654+
cost a seat a round trip: a local `git merge-tree` of any `merge=os-regen` path runs
655+
the same merge-ort machinery as `git merge` and therefore honours the custom driver,
656+
while GitHub runs none, so the two answer different questions about the same snapshot.
657+
Probe from a throwaway bare clone that shares the object store and has no driver
658+
registered (`git clone --bare --shared . PROBE.git`, then
659+
`git --git-dir=PROBE.git merge-tree --write-tree --name-only BASE HEAD`), ⛔ never with
660+
`-c merge.os-regen.driver=`, which does not disable the driver but leaves git failing
661+
to run it and reporting a conflict for every routed path, including ones that
662+
text-merge cleanly.
653663
- **Registration is per clone** (`pnpm install``prepare`
654664
`scripts/setup-git-hooks.mjs`); an unregistered clone falls back to git's default
655665
text merge — older behaviour, not breakage.

0 commit comments

Comments
 (0)