The Atlas single-room override was too low-res and too lossy (no kg packs/patrols, only 14 hand-curated bosses). Better to keep kg's 4-floor layout and figure out per-floor edge cases as we go.
dungeon_replacements is left in place as a mechanism but with no entries; we'll use it only when we have a high-resolution alternative map.
kg only ships the post-Cataclysm Scholomance (4 floors split as you ascend the school) but Ascension uses the classic single-floor layout where every wing branches off the central rooms.
Fix: new dungeon_replacements section in ascension_overrides.json. When a tile_key is listed there, build_data skips kg entirely for that dungeon and synthesises a single-floor entry from a manually-supplied map (Atlas-addon Scholomance.blp upscaled to 2048x2048) and AtlasLoot's per-dungeon boss list.
Coords come from AtlasLoot's 0..100 percent space scaled to the new map's pixel space directly. Pin classification: dungeonskull → boss (cls=3), None+name-contains-Rare → rare elite (cls=5), other interactives → cls=2.
kg pinned Lorgus on floor 1 (entrance Pool of Ask'ar) but he actually spawns on floor 2 in Moonshrine Sanctum on Ascension. AtlasLoot's subzone tagging confirms this — Lorgus sits with Twilight Lord Kelris and Aku'mai, not the floor-1 lake bosses.
ascension_overrides.json now also supports relocating an enemy across floors (not just position-changing). build_data.py removes the enemy from its source floor and appends it to the target.
- atlasloot_extras: fit one transform per (kg_dungeon, floor_id) instead of mixing all kg bosses into one fit. Each AL extra is assigned to whichever floor's anchors it's nearest to (in AL coord space). Strat's Stonespine now correctly lands on floor 235 (Undead) instead of being hidden because the mixed-floor fit pushed it off.
- new data/ascension_overrides.json: per-name position/floor patches for places where Ascension diverges from retail. Seeded with Magistrate Barthilas → moved to the southern courtyard (3498, 3300 on Undead Side) per Ascension spawns.
- frontend renders extras only on their assigned floor; previously hard-coded to floor 0.
- new layer-toggle checkboxes (Enemies / Packs / Patrols / Icons) in the toolbar — flip patrols off if mob routes are noise for your route.