Module 3 retraining projects a new wallet_id/signature via
loadCompletedSource(), but ensureWallet() only ever validated the
existing digital_wallet row against it and threw a conflict when the
stale row (from before retraining) didn't match. If that stale wallet
was never actually used downstream (zero balance/frozen amount, no
exchange/payment/ledger history), retire it and its dependent
certificate/contract/binding rows so the fresh module 3 result can be
projected instead of surfacing '共享钱包与模块三最终结果不一致'.
Wallets that were actually used still correctly conflict.