How to use "add_host" (or "group_by" and/or "set_facts") to dynamically add new hosts to existing/new groups in the playbook inventory (to running play or play's following it in the same run)?

As suggested by @jimi-c (https://github.com/jimi-c), I post here the follow-up discussion of this ticket: https://github.com/ansible/ansible/issues/6912, which concerns the inability and issues to use add_host or group_by/set_fact to “dynamically add new hosts to playbook inventory and groups for many hosts and not only the first host in the inventory”

I have encountered this problem in my playbook (see the follwing code), where add_host does not see the whole inventory when I try to use it to add new hosts to playbook inventory and groups. Someone posted there an idea to use set_fact and group-by to do this, but I still don’t understand how to achieve the same dynamic behavior where new hosts should be added to groups using set_facts and group-by… Specifically, I would like toi know which facts should I set to achieve the same as with add_host, that in my case is used like this:

Loop over the hosts, not the results of the first host:

with_items: '{{groups['all']}}'

item is now the 'inventory_hostname' and you can use
hostvars[item][.... to access the rest of the data