RowBlockMove
class RowBlockMove(val blockId: Any?, val movedKeys: List<Any>, val afterKey: Any?, val beforeKey: Any?)
The result of one completed block-drag gesture, expressed in stable row keys so it stays meaningful however the consumer's pipeline reorders or filters the source afterwards.
Anchors are keys of the rendered (possibly filtered) list. beforeKey is deliberately redundant: when afterKey is hidden or gone by the time the consumer applies the move, the second anchor still pins the destination.