You raised a good question, and this topic is a bit more complicated than it seems.
The first thing you need to understand is that most pools use a Branch n bound (bnb), knapsack, and Single Random Draw (SRD) algorithms to fill blocks with transactions, all of which fall under one term, which is "Coin selection." Now, obviously, this coin selection faces the unsolvable knapsack problem. However, the default behavior is "greedy highest-fee-rate packages"; the end goal is to get the most total fees available even if that means ditching the highest-paying transactions.
In your example the protocol would ditch the 1.99 sat in favor of the two 1.98 sat transactions.
However, there is another piece of information that you need to know: the default core settings that deal with fee rate play a massive role in the propagation and inclusion of transactions. There are two of them: minrelaytxfee and blockmintxfee. The former sets the minimum fee for transactions to be accepted into its mempool and to relay them while the latter sets the minimum for transactions that it would pass to getblocktemplate.
It's safe to assume that most pools had their settings to the default, so not only were they not including transactions, they are not "seeing" them in the first place. Obviously, most 'greedy' pools started to relax that limit and based on my observation, here is the current status as of now
Pools that dropped the limits:Antpool
Foundry
spiderPool
F2pool
Luxor
Secpool
MiningSquared
Still running the default:SBI
Innopolis Tech
ViaBTC
Mara pool
If the question is, Should pools stick to the default 1 sat policy or not?, then that would require a whole different topic and endless discussion, just like the ordinals debate that we have been having forever.
Interesting, I counted only two large pools that do the same viabtc and mara, a bit surprised that building a larger block could mean you lose the race as this seems to be the issue as far as I can understand.
No, not that; it's not building larger blocks that makes you lose the race. it's actually being out of sync. in compact block relay, you are always better off with having all the transactions stored in your mempool so that once you receive a new block, you can immediately verify it and start building the next block on top of it. if the block contains transactions that you don't already know about, you will need to request that from your connected peers. that could take a few extra seconds, which you could otherwise avoid simply by storing those transactions in your mempool even with the intention of never wanting to include them in your own block template
the problem is how to figure out which is better for a pool to make money
There is no "problem in regards to profit," as far as I can see it. pools that still have their blockmintxfee set to 1 sat are losing money to pools that lowered that. when you leave half a block empty, you simply are losing money; however, the entire sum of those tiny transactions is very small, and is very freaking damaging to
BTC as it increases the UTXO set at virtually no cost. having a large UTXO means full nodes need to store more data, use more RAM, and have slower validation of new transactions and blocks.
The UTXO set problem is real, and once a UTXO is created, it will always be there until spent, giving spammers a cheap path to spam could result in catastrophic damage.