Regarding the block size increase, at least conceptually it seems to me there should be an easy solution. If we look at what works well with bitcoin, for example the block reward halving and difficulty regimes which due to their step function nature both contribute to the stability and predictability of the bitcoin universe while still allowing for the necessary dynamic adjustments. It seems to me there should be a corresponding and equally simple solution for the maximum block size.
I've never quite understood the supposed rationale behind the proposals for a new static maximum of 20 MB or 8 MB or 2 MB other than it would be trivial to implement. Why not come up with an equally simple, predictable dynamic function consistent with what is already proven to work in the bitcoin universe that would both preserve the scarcity of transaction capacity to encourage a fee market but also allow for more transactions when needed.
For example how about something like once every month at month-end, take the 6-month average non-zero transaction fee block size and multiply by 1.5?