Split the civic in two, different internal names with the same localisation texts so on the front end you don't see it's one or the other.
Code:
civic_1 = {
potential = { ethics = { NOT = { value = ethic_hive_mind } } }
possible = {
authority = {
value = auth_dictatorial
}
}
}
civic_2 = {
potential = { ethics = { NOT = { value = ethic_hive_mind } } }
possible = {
ethics = {
OR = {
text = civic_tooltip_militarist
value = ethic_militarist
value = ethic_fanatic_militarist
}
}
}
}