be get/patch FF-weave bails with graf err and leaves the file UNMERGED when the commits aren't indexed — the correct fallback is to INDEX the commits and RETRYWhen a store-backed worktree that is BEHIND trunk is fast-forwarded
(be get '?'), files that diverged on both sides need a 3-way weave. If the
relevant commit DAG is not indexed, the weave drops to
build_tip_weave_tunable's no-history fallback (graf/GET.c:537-548),
which stamps each side's blob with its own tip hashlet so the two sides share
NO baseline birth-ids → WEAVEApply matches nothing → GRAFFAIL
(sniff/GET.c:748), and sniff prints merge failed … (graf err) — leaving wt
content untouched, i.e. the file is left UNMERGED. The only correct fallback
is to index the commits and RETRY the weave — never bail, never silently
return ours. See PATCH, POST, Graf.
be"): FF the BE-004
store-backed worktree ~/todo/BE-004-new (cloned behind trunk) onto
current trunk → be get '?' → merge failed for bro/BRO.c (graf err) and
graf/BLAME.c (graf err) — leaving wt content untouched. Reproducible on
demand from any behind-worktree FF where both sides touched a file.(void)-ignored GRAFIndexFromTips guard (sniff/PATCH.c:1857,
comment: "Without this the merge silently returns ours's bytes") is the
smoking gun — the index step exists but its failure is swallowed.ours.be get '?' operation merges the divergent files
(demonstrated on a live behind-worktree), not "tests green".graf err is a
verb-layer base/target SELECTION failure" is withdrawn — it was asserted
without a live repro. Diagnose from the repro now available, not theory.git merge-file (the frozen SUBS-019 trio, 135584 B,
clean via GRAFMerge3Bytes/GRAFMergeWtFile/GRAFMergeWtFileTunable). So
the engine is correct; the bug is the verb dropping to the un-indexed
fallback instead of indexing + retrying.graf err (regression test, e.g. extend graf/test/MERGEWT01.c).build_tip_weave_tunable / GRAFIndexFromTips); propagate index
failure (drop the (void)), never leave-untouched / return-ours.be get '?' on a real behind-worktree MERGES the divergent files.