A focused harness for driving drag-and-drop from AppMCP's generic ui_drag. Two shelves
use different drag technologies so we can see which the synthetic drag can drive,
and dropping before/onto/after a pill has distinct meaning (ordering).
Drag a pill from the tray onto a shelf, or reorder within a shelf. Then ask your assistant:
“Drag the Region pill onto the Columns shelf, then put Category before it.”
The assistant uses observe_page to get refs, then ui_drag(ref, toRef, position).
Watch which shelf accepts the drag — that tells us what will work on Tableau.
These elements carry NO AppMCP attributes. Their policy comes entirely from the
observe: { draggables, ignore, protect } selectors in app.js — the
same mechanism Tableau needs (its pills are pointer-DnD, not native draggable).