ed7c6ac56d
CI / changes (pull_request) Successful in 3s
CI / unit (pull_request) Successful in 10s
CI / integration (pull_request) Successful in 14s
CI / ui (pull_request) Successful in 51s
CI / gate (pull_request) Successful in 0s
CI / deploy (pull_request) Successful in 1m18s
The account merge predated the recent statistics additions and silently dropped them: - account_stats.moves and hints_used were not summed into the primary (the secondary's row is read, then deleted), so the secondary's lifetime moves and hints were lost. - account_best_move was not handled at all; the secondary is only tombstoned (not deleted), so its per-variant best moves lingered on the dead account and never reached the merged statistics screen. mergeStats now also sums moves + hints_used; a new mergeBestMoves folds the secondary's best moves into the primary keeping the higher-scoring play per variant (the rule the per-game upsert uses), then deletes the secondary's rows. Profile fields were already correct (hint wallet summed, paid_account ORed; no new accounts columns since). Tests: TestAccountMergeCore extended — moves/hints summed, best moves merged (higher score per variant kept), secondary rows cleaned up. Docs: ARCHITECTURE §4.