fix(turn): block cross-pointer reorder (BUG-13)
reorderParticipants allowed dragging across current pointer mid-round.
nextTurn walks turnOrderIds forward from pointer, so cross-pointer drag
= ambiguous who-acts-next: upcoming dragged ahead of pointer = skipped
(walk wraps past), acted dragged behind pointer = double-act.
Full fix needs actedThisRound tracking. Pragmatic now: block both
directions during active encounter. Pre-combat: free reorder (no pointer).
reorderParticipants: added pointer check (currentTurn index). If drag
crosses pointer, return null patch (no-op). Same-side reorder allowed.
syncTurnOrder now always mirrors (was started-only — pre-combat reorder
left turnOrderIds stale).
Tests:
- turn.bug13.test.js: cross-pointer blocked (both dirs), same-side allowed,
pre-combat free.
- turn.reorder.test.js: 3 tests updated to pre-combat (cross-pointer now
blocked post-start).
- turn.invariant.test.js: reorder test uses same-side upcoming pair.
214 tests green.