Start by either soaking the cashews for 2+ hours or for at least 20 minutes in boiling water.
Marinate the soya chaap. Take the soya chaap off of the sticks and cut into 1-inch pieces. To a mixing bowl, add all the ingredients for the marinade: yogurt, garlic, ginger, lemon juice, garam masala, red chili powder, turmeric, black pepper, and salt. Coat the soya chaap in the marinade. Let the soya chaap marinate for at least 15 minutes, but the longer, the better!
Place the soya chaap on a greased baking sheet or parchment paper-lined baking sheet. Bake the soya chaap at 400 F for 25 minutes.
Prepare the curry: heat 2 tbsp vegan butter in a medium pan over medium heat. Add the whole spices: cinnamon, cloves, and cardamom. Let the spices bloom for a minute or so, until you can sense their aromas.
Add the onions and stir until translucent and slightly golden, so about 4-5 minutes. Add the ginger and garlic. Cook for another 2-3 minutes. Add the tomatoes and a big pinch of salt. Increase heat to medium-high and allow the tomato juices to mostly evaporate, which usually takes 6-8 minutes.
Add the ground spices and combine well for a few minutes. Take the pan off of the heat and let it cool down a little before blending with cashews, watere, and lemon juice.
In the same pan, heat 1 tbsp vegan butter over medium heat. Add kasoori methi and lightly fry it for a minute or so. Add the baked chaap, followed by the gravy. Thin the gravy with water until the texture is where you want it.
Finish with extra crushed kasoori methi and cilantro! Serve with naan or a flatbread of your choice.