✅ Insufficient targets no op
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestGremorySwapPositions::test_insufficient_targets_no_op |
PRECONDITIONS:
Action
- Swap Positions with 1 target (requires exactly 2)
Expected Postconditions
- State unchanged
Assertions
assert result is state, "Should return unchanged state with < 2 targets"