Repository navigation
Allow explicit retirement of superseded legacy identities while preserving the canonical migration version and history. The status command prints the exact legacy keys and adoption command. Expected operational failures have a dedicated exception; unexpected PHP errors stop bulk migration and retain their trace.
Use a shared database migration lock across plugins and table prefixes, check session ownership before and after execution, expose lock timeouts, and reject keys longer than the 191-byte database column.
Validation: full QA, 79 tests / 514 assertions; real MariaDB 11.8 and MySQL 8.4, 9 tests / 98 assertions each, including connection replacement and contention. No skips. Connection loss during the database client's internal SQL replay is explicitly reported as requiring reconciliation.