ok I think I've really got this working.
- rich text CRDT (peritext-based)
- movable blocks with split & join, retaining provenance and collaborative editing
- strong cycle prevention both for split/join and block nesting
annnd just for fun I've also implemented multicursor in the demo (cmd+click)