Yes, if another project references the hidden all-in-one feature, it will be slurped up by aggregation and we are back to square one. If you aren’t able to remove this feature from your project’s repository completely as a post-build step (the ideal solution), I would recommend naming it in a way that discourages its use…
org.eclipse.project.Internal_Root_DoNotReference or some such
> 3. Alternatively, you can create a root feature that includes your
> actual project feature and the Orbit bundles you require. You point
> your build at this feature, but you do not contribute this feature
> to simrel and you do not making it visible in your own categories
> file. For the cleanest result, you’d remove this feature as a post-
> build step, but it wouldn’t hurt anything if it were to remain as
> “hidden” feature in your repository that never gets aggregated or installed.
I have a lot more to say on the general topic being discussed, but thought I'd try to clear up this one point quickly.
If there is something "in your repository" that you name in your b3aggrcon file, then p2 considers anything in there as "fair game" to pull, if it satisfies some constraint it is trying to satisfy.
It may pick something from there rarely, but it has been a "real life" problem over the years, where people mistakenly think that only the features they name are installed from their repository. Whether not it would be a problem depends on many things -- some of which is what other projects do or specify, which you could never know or be in control of.
While some are surprised at this, it is also the way p2 works when a user installs something.