##### SUMMARY
Since `add_host` and `group_by` actions only modify the runtime inventory, hosts/groups/vars added by them don't survive a `meta: refresh_inventory` call (since that call completely clears the runtime inventory). 

##### ISSUE TYPE
- Feature Idea

##### COMPONENT NAME
InventoryManager

##### ADDITIONAL INFORMATION
After some internal discussion, the general consensus seemed to be that this behavior is an undesirable default. The `add_host` and `group_by` actions should manage a more persistent state independent of the runtime inventory, then apply their changes to the running inventory. When a `meta: refresh_inventory` occurs, the normal dynamic inventory clear/refresh should happen, then reapply the add_host/group_by state. This should probably be the default behavior, but a config switch or a different `meta` action (or an arg to it) to emulate the current behavior could also be created if necessary.

if notified_hosts is None:
            notified_hosts = handler.notified_hosts[:]
        
        failed_hosts = self._filter_notified_failed_hosts(iterator, notified_hosts)
        notified_hosts = self._filter_notified_hosts(notified_hosts)
        notified_hosts += failed_hosts
        if len(notified_hosts) > 0:
            self._tqm.send_callback('v2_playbook_on_handler_task_start', handler)
        bypass_host_loop = False
        try:
            action = plugin_loader.action_loader.get(handler.action, class_only=True, collection_list=handler.collections)
            if getattr(action, 'BYPASS_HOST_LOOP', False):
                bypass_host_loop = True
        except KeyError: