diff --git a/CLAUDE.md b/CLAUDE.md index 3e749c657..e0b747882 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1324,3 +1324,16 @@ acts.** This section is the fix; the write-up that noticed the problem was not. Same false-zero family as the 08-17 seven-zeros table: the miss is silent, the rc is clean, and the hidden file is exactly the CLI file most sweeps target. A fleet broadcast went out same night; this entry is the boot-loaded copy. +- **ADDENDUM 2026-09-04 (murph) — the NUL sentinel also breaks GNU `diff3`, and worse than the + grep/rg misses above: it doesn't return a false zero, it FABRICATES a false-clean 3-way merge.** + Diagnosing a real conflict on `src/cli/bus.ts` (cortextos#151 vs main), extracted the three blobs + (base/ours/theirs) to plain files and ran `diff3 -m` — exit 0, zero conflict markers, read as "no + overlap, safe to auto-merge." The merged output had silently DROPPED the entire PR side's changes + (`listAgents` import, new `validateAssigneeArg` function, both call sites — verified via direct + byte-level python3 check, not grep, since the wrapper bug covers this file too). `git merge-file` + (git's actual merge algorithm, not GNU diff3) on the same three files correctly produced the real + conflict markers. **Apply: for any 3-way merge/conflict check on a file that might carry this NUL + sentinel (`bus.ts` today, any future NUL-carrying file), use `git merge-file` or `git merge-tree`, + never GNU `diff3` on extracted blobs — a silent false-zero is bad, a tool that hands back a + confident, mergeable-looking, WRONG result is worse, because there is no failed-lookup shape to + notice.**