A lot of divergent transitions but the estimates still closely match my true generating parameters?

I am running this model and it seems that i always receive divergent transitions. Not just a few but seemingly all (about 2x my iterations). However, the parameter estimates are quite accurate and are pretty close to the true generating parameters. Is it safe to ignore this?

functions {

    real log_Z_com_poisson_approx(real lambda, real nu) {
      
      real log_mu = log(lambda^(1/nu));
      real nu_mu = nu * exp(log_mu);
      real nu2 = nu^2;
      // first 4 terms of the residual series
      real log_sum_resid = log1p(
        nu_mu^(-1) * (nu2 - 1) / 24 +
        nu_mu^(-2) * (nu2 - 1) / 1152 * (nu2 + 23) +
        nu_mu^(-3) * (nu2 - 1) / 414720 * (5 * nu2^2 - 298 * nu2 + 11237)
      );
      return nu_mu + log_sum_resid  -
        ((log(2 * pi()) + log_mu) * (nu - 1) / 2 + log(nu) / 2);
    }

    real compute_log_z(real lambda, real nu, real log_error) {
   
      real z = negative_infinity();
      real z_last = 0;
      real j = 0;

      while ((abs(z - z_last) > log_error) && j < 300) {
        z_last = z;
        z = log_sum_exp(z, j * log(lambda) - nu * lgamma(j+1));
        j = j + 1;
        if (j  > 298) {
          return log_Z_com_poisson_approx(lambda, nu);
        }
      }
      //print(j);
      return(z);
    }

}
data {
  int<lower=1> I;  // number of observations
  int<lower=1> J;  // number of items
  int<lower=1> N;  // total number of counts
  int<lower=0> Y[N];  // observed counts
  int<lower=1, upper=I> person_id[N]; // person id for each observation
  int<lower=1, upper=J> item_id[N]; // item id for each observation
}
parameters {
  vector[I] ability;
  vector[J] difficulty;
  vector<lower=0>[J] nu;
}
transformed parameters {
  real log_error = .001;
}
model {
  // Priors
  nu ~ lognormal(0, .25);
  difficulty ~ normal(0,1);
  ability ~ normal(0, 1);

  // Likelihood
  for (n in 1:N) {
    real lambda = exp(nu[item_id[n]] * (ability[person_id[n]] + difficulty[item_id[n]]));
    target += Y[n] * log(lambda) - nu[item_id[n]] * lgamma(Y[n]+1) - compute_log_z(lambda, nu[item_id[n]], log_error);
  }
}

No this is not safe to ignore it. You may verify your code. Increase the iterations in your loop.
Change adaption rate to a high value 0.99. Chances are low, to be successful.
I’d look for an alternative distribution how does fit your needs. Do you really need both
underdispersion and overdispersion? Or can you live with one or the other?
I recently discovered a lot of work has been done recently in the research of new poisson-mixture
distributions.

You might find this thread useful: