The problem I needed to solve
Overlapping Joker cards can change visual order after movement. Index-based selection could preview one card and transfer another.
Implementation in this snapshot
JokerSceneRunner receives selection by InstanceId. The first tap previews, and another tap on the same card confirms; tapping another card changes preview rather than acting as a timed double-click detector.
The design decision and its cost
Only the donor hand becomes selectable, and all hands close input before transfer. JokerCardView’s raycast filter restricts touch to the exposed portion of each card.
Current boundaries
Correct vertical-hand selection depends on orientation and exposed fraction. Stable identity does not automatically solve every scene Raycast target or overlap issue.
Review scenarios and contract meaning
The error scenario needs no complex timing: a player touches the third card, the hand reorders, and the third position now belongs to another card. Index-based confirmation can transfer a different card from the preview. InstanceId addresses the card instance and reduces dependence on position. Two taps in this contract mean selecting and confirming that same instance; they are not a timed double-click detector. Touching another instance changes the preview and leaves the player an opportunity to choose.
The input layer must preserve that promise too. Only the donor hand is selectable, and input closes before transfer so an in-progress move cannot accept another choice. The raycast filter considers the exposed card portion because the whole overlapping rectangle should not become an equivalent touch target. This needs checking against orientation and exposed fraction; vertical and horizontal hands can feel different. Selecting after reordering, touching the border between cards and rapid input during transfer help distinguish identity issues from input geometry.
Preview is a small interface promise and the earlier preview should clear when choice changes. Two highlighted cards can make confirmation ambiguous even with correct identifiers. I raise this as a presentation review concern rather than a completed test. Stable identity matters, but understandable selection also needs the preview to stay synchronized with that instance.
What this stage taught me
For me, a tap should promise exactly the card that moves. Stable identity and preview feedback address one problem together: players understand their choice and the model receives that same choice.




