✅ Get legal fuse targets
| Category | Interaction |
| Status | Passing |
| Test | tests/test_fusion.py::test_get_legal_fuse_targets |
P1 has 3 demons in lane 0 — one familiar excluded, one unfused included.
Preconditions
-
P1 owns Murmur (#002, is_fused=False) in lane 0 — candidate TOP
-
P1 owns Duban (#001, is_fused=False) in lane 0 — valid bottom target
-
P1 owns Sabnock (#003, is_familiar=True) in lane 0 — EXCLUDED (familiar)
-
All on field
Action
- get_legal_fuse_targets(state, murmur)
Expected Postconditions
-
Returns exactly [duban] — only the non-familiar, same-lane, same-owner demon
-
Sabnock excluded because is_familiar=True
-
Murmur excluded because it is the top card itself
Assertions
assert valid_on_field.instance_id in target_ids
assert familiar_on_field.instance_id not in target_ids
assert len(targets) == 1