As mentioned above, `interfaces` is a local variable that is only set once when the file itself is loaded.  As far as I can tell `interfaces` doesn't get updated over time.

With this information, how does this refactoring handle the situation where an interface is configured by a Puppet agent running as a daemon?  The fact should be loaded once and then each fact value will be flushed for the periodic runs.  However, the setcode block is referencing "stale" data from the outer scope `interfaces` variable, or is it not?

Before we can merge this into Facter we need to make sure that the interfaces fact will correctly pick up interfaces that are added or removed during the life of a Puppet or Facter process.

We recently added an `on_flush` callback which may make this process easier.  It might be helpful to take a look at 00544ca and e4eb583 to see how we're using the `on_flush` callback to refresh the list of solaris zones, which may have been added or removed during a Puppet run.