Currently blocks can be proposed almost arbitrarily through the BlockAPI createBlock endpoint. There are some restrictions; for example, If no new deploys have been sent to the validator, createBlock will return a "No New Deploys" error.
This ticket is to create a new restriction such that a validator may not propose a new block until it has received a set S of blocks such that
the blocks in S were not in the validator’s view of the dag when it last proposed, and
the stake weights of the validators proposing at least one block in S sum up to more than 1/3 of the total stake.
If these conditions are not met, the propose must fail with "Must wait for more blocks from other validators."
Implementing these restrictions on the BlockAPI endpoint should be one ticket. Implementing verification that any particular block does not violate these restrictions should be a different ticket; it should allow a slashing of stake anywhere from 0 (ignore that the validator is misbehaving) to infinity (burn that validator’s stake).