I can’t see a way to do this other than via adhoc on cli… can I gather minimal facts within a playbook?
You can use gather_subset on play[1].
Or set gather_facts to no/false on the play and use the setup module[2] instead.
[1] https://docs.ansible.com/ansible/latest/reference_appendices/playbooks_keywords.html#play
[2] https://docs.ansible.com/ansible/latest/modules/setup_module.html