> you start creating a complicated network of soft dependencies between those modules. And when you have everything in a single repository, it's hard NOT to do that.
That is what the visibility [1] in Bazel solves. You can't import other people's code unless they say you can by making their code visible to yours.