Brown the Meat: Season lamb with salt and pepper. In a large heavy-bottomed pot over medium-high heat, sear shanks in 1 Tbsp oil until deep golden on all sides. Remove and set aside.
Build the Broth: In the same pot, add sliced onions; cook until translucent. Stir in ginger-garlic paste and whole spices (cardamom, cinnamon, cloves, star anise), toasting 1–2 minutes. Return meat; add water, bay leaf, ground coriander, and cumin. Bring to a simmer, then cover partially and cook on low for 1½–2 hours until meat is tender. Skim foam periodically.
Prepare the Rice: Bring a separate large pot of water to boil; season lightly. Add drained rice and cook 6–7 minutes until 70% done. Drain in a sieve and set aside, reserving 1½ cups of the meat broth.
Fry the Garnish: In a frying pan, melt 1 Tbsp ghee. Sauté carrots with a pinch of salt until lightly caramelized (4–5 minutes). Remove and repeat with raisins until plump, then with nuts until golden. Combine and keep warm.
Layer & Steam: Remove meat (and bones, if desired) from broth and place at bottom of the pot. Mound rice gently over the meat, drizzle reserved broth evenly, and dot with remaining ghee. Seal pot tightly and steam on lowest heat for 20–25 minutes.
Assemble & Serve: Turn out onto a platter. Spoon the carrot-raisin-nut mixture over the top and sprinkle chopped parsley or cilantro if using.