code: def fill_and_wait_models(bufsize=EXAMPLES_PER_GENERATION,
                           write_dir=None,
                           threads=8,
                           model_window=100,
                           skip_first_rsync=False):
      
      write_dir = write_dir or fsdb.golden_chunk_dir()
      buf = ExampleBuffer(bufsize)
      models = fsdb.get_models()[-model_window:]
      if not skip_first_rsync:
          with timer("Rsync"):
              smart_rsync(models[-1][0] - 6)
      files = tqdm(map(files_for_model, models), total=len(models))
      buf.parallel_fill(list(itertools.chain(*files)), threads=threads)
  
      print("Filled buffer, watching for new games")
      while fsdb.get_latest_model()[0] == models[-1][0]:
          with timer("Rsync"):
              smart_rsync(models[-1][0] - 2)
          new_files = tqdm(map(files_for_model, models[-2:]), total=len(models))
          buf.update(list(itertools.chain(*new_files)))
          time.sleep(60)
      latest = fsdb.get_latest_model()
  
      print("New model!", latest[1], "!=", models[-1][1])
      print(buf)
      buf.flush(os.path.join(write_dir, str(latest[0] + 1) + '.tfrecord.zz'))
docs: Fills a ringbuffer with positions from the most recent games, then
      continually rsync's and updates the buffer until a new model is promoted.
      Once it detects a new model, iit then dumps its contents for training to
      immediately begin on the next model.