# Issue 18: maintenance cast selection The benchmark controller scores a generic candidate list alongside the shared rotation. A maintained aura rejected by the shared selector must also be removed from that fallback list, or the next benchmark decision can cast it again. Current, unexpired auras are passed to the selector with their actual target and aura ID. The selector suppresses the same applied aura only on the target the candidate would use. An aura on another actor does not block the cast, and a different aura in the same exclusive group remains eligible to replace it. Expired and dispelled auras are absent from the active snapshot. Periodic effects retain their source, target, and remaining-duration checks. An attack or heal that also applies an aura remains eligible for its primary effect. Focused regressions cover Protection Paladin L60 Greater Blessing of Sanctuary, RoM Scout L30 Detection, target-scoped aura selection, and exclusive-group replacement. Run them with: ```sh ./node_modules/.bin/vitest run src/game/benchmark/benchmarkController.maintenance.test.ts src/game/combatRotation.test.ts --reporter=dot ```