code: def _select_phase_left_bound(self, epoch_number):
          
          idx = bisect.bisect_left(self.ladder, epoch_number)
  
          if idx >= len(self.ladder):
              return len(self.ladder) - 1
          elif self.ladder[idx] > epoch_number:
              return idx - 1
          else:
              return idx
docs: Return number of current phase.
          Return index of first phase not done after all up to epoch_number were done.