Compare two virtual node trees. Each node: { type, props, children }.
Return list of operations needed to update prev → next:
{ op: 'replace', path } — type changed.{ op: 'props', path } — props changed (any key differs).Path is a dot-joined string of indices, e.g. '0.1' for second child of first.
Sample tests