286e971bfe
captureRepoDeltaPatch records the delta against `HEAD + WIP`, so the patch's context lines and blob SHAs reference the WIP-modified files. commitPatchToBranchWorktree then tried to apply that patch to a fresh worktree pinned at HEAD, which failed hard whenever the WIP-side file was missing from HEAD's index (untracked WIP files, staged-new WIP files) or when --3way could not resolve an overlap. commitPatchToBranchWorktree now tries plain apply first, then `--3way` (which cleanly subtracts WIP via the shared ODB blob for tracked files), and only when both fail replays baseline WIP into the temp worktree so the delta's context lines up, rewinding WIP-only files afterward so they never leak into the branch commit. Added git.ls.tree helper for the WIP-only-file filter and a set of regression tests covering the untracked, staged-new, and overlap scenarios. Fixes #4136