detachAll method
THE teardown site: every behavior's release, dispatched on exit,
then the session-common resources, being the scroll subscription and
the dragged row's eviction pin. A new behavior joins teardown by one
edit here.
The commit's make-room SNAP is deliberately absent: it must precede the mutation, so the commit script owns it. The pointer channel is controller-owned and nulled by the caller.
Implementation
void detachAll(SessionExit exit) {
autoScroller.detach(exit);
pointerSpace.unbindScroll();
dwell.detach(exit);
makeRoomDriver?.detach(exit);
settler?.detach(exit);
renderPort.unpinNode(draggedKey);
}