Did you consider a fourth state for warnings? What I'm thinking about here is the case where the puppet module return result can't be interpreted. From the code below, that looks like it's considered a success (but doesn't increment the number of changes), which provides no clue to the user that it wasn't a completely clean operation. It's possible it failed and we just couldn't parse the result to see it failed (though admittedly it's a smaller issue if we make the assumption they use the exit codes correctly). Might not be worth it right now until we start to see what happens when people start to use it, but figured I'd throw it out there.