GRAFMergeWtFile / WEAVEMerge is very slow merging a large file (beagle/BE.cli.c, ~5k lines) during be get. Surfaced updating the JS-027 worktree. Method: Issues.
be get onto trunk 371ad14b weave-merged beagle/BE.cli.c (both sides edited it: SUBS-027b be-head + the JS-025 hook) — "merge of BE.cli.c was veeerey slow" (user, direct observation).GRAFMergeWtFileTunable (graf/GET.c:301) → WEAVEMerge / GRAFMerge3Bytes / WEAVENext (dog/WEAVE). Suspect superlinear token scan or repeated whole-blob rewrites per WEAVENext (the blob is rewritten whole — see dog/WEAVE.h "rewrite the whole blob").dog/WEAVE (WEAVEMerge/WEAVEEmitMerged) + graf/GET.c. Measure before optimizing.5b062e24 (2026-06-21): O(n²)→linear WEAVEMerge Pass-2 remover-union (dog/WEAVE.c) — prefix-sum slots + one scatter pass + compaction via the existing umap, order-preserving so merge output is BYTE-IDENTICAL. dog/test/WEAVE04.c (DWEAVE04test, fails if ratio ≥ 3.0). FUZZ-VALIDATED: DWEAVEfuzz 235k runs × 16 jobs / 10 min, 0 crashes / 0 oracle failures / 0 sanitizer findings (corpus `