fix(merge): proper 3-way merge for dependencies - removals win (bd-ndye)

CRITICAL: Fixed dependency resurrection bug that caused removed/orphaned
dependencies to keep coming back after sync.

Root cause: mergeDependencies() was doing a union (additive only) and
completely ignored the base parameter. This meant any dependency present
in either left or right would be included, even if it was intentionally
removed.

Fix: Proper 3-way merge where REMOVALS ARE AUTHORITATIVE:
- If dep was in base and removed by left OR right → stays removed
- If dep wasn't in base and added by left OR right → included
- If dep was in base and both still have it → included

This fixes months of issues with orphaned parent-child relationships
being resurrected during git sync operations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Steve Yegge
2025-12-18 23:20:49 -08:00
parent 45bb38770a
commit 5ad1c80f7e
4 changed files with 130 additions and 32 deletions

View File

@@ -293,6 +293,7 @@ var versionChanges = []VersionChange{
Changes: []string{
"bd graph command shows dependency counts using subgraph formatting (bd-6v2)",
"types.StatusPinned for persistent beads that survive cleanup",
"CRITICAL: Fixed dependency resurrection bug in 3-way merge (bd-ndye) - removals now win",
},
},
{