I arrived at my current theory when I saw the message that the agent throws on this PuppetDB issue. This issue presents when the puppet master pulls the facts back from PuppetDB instead of using the facts provided by the node.
In my case, the puppet master is writing the node's facts out to the yaml cache, but then failing to load them back in.
Puppet is 3.7.3 (Puppet Enterprise 3.7.1)