The other way that this breaks is that the _full test suite_, if it's comprehensive enough to be a strong safety net, is going to be slow enough that blocking your development work becomes a time waste. Particularly if you've got a good code base where making changes rarely breaks the tests you wouldn't run in your more focused development mode,
At some point, you're going to want to offload that full-test-suite. Maybe you do this with feature branches - push your change to a branch, have it test in the background and merge when it passes. Of course, you're no longer doing trunk-based-development. But you've not sacrificed anything in the way of "Continuous Integration" - that not-ready-for-trunk code wouldn't have been pushed to trunk anyway.
Spoiler: the code on your machine wasn't integrated anyway. Moving it off your machine to another machine doesn't make it any less integrated. As long as you close feature branches quickly (e.g. when the tests pass), you're still just as "Continuously Integrated" as people doing trunk-based-development; all you're doing is making the "make the tests pass" bit async.
Yes, it does mean that if your tests _don't_ pass, you end up interrupting the next piece of work you started. So? Worst case is that you need to restart that piece entirely – but that's no worse than if had waited for the tests.