Noticed on sky that after creating 1m ranges we have 9m replicas. Chose a random range (1000) and found 17 replicas. Looks like the replicate queue is churning away removing replicas, but how did we get into this situation. Seems like the AllocatorRemove action is preferred over AllocatorNoop, though there is this one oddity:
liveReplicas, deadReplicas := a.storePool.liveAndDeadReplicas(rangeInfo.Desc.RangeID, rangeInfo.Desc.Replicas)
if len(liveReplicas) < quorum {
// Do not take any removal action if we do not have a quorum of live
// replicas.
return AllocatorNoop, 0
}