In step 2 and 3 in the description of the remove mutation in DOMCore , the spec states that:
"For each range whose start/end node is a descendant of _parent_, set its start/end to (parent, index)."
That doesn't seem to be what browsers do.
What browsers do seems to be more like:
"For each range whose start/end node is a descendant of _child_, set its start/end to (parent, index)."
Which makes more sense, since child is being removed here and boundary points under child will be gone after the mutation, and so setting them to an offset of the parent seems appropriate.
Thanks! I've fixed it: