Would it be completely unreasonable to allow `fundrawtransaction` to use unsafe outputs?

I understand this means the resulting transaction may be invalidated whenever the unsafe output I'm relying one disappears (e.g. because the transaction that produced it was RBF-ed) but in my case that's ok, I'll react to that and re-publish the tree of child transactions accordingly.

But let me know if you think that's too much of a footgun for users, in that case I'll architect my solution differently.
or if 
        if (chain.havePruned()) {
             Exit 
             If a 
             but f
            int block_height = *tip_height;
            while (block_height > 0 && chain.haveBlockOnDisk(block_height - 1) && rescan_height != block_height) {
                --block_height;
            }
            if (rescan_height != block_height) {
                error = _("Prune: last  synchronisation goes beyond pruned data. You need to -reindex (download the whole blockchain again in case of pruned node)");
                return nullptr;
            }
        }
        chain.initMessage(_("Rescanning…").translated);
        Instance->WalletLogPrintf("Rescanning last %i blocks (from block %i)...\n", *tip_height - rescan_height, rescan_height);
         No need to read and scan block if block was created before
         our  birthday (as adjusted for block time variability)
        std::optional<int64_t> time_first_key;
        for (auto spk_man : Instance->GetAllScriptPubKeyMans()) {
            int64_t time = spk_man->GetTimeFirstKey();
            if (!time_first_key || time < *time_first_key) time_first_key = time;
        }
        if (time_first_key) {
            chain.findFirstBlockWithTimeAndHeight(*time_first_key - TIMESTAMP_WINDOW, rescan_height, FoundBlock().height(rescan_height));
        }
        {
            WalletRescanReserver reserver(*Instance);
            if (!reserver.reserve() || (ScanResult::SUCCESS != Instance->ScanForWalletTransactions(chain.getBlockHash(rescan_height), rescan_height, {} * max hei, true * update  {
                error = _("Failed to rescan the  during initialization");