There is a LGBM_BoosterUpdateOneIterCustom doing the needed update, but it only takes grads & hessians:

While the python API supports a third argument, the y_hat predictions:

In the code it's just doing the predict over the whole training dataset. We need to do the same thing.