I noticed some interesting behavior while running a local test net on my machine. I booted up a network between the default Alice and Bob accounts that are used in all the tutorials, and they connected fine, with both terminals showing that they had found a single other peer. I use a custom chainspec in this network.
Next, I re-entered the same command to start Bob in another terminal, and, although I needed to pass another tmp directory for the chain data, it started fine, and connected. I was surprised, because it seems like the consensus process should not accept a second incarnation of Bob into the aura and grandpa processes.
Is this standard behavior? How do votes work in the consensus process under these conditions? Can it be prevented, if undesired via a governance pallet? I guess if the two incarnations of Bob each proposed a different block it would be a problem, or if their votes counted twice in the consensus process it would be bad too.
How are such issues prevented at the protocol level?