It is desirable that Puppet server load and initialize Puppet (including the constant Puppet) w/o requiring Facter, however require-ing "puppet" also requires facter and creates several custom facts.
Going to close this as a dup of PUP-11216, as it's now possible to call:
Puppet.initialize_settings([], true, true, http: ..., facter: facter_impl)
with an alternative facter implementation.