Cause: This bug was caused by a bug in the 'openais-only' detection code inside cman. If a node because quorate on its own, say because two_node=1 was set or a quorum disk was present then other services are allowed to start. This set the "Dirty" flag in CMAN to indicate that it has state that cannot be reproduced with a full restart. The check for rejecting node joins only checked for the remote node not having state.
Consequence: If another node then joined the cluster, even if it didn't have any state it would be rejected. This means that the normal configuration for a 2 node cluster didn't work because one node is supposed to be quorate at all times, it would not let the second node join the cluster.
Fix: The 'dirty' flag check now checks both the local and remote states of the nodes. So that the nodes can join the cluster if one of them does not have state.
Result: Two node clusters now work correctly.