Broke out to a separate thread.
At core, the reason why this method *might* work is that it's essentially just CPFP but we can guarantee that the link we're examining is always exactly one hop away, so we get rid of most of the CPFP graph traversal issues.
Your description largely matches my thinking for how something like this could work (pay for neighbor). The issue is that the extant CPFP logic is somewhat brittle and doesn't work as expected (Child not Children, which is problematic for multiple PFN's).
> PFN transaction would still be valid if some of 'ghost parents' are
already confirmed, so the miners could have more fees than strictly
necessary. But this is the same as with CPFP.
This is problematic and can't be done as it requires a new index of all past txns for consensus.
My thinking is that a Fee Bump transaction can name a list of TXIDs (Or one TXID which implies all ancestors of) that it wishes to be included in a block with. It must be included in that block. A Fee Bump transaction may have no unconfirmed ancestors nor any children. Potentially, it also may not be RBF'd. You treat the Fee Bump Transactions as the lowest descendant of whatever it targets and then set it's feerate/total fee based on the package that would have to co-confirm for it to be worth mining. This makes it sort like normal transactions for inclusion. You can require some minimums for mempool inclusion at all.
If it's target is confirmed or replaced, it should drop from the mempool.
Transactions in the mempool may set a flag that opts out of CPFP for descendants/blocks any descendants. Channel protocols should set this bit to prevent pinning, and then use the Fee Bump to add fees to whatever txns need to go through. If done right you can also layer a coinswap protocol with the fee-bumping txns change so that you are getting a privacy benefit at the same time.
BTW the annex *could* be used for this purpose, but it would also be acceptable to have it be in some kind of anyone can spend output. Then it would just be a anyone-can-spend tx with OP_CHECK_TXID_IN_BLOCK (or OP_CHECK_UTXO_SPENT_IN_BLOCK), and a miner could claim all such outputs at the end of the block. This is worse in terms of on-chain overheads, but nice in that it's the minimal semantic change & introduces some general purpose functionality.
But my thoughts are still pretty loose at the moment around it. I suspect that to make fee bumping work nicely would require removing CPFP entirely, but I don't know that to be the case concretely.