The puppet documentation warns against mixing resource-like and include-like invocations of the same class docs here. I believe it is because this introduces a dependency on evaluation order, which can lead to extremely pernicious bugs.
In manifests/master/install.pp (and a lot of other places) we include ::puppet
in manifests/profile/agent.pp we use resource-like declaration of ::puppet
I'm thinking this might be resolved by forcing profile/agent.pp to be evaluated before any other class that includes ::puppet, but that doesn't feel architecturally sound.