✅ Possession noop when performer controls gamigin
| Category | Ability |
| Status | Passing |
| Test | tests/test_abilities_complex.py::TestGamiginPossession::test_possession_noop_when_performer_controls_gamigin |
Gamigin's own controller tries to use Possession — no-op.
Preconditions
- Lane 0: P1's Gamigin, P1's Murmur (same owner)
Action
- Murmur (P1's) performs Possession
result = handler(state, murmur_p, [], {"direction": "right"}, None)
gamigin_after = next(d for d in result.demons if d.unit_id == "031")
Expected Postconditions
- Gamigin lane unchanged (performer == controller of Gamigin).
Assertions
assert gamigin_after.lane == 0, (
f"Same-owner performer → no-op. Gamigin's lane should be unchanged. "
f"Got lane {gamigin_after.lane}."
)