Added a simple diagram just for the flow of program logic when we receive a query.
It is a rather high level point of view… and missing lots of “stuff”. Please pardon me.
But broadly speaking, I think we need to be more careful about what each component is, e.g., which packages, what minimal set of functions are exposed, what minimal set of other components they talk to. Otherwise, things can get confusing as we add more features and we might start having import cycles etc.