We have a strange pattern: only member identities are allowed to be validators, and they are identified by their accountid which can change.
There are too many layers:
pallet identity
pallet membership (sorry)
pallet smith-members
pallet authority-members
pallet session
I think we should at least merge smith-members and authority-members which are both adapters for pallet session.
Authority-members already provides an interface for pallet session with pallet_session::Call::<T>::set_keys and pallet_session::SessionManager implementation (that uses the results coming from go_online and go_offline).
Two options here:
use identity index as validator id
keep account id as validator id but update it on change_owner_key (implementation already available) so it still has a meaning
In both case, the Members storage item does not need to map to somthing and can simply be a set (a map to ()).
Marking this as #bug because it's unspecified behavior. Not sure however in which scenario it could be problematic.