Facts speaks Facter’s input/output contract, not Puppet’s runtime behavior

Facts is a fact-discovery library and CLI that implements Facter’s input and output contract — the shapes of facts in and out — but it is not bound to Puppet or to what Puppet does at runtime. The --puppet (-p) flag was the one feature that crossed that line: it appended Puppet’s agent plugin-fact destination (vardir/facts.d, e.g. /opt/puppetlabs/puppet/cache/facts.d) to the external-fact directories, and it warned when Puppet had pluginsync’d Ruby custom facts into vardir/lib/facter. Both re-enact what a running puppet agent arranges on a host, not a Facter-shaped input. We remove --puppet, -p, and --no-puppet entirely; they now fail as unknown options. This builds on ADR-0006 (no Ruby DSL) and ADR-0001 (the CLI process edge is the only compatibility boundary).

The boundary this draws, stated so it is not re-crossed by accident:

Puppet’s agent cache is still reachable like any other directory through the explicit external-fact inputs: --external-dir /opt/puppetlabs/puppet/cache/facts.d (or the platform/user equivalent). A .rb file in any external directory is still skipped with a warning by the general loader (ADR-0006); only the --puppet-specific warning about vardir/lib/facter is gone, because that directory was never loaded as an external dir to begin with. The inert EngineConfig.Puppet field and internal/engine/puppet.go are deleted, so the engine carries no notion of Puppet.

Considered Options