Puppet Version: 4.10.5, 5.5.1, 5.5.8, 6.1.0
OS Name/Version: CentOS 7.6.1810, Ubuntu 18.04, Sabayon 19.01
When creating an instance of a defined type and then modifying it with plusignment at a later point, the first plusignment will overwrite the variable completely if it's using its default value at the time.
Plusignment respects the current value - even if it is the default one
Plusignment ignores any default value, replacing it entirely on the first run.
Example manifests that show this problem have been attached, and the issue is demonstrated easily by attempting to apply them;