*To increase max block size, global orphan rate must be below 1%.
*To increase max block size, 95% of the blocks in the last difficulty period must be at/very near the current max size.
*Max block size can only increase by a factor of 2 over four years.
If you always increase block size to meet all demand, TX fees will inevitably fall towards 0.
But as i've said, i like the direction of having an automated block adjustment algo if it does not compromise on security and decentralisation of mining.
How about
*To increase max block size by n%, more than 50% of fee paying transactions(must meet a minimum fee threshold to be counted) during the last difficulty window
were not included in the next X blocks. Likewise we reduce the max block size by n%(down to a minimum of 1MB) whenever 100% of all paying transactions
are included in the next X blocks.
Basically it means that we only increase block size if the majority of paying TXs are not being included within X blocks. The minimum fee threshold could be the average of all fees paid in the last difficulty window with a hardcoded floor like it is now(0.0005) to prevent abuse. If the % of fee paying TXs not being included in X blocks is less than 50%, then we do not increase the block size to allow competition for express block inclusion.
Obviously the 50% number could be higher or lower but i chose a middle ground.
50% means Bitcoin will adapt the block size to confirm atleast half of all paying TXs as fast as possible. X should be small enough for express to mean express. But it cannot be too small to allow 1-2 miners to collude and manipulate the block size. Given Satoshi's proof of Bionomial Random walk for double spends, i suggest X be 6 blocks.
n could be a conservative number like 5% to prevent any revenue shock to miners.