First of all thank you for a better explanation than i could come up with. I do have to miner questions i'm not sure about if i got it right.
1. Regarding step three. Can the node with the lowest consensus.h limit hold back/block the network by not upping the limit while still running?
2. Regarding the bilateral split. Why do the Node and the pool need to intentionally ban the others to become a small network of their own? I thought this happens automatically since they assume they have the longest legit chain.
1. if nodes and pools decide 95% of the network is the metric then it requires 5.01% of the network to hold up block growth with 5% possible orphan heaches. if 75% of the network is the metric . the 25.01% of the network is needed to hold back growth with upto 25% orphan headaches.
what you need to also take into account is nodes might have 75%-95%.. but pools may also have their own safer metric to reduce orphan risks
EG nodes at 75% where consensus.h 4mb and policy at 2.5mb
EG pools at 95% where consensus.h 2.5mb and policy at 1.01mb
for instance. resulting in pools only making blocks 1mb-2.5mb before seeing issues and pools only moving passed 2.5 if 95% of pools agree and 75% of nodes agree..
2. if an orphan game results in bilateral split(it doesnt).. we would be having several altcoins being created a week for the last 8 years just because of orphans
https://blockchain.info/orphaned-blocksorphans KILL OFF opposing blocks. to keep to one chain
to avoid orphaning a block. the nodes need to ban the opposition
1. I assume we could also downscale. If nodes lower their limit for whatever reasons (or new nodes with low limits get added to the network). The pools would adopt and make smaller blocks if the orphan rate would be to high.
2. I thought the difference between an orphan and an invalid block would be that an invalid block doesn't meat the parameters of the consensus. Whereas an orphan is a valid block that is just propagated at the same time with another and it is not sure which one will result in the longer chain. So invalid = fork and orphan =/= fork.
edit: just read your edit and this makes it clear clear for me. Thank you.