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.
For each COutput, we check if the scriptPubKey is in the map, and if it is, the COutput's CInputCoin is added
     to the last OutputGroup in the vector for the scriptPubKey. When the last OutputGroup has
     OUTPUT_GROUP_MAX_ENTRIES CInputCoins, a new OutputGroup is added to the end of the vector.
    std::map<CScript, std::vector<OutputGroup>> spk_to_groups_map;
    for (const auto& output : outputs) {
         Skip ou
        if (!output.fSpendable) continue;
        size_t ancestors, descendants;
        chain().getTransactionAncestry(output.tx->GetHash(), ancestors, descendants);
        CInputCoin input_coin = output.GetInputCoin();
        CScript spk = input_coin.txout.scriptPubKey;
        std::vector<OutputGroup>& groups = spk_to_groups_map[spk];
        if (groups.size() == 0) {
             No Outp
            groups.emplace_back(effective_feerate, long_term_feerate);
        }
         Get the last OutputGroup in the vector so that we can add the CInputCoin to it
         A pointer is used here so that group can be reassigned later if it is full.
        OutputGroup* group = &groups.back();
         Check if this OutputGroup is full. We limit to OUTPUT_GROUP_MAX_ENTRIES when using -avoidpartialspends
         to avoid surprising users with very high fees.
        if (group->m_outputs.size() >= OUTPUT_GROUP_MAX_ENTRIES) {
             The las
            groups.emplace_back(effective_feerate, long_term_feerate);
            group = &groups.back();
        }
         Add the input_coin to group
        group->Insert(input_coin, output.nDepth, output.tx->IsFromMe(ISMINE_ALL), ancestors, descendants, positive_only);
    }
     Now we go through the entire map and pull out the OutputGroups