Heat the oil in a medium sized frying pan over medium heat until the oil just starts to shimmer.
Add the cinnamon bark, green cardamom and black cardamom if using. Let the whole spices cook for about 30 seconds. You should see little bubbles forming around the spices. If you don't, your oil is not hot enough.
Add the onion pieces. Cook until the they are softened, stirring fairly constantly.
Stir in the garlic ginger paste. Gently fry until the garlic ginger paste stops sputtering. This can get a little messy.
Turn your heat down to medium low and add your spice mix. Cook for about 30 seconds. You want to fry your spices in the oil. There are fat soluble compounds in spices. You are making magic happen at this point.
Add the yoghurt. Stir it well. Fry for about 30 seconds. I know frying yoghurt is odd. But it makes a difference. Just trust me. The yoghurt needs to get cooked out. It will be fine.
Add the Indian hotel curry gravy. Stir it really well to get the oil to combine with the curry gravy. You want everything mixed together. Bring to a simmer.
Stir in the cilantro.
Add the chicken thigh pieces in a single layer. Nestle them down into the sauce. Cover and cook about 5 minutes.
Remove the lid, flip the chicken and replace the lid. Continue simmering until the chicken is done. You are shooting for an internal temperature of 160F. It will get to 170F as the curry finishes cooking. Not a bad idea to get an instant read thermometer if you don't have one. Done is not subjective. It's a measurement. You are guessing otherwise. At this point you have a decision to make. If the chicken threw a lot of liquid the sauce might be right. My guess is you'd like it a bit thinner. More like a restaurant sauce. Add a couple tablespoons of chicken stock. Check it again. If it's still too thick, add a bit more stock. I've never added more than a 1/4 cup.
Add the cherry tomatoes, cover, and simmer for another minute or so.
Chicken rogan josh goes great with rice or chapatis - or both if you feel like treating yourself.