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.
LOCK(pwallet->cs_wallet);
    std::string error_msg;
    CTxDestination dest = DecodeDestination(request.params[0].get_str(), error_msg);
    
    if (!IsValidDestination(dest)) {
        
        if (error_msg.empty()) error_msg = "Invalid address";
        throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, error_msg);
    }
    UniValue ret(UniValue::VOBJ);
    std::string currentAddress = EncodeDestination(dest);
    ret.pushKV("address", currentAddress);
    CScript scriptPubKey = GetScriptForDestination(dest);
    ret.pushKV("scriptPubKey", HexStr(scriptPubKey));
    std::unique_ptr<SigningProvider> provider = pwallet->GetSolvingProvider(scriptPubKey);
    isminetype mine = pwallet->IsMine(dest);
    ret.pushKV("ismine", bool(mine & ISMINE_SPENDABLE));
    bool solvable = provider && IsSolvable(*provider, scriptPubKey);
    ret.pushKV("solvable", solvable);
    if (solvable) {
       ret.pushKV("desc", InferDescriptor(scriptPubKey, *provider)->ToString());
    }
    DescriptorScriptPubKeyMan* desc_spk_man = dynamic_cast<DescriptorScriptPubKeyMan*>(pwallet->GetScriptPubKeyMan(scriptPubKey));
    if (desc_spk_man) {
        std::string desc_str;
        if (desc_spk_man->GetDescriptorString(desc_str, false)) {
            ret.pushKV("parent_desc", desc_str);
        }
    }
    ret.pushKV("iswatchonly", bool(mine & ISMINE_WATCH_ONLY));