Transmission #039: Open loot box → catalog → inventory (Step 6)
Step 6: HelerionGameData builds _lootBoxCatalogPool from all loaded /api/items rows and exposes TryRollRandomLootBoxItem. ProgressionOrchestrator.TryOpenLootBox rolls one item, CharacterInventory.AddItem, HelerionInventoryBridge.NotifyItemAdded, scroll hook to MagicRuneCoordinator when applicable, then removes the box; failures Debug.LogError and leave the box. InventoryPanelUI Boxes rows now include an Open button that refreshes boxes and the main grid. Edit Mode test asserts null inventory does not consume a box. Implementation plan Step 6 is checked off.