Cook the rice: Boil water with salt, whole spices (cloves, cardamom, cinnamon, bay leaves, and peppercorns). Add the soaked rice and boil until it is about 70% cooked. Drain and set aside.
Prepare the lamb: Heat ghee or oil in a deep pan. Add sliced onions and fry until golden. Remove half for garnishing. Add ginger-garlic paste, lamb, and cook until browned.
Add spices and tomatoes: Stir in turmeric, red chili powder, and biryani masala. Add tomatoes, yogurt, cilantro, and mint. Cook until the lamb is tender and the masala thickens.
Layer the biryani: In a heavy-bottomed pot, spread a layer of cooked rice. Add a layer of the lamb mixture. Layer the ingredients again, ensuring the top layer is rice..
Add saffron milk: Drizzle saffron-infused milk over the top layer. Garnish with fried onions and a few cilantro leaves.
Cook on low heat: Cover the pot with a tight-fitting lid. Cook on low heat for 20-25 minutes to allow the flavors to meld (this step is called "dum cooking").
Serve: Fluff the rice gently and serve hot with raita or salad. Enjoy your flavorful lamb biryani!