    // vipc_client.connected is false only when do_exit is true
    if (vipc_client.connected) {
      const VisionBuf *b = &vipc_client.buffers[0];
      LOGW("connected with buffer size: %d (%d x %d)", b->len, b->width, b->height);
      run_model(model, vipc_client);
    }
  
    model_free(&model);
    LOG("joining calibration thread");
    thread.join();
 
</s> remove   LOG("joining calibration thread");
  thread.join();
 </s> add  </s> remove     transform_lock.lock();
    mat3 model_transform = cur_transform;
    bool valid = live_calib_seen;
    transform_lock.unlock();

 </s> add  </s> remove   // start calibration thread
  std::thread thread = std::thread(calibration_thread, wide_camera);

 </s> add 
    run_model(model, vipc_client, wide_camera);
    // vipc_client.connected is false only when do_exit is true
    if (vipc_client.connected) {
      const VisionBuf *b = &vipc_client.buffers[0];
      LOGW("connected with buffer size: %d (%d x %d)", b->len, b->width, b->height);
    run_model(model, vipc_client, wide_camera);
    }
  
    model_free(&model);
    LOG("joining calibration thread");
    thread.join();
keep keep keep keep replace keep keep keep keep keep
 modeld: update live calibration in main thread (#23235)

* update live calibration in main thread

* static ground_from_medmodel_frame

* more static

* cleanup

* no lambda

* trigger ci 
selfdrive/modeld/modeld.cc