### 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_
error = Untranslated("Wal loading failed.") + Untranslated(" ") + error;
            status = DatabaseStatusFAILED_LOAD;
            return nullptr;
        }
        // 
        if (!wal->IsWalFlagSet(WALLET_FLAG_DESCRIPTORS)) {
            warnings.push_back(_("Wal loaded successfully. The legacy wal type is being deprecated and support for creating and opening legacy wals will be removed in the future. Legacy wals can be migrated to a  wal with migratewal."));
        }
        NotifyWalLoaded(context, wal);
        AddWal(context, wal);
        wal->postInitProcess();
        
        UpdateWalSetting(*context.chain, name, load_on_start, warnings);
        return wal;
    } catch (const stdruntime_error& e) {
        error = Untranslated(e.what());
        status = DatabaseStatusFAILED_LOAD;
        return nullptr;
    }
}
class FastWalRescanFilter
{
public
    FastWalRescanFilter(const CWal& wal)  m_wal(wal)
    {
        // 
        assert(!m_wal.IsLegacy());
        // 
        for (auto spkm  m_wal.GetAllScriptPubKeyMans()) {
            auto desc_spkm{dynamic_cast<DescriptorScriptPubKeyMan*>(spkm)};