is the current (default) layout method. So all runs having characters (including spaces) and children that have display:inline | inline-block will be replaced in line boxes preserving spaces between them (consecutive spaces are collapsed into one but still they will be there).
But suddenly all children that have display:block will be a) replaced on new row each and b) with spaces between them ignored.
Such a dichotomy is the source of weird hacks, like advices to remove spaces between blocks at all, etc.
Yes, it is my understanding that one of the major, inviolable design goals in this is not to break any old behaviour, or any such (yes, totally distasteful) "hacks" dependent on it. Now that particular old behaviour is "isolated" under the `display-inside: flow` formatting context, which has to remain the default.
It's not just the reframing into `display-inside` (how to lay out children) and `display-outside` (how to participate in parent) which addresses your problem -- that just provides a new way to specify the same behaviour as before. Split into 2 orthogonal axes, cleanly leaving room for new behaviour to exist in combination with old behaviour.
But, rather, it's that plus the specific provision of `display-inside: flex`, within this new framing, which addresses your problem.
If you stick with `display-inside: flow` in your examples of things that are problems, of course nothing is going to change, because that specifically specifies "behave like you always used to".
I'm honestly not sure I understand your complaint. I'm definitely open to the possibility that this is an internally-inconsistent or short-sighted solution, but I'm not seeing it here.
But suddenly all children that have display:block will be a) replaced on new row each and b) with spaces between them ignored.
Such a dichotomy is the source of weird hacks, like advices to remove spaces between blocks at all, etc.