Variable namespaces

I have looked in the Help and online for an explanation of this, but I am still a bit confused about variables.

What is the scope of a variable namespace?

When I use the Include Project action, it seems that the variable namespace entends past Project variables and includes User variables. The help states that project variables of the included project are loaded at the time it is executed. Should this include User variables?

By default, the Include Project action has the Share Host Variables Namespace option selected. Typically, I like to have this cleared - so that I can set Project variables in the included project. The side-effect, though, seems to be a resetting of the User variables for the included project - back to design-time default values. In a simple case I have a project with a message box showing the value of a User variable (which was previously set to a non-default value), then I include a project that starts with a similar message box - which now shows the default value.

I'm trying to understand the scope of these variables because I want a situation where the User variables are shared (global) for all projects that are included and run through a single main project. These would be global to my whole build solution. A change to any User variable would be persisted throughout the build and would affect any included project that also uses that User variable. At the same time, Project variables would act as local variables for the project itself (which could be initialized by the calling project). These variables would not need to be shared with any other project in the build solution.