Help with manually constructing ordered vectors

This is somewhat related to this post (How to manually code unit simplexes in Stan? - #9 by WardBrian) I did about manually creating unit simplexes for ragged array.

Basically, I need a ragged array of ordered vectors and the program needs to be general. The only way to achieve this using Stan’s ordered command is by manually constructing N lots of ordered vectors, but this won’t be general. Therefore I need to code them manually as I have done below.

I have done this using the jacobian adjustment from the manual page here: 10.6 Ordered Vector | Stan Reference Manual), which as far as I understand is what happens under the hood when an ordered vector is declared:


parameters {
               matrix[T, max(Thr)] log_diffs;
               vector[T] C_1;
}

transformed parameters {
  matrix[T, max(Thr)] C_vec; 

            for (t in 1:T) {
                C_vec[t,1] = C_1[t];
              for (k in 2:Thr[t]) {
                C_vec[t,k] = C_vec[t,k-1] + exp(log_diffs[t,k]);
              }
            }
       
}
model { 
            for (t in 1:T) {
               to_vector(C_vec[c,t,1:Thr[t]]) ~ induced_dirichlet(rep_vector(1, Thr[t]+1), 0); 
                target +=  sum(log_diffs[c,t,1:Thr[t]]); // jacobian adjustment 
            }
       
}

However, this samples * very * badly compared to manually creating the ordered vectors using the ordered command (otherwise the code is the same - also using the induced_dirichlet prior on the cutpoints). What have I done wrong?