The binary and identity are “facts”; no facter alias

The project’s user-visible identity becomes facts everywhere: the shipped binary (cmd/facts, make build./facts, make install installs facts), release artifacts (facts-<version>-<os>-<arch>), help text, the man page (man/man8/facts.8), and the diagnostics program token (WARN Facts -, ERROR Facts::OptionsValidator -, Facts failed to read config file … — a token swap only; every stderr message keeps its Ruby-compatible structure and text otherwise). No facter alias or symlink is shipped. This supersedes ADR-0004, which kept the binary named facter for drop-in script compatibility: since then ADR-0006 (no Ruby DSL) and ADR-0007 (no legacy facts) deliberately narrowed Ruby compatibility, so a binary that still answers to the upstream product’s name misrepresents what it ships. The tree carries no facter-named Go packages of our own either — internal/facter becomes internal/engine; references to Ruby Facter as the external system we interoperate with keep the Facter name.

The operator input surface goes native-first with the facter-named reads kept as the compat tier, native wins when both are present:

Fact-name parity is untouched: facterversion and every other fact name are output contract. --puppet keeps its name (it is named after Puppet, the external system), facter.conf semantics and the parity wording about Ruby Facter (“accepted for Facter compatibility”, the parity ledger, the migration guide) stay as they are — those name the system we interoperate with, not us.

Considered Options