Solution is:
one must expose tags to be able to be used in groups using 'compose'
groups cannot be nested under compose
Example:
compose:
tags: tags
groups:
tag_Role_monitoring: >
'prometheus' in (tags.get('ansible-tag-role', '') | split(',') | map('trim')) ...
I guess Ill leave off with a rant/comment to the Ansible developer community: why not name it 'expose' instead of 'compose' but more importantly why make tags available to keyed_groups, but not groups by default?!