Saved activity Power selection
The original current map-AS sends OnPowerActivityPowerChange(powerID) from its actual selected row. 3AA1840 publishes powerID=Index+1. Registration 468D240 binds this event to 46C6270, which dispatches to the actual Main UI slot 551FFF0+3C8=3A6CDE0.
3A6CDE0 subtracts one, checks that zero-based result against the actual definition count, and places it in the first field of the optional activity struct. 3AB6760 copies that struct unchanged to the original selector interface 552D720+28=3B46030; its constructor 3ACA1A0 installs that vtable at base+70. 3B46030 saves the first field to setting23; original optional scopeMax becomes -2 and disabled becomes -1. 3ACF4A0 restores a nonnegative saved value directly into the original optional first field at188. The saved named selector is therefore actual definition Index, independent of its UI ID or InternalPowerId. The unrelated isPledged comparison is not used to establish this result.
research/galaxy_power_selection_evidence.py verifies six complete paired old/new functions, both actual vtable slots via their paired constructor operands, and fixed source hashes. The old6891 UI callback is3A6CDE0 and currentED5A3A6CD40; the persistence setter is old3B46030/current3B45F90. Output: artifacts/galaxy-query-research/power-selection/original-selector-evidence.json. This is offline source proof; no original setter or game function is invoked.
Production imports resolve a saved index only against exactly one actual current definition. Pending indices keep names and IDs unknown until the current table arrives. The VM then binds that row's actual name/InternalPowerId; explicit selection clears pending. Repeated unchanged options preserve the existing filter instance. The panel explains a pending restore, and headquarters command availability refreshes after binding. Core regressions: selector4/4, settings9/9, including zero, mismatched UI/internal IDs, deferred resolution, duplicate/out-of-range definitions, All/disabled and manual override. This does not close TerritoryType, strategic markers, or live visual acceptance.