Keep code in the "setup" until button press?

You have a bunch of these

    // in case the sensor value is outside the range seen during calibration
    if (LeftValue > 100) {
      digitalWrite (IndicatorL, HIGH);
    }
    if (LeftValue < 100) {
      digitalWrite (IndicatorL, LOW);
    }

I was thinking the 2nd should be < = 100 to cover the condition of 100,
Goforsmoke covers it better with

else // value can only <=100 if  > 100 is not met
{
      digitalWrite (IndicatorL, LOW);
}

No need to make the comparison twice in this case. Make it once and then act on it.

It is possible to see the other conditions here?

  if (digitalRead(IndicatorL) == LOW && digitalRead(IndicatorC) == HIGH && digitalRead(IndicatorR) == LOW){

You have these covered
010 (2)
000 (0)
111 (7)
001 (1)
100 (4)
are 3,5,6 not a concern? 011, 101, 110 Or just not able to happen?