pub(super) async fn migrate_account_status(services: &Services) -> ResultExpand description
Reconciles account states a foreign database keeps outside the password column.
Some databases mark deactivation in a column of its own while leaving the hash in place, and spell an account authenticated elsewhere as an empty hash. This server reads both states from the password alone, so until they are adopted a deactivated account reads as active and an externally authenticated one reads as deactivated. Adoption happens once, because local administration writes the same column afterward and a second pass would undo it.