Sometimes things go wrong when puppet configurations are applied. Most of these failures are due to timing issues that a particular manifest rely on. Timing issues most often encountered during bootstrapping. Usually this is an indication that the manifest needs to be fixed (though there are cases that can't be worked around easily). If a configuration seems to have be half-way applied to your machine you can always force the configuration to run and watch the logging.
When debugging it's helpful to stop the long running Puppet service so that changes will be made to you system only when you trigger them explicitly.
# service puppet stop
Runing Puppet manaully:
# puppetd --test
Runing Puppet manaully with full debug info.
You must stop this command with ^c
# puppetd --debug --trace --no-daemonize