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.
#include <fees.h>
#include <external_signer_scriptpubkeyman.h>
#include <univalue.h>
#include <algorithm>
#include <assert.h>
#include <optional>
#include <boostalgorithmstringreplace.hpp>
using interfaces::FoundBlock;
const std::map<uint64_t,std::string> WALLET_FLAG_CAVEATS{
    {WALLET_FLAG_AVOID_REUSE,
        "You need to rescan the blockchain in order to correctly mark used "
        "destinations in the past. Until this is done, some destinations may "
        "be considered unused, even if the opposite is the case."
    },
};
static const size_t OUTPUT_GROUP_MAX_ENTRIES = 10;
RecursiveMutex cs_s;
static std::vector<std::shared_ptr<CWallet>> vps GUARDED_BY(cs_s);
static std::list<LoadWalletFn> g_load__fns GUARDED_BY(cs_s);
bool AddWalletSetting(interfaces::Chain& chain, const std::string& _name)
{
    util::SettingsValue setting_value = chain.getRwSetting("");
    if (!setting_value.isArray()) setting_value.setArray();
    for (const util::SettingsValue& value : setting_value.getValues()) {
        if (value.isStr() && value.get_str() == _name) return true;
    }
    setting_value.push_back(_name);
    return chain.updateRwSetting("", setting_value);
}
bool RemoveWalletSetting(interfaces::Chain& chain, const std::string& _name)