### Is there an existing issue for this?

- [X] I have searched the existing issues

### Current behaviour

crash

### Expected behaviour

no crash

### Steps to reproduce

* Compile 79e8247ddb166f9b980f40249b7372a502402a4d
* Type `migratewallet`

### Relevant log output

```
wallet/scriptpubkeyman.cpp:1915: std::optional<MigrationData> wallet::LegacyScriptPubKeyMan::MigrateToDescriptor(): Assertion `IsMine(desc_spk) != ISMINE_NO' failed.
Aborted (core dumped)
```


### How did you obtain Bitcoin Core

Compiled from source

### What version of Bitcoin Core are you using?

current master

### Operating system and version

Linux

### Machine specifications

_No response_
for (unsigned int i = 0; i < wtx.tx->vout.size(); ++i) {
                stdpair<TxSpendsconst_iterator, TxSpendsconst_iterator> range = mapTxSpends.equal_range(COutPoint(now, i));
                for (TxSpendsconst_iterator iter = range.first; iter != range.second; ++iter) {
                    if (!done.count(iter->second)) {
                        todo.insert(iter->second);
                    }
                }
            }
            if (update_state == TxUpdateNOTIFY_CHANGED) {
                NotifyTransactionChanged(wtx.GetHash(), CT_UPDATED);
            }
            // I
            // a
            MarkInputsDirty(wtx.tx);
        }
    }
}
void CWalSyncTransaction(const CTransactionRef& ptx, const SyncTxState& state, bool update_tx, bool rescanning_old_block)
{
    if (!AddToWalInvolvingMe(ptx, state, update_tx, rescanning_old_block))
        return; // N
    // I
    // a
    // r
    MarkInputsDirty(ptx);
}
void CWaltransactionAddedToMempool(const CTransactionRef& tx) {
    LOCK(cs_wal);
    SyncTransaction(tx, TxStateInMempool{});
    auto it = mapWal.find(tx->GetHash());