Hi,
thanks for reading :-)
Traditionally, you had to invoke `facter -p` to receive Puppet's custom
fact from the facter CLI. When we penned the book, PL had just removed
that option in favor of `puppet facts`.
Shortly after, it became clear that the latter does not quite cover all
bases, and `facter -p` was brought back. Oops! Bottom line, unless
you're quite unlucky, you can use either `puppet facts` or the more
convenient `facter -p`.
As for the diagram: Facter in Puppet's context is not *quite* the same
as the CLI, yes. Puppet loads Facter as a library and uses its API
directly. Invoking `facter` from the shell uses the same fact code, but
without the Puppet context.
In other words, Facter *can* stand on its own, but with Puppet, you
mostly call it *through* Puppet. (Or pass the -p flag, so that Facter
loads Puppet's facts vice versa.)
HTH,
Felix