getBossIdentifier
Creates a unique boss identifier from an InstancedBossEntity.
For phase bosses, switchPhase mutates both customBossesConfigFields and spawnLocation as the fight progresses (see PhaseBossEntity.java:66, 71, 81). The handler below runs at LOW priority after the boss dies, by which point the live config + spawn refer to the LAST phase, not the canonical phase-1 identity the dungeon config knows the boss by. Using the live values leaks the identifier to a phase-N key (e.g. "phase3_filename:x,y,z") that nothing else reads, so the lockout effectively disappears.
DungeonKillTargetObjective.DungeonKillTargetObjectiveListener already canonicalises this way (DungeonKillTargetObjective.java:77-79). Doing the same here keeps the identifier stable across phase switches.