When called as env ANSIBLE_GATHERING=explicit ansible-playbook -t has-roles --skip-tags always $playbookname, the mysql_mariadb_common role is ran twice (once before each of the depending roles).
I have a few always-tagged tasks (the one with the asserts (see above), which needs facts gathering for some hosts, and one that checks the clocktime of the controlled systems against the controlling node, etc.), and I want to skip these when I do a local-only thing like figuring out which hosts have which roles (this info gets collected in a dump file that gets committed as documentation), as this can run without needing to contact the targets (not all targets are even up normally).
Internally we flag a role_complete task with always so skipping that makes the ‘role not finished’ so it does not count for de duplication. Please open a bug report on github: Issues · ansible/ansible · GitHub