I'd use core.internal only in the runtime for now and see where this goes. I don't intend to drag over too much template machinery.

> Since Unqual is identical between them, then either std.traits should import core.internal.traits. or core.internal.traits.Unqual should have a different name than Unqual.

Your sidestepping the underlying issue, we need to fix the problem that private imports/symbols cause collisions in other modules.