I would vote to leave things as they are in foreman concerning this.
Puppet treats hosts as 'active' (changes made) when using 'notify' so I think foreman should continue to do so as well.
From 'puppet apply --help':
* --detailed-exitcodes:
Provide transaction information via exit codes. If this is enabled, an exit
code of '2' means there were changes, an exit code of '4' means there were
failures during the transaction, and an exit code of '6' means there were both
changes and failures.
And some code to see what puppet thinks of this:
hostA:~ # cat test.pp
notify{'test':}
hostA:~ # puppet apply --detailed-exitcodes test.pp
notice: test
notice: /Stage[main]//Notify[test]/message: defined 'message' as 'test'
notice: Finished catalog run in 0.26 seconds
hostA:~ # echo $?
2
As you see the exitcode is 2, meaning puppet treats this as if 'there were changes'. Basically the resource was applied to give the message.
And yes, my example isn't using a master/agent setup, but I'm sure if you tested it in that configuration the results would be the same.