Good niews !
My implementation was good since the beginning, but I had a terrible and invisible typo in the trajectory generation:
-        next_state[q_idx+1] = 1
+       next_state[q_idx+2] = 1 

Now it works properly, and I obtain nice samples of generated cats after short training (this one after 1900 epochs, ~3 epoch/s):