On phone so a bit constrained ...
Move away/from with Id is essentially introducing a namespace for temporary
paths unrelated to the tree structure. Therefore you can change notation
and keep only one move operation with three variants:

move(a,b): direct move of node to new path
move(a,tmp(1)): move to temporary slot
move(tmp(1),b): move from temporary slot

N.b. this does not imply a single conflated move API on the code level, it
merely describes the protocol.

Making the edit driver assign temporary slots explicitly is better than
forcing the receiver to second-guess the driver's intent, and also makes
validating the drive easier.

Reply via email to