A range select that crosses a tracked directory boundary breaks
because `git rm -r --cached -- dir` removes its descendants from the
index, so a subsequent child-targeted call fails with pathspec errors.
Untracked nodes in a mixed range hit the same problem since they
aren't in the index at all. Filter the selection through
`normalisedSelectedNodes` and only unstage/rm the nodes that are
actually tracked.