The cubed tubers add a nice firm texture to the stew.
Heat 2 tablespoons oil in a large, heavy pot over medium-high heat. Season the lamb with salt and black pepper; brown the meat (in batches, if necessary) on all sides, about 8 minutes. Transfer to a bowl.
Cook the artichokes in remaining tablespoon oil in same pot over medium-high heat, stirring occasionally, until well browned on all sides, about 7 minutes. Using a slotted spoon, transfer artichokes to a separate bowl.
Add onion, garlic, and ginger to remaining oil in pot; saute over medium-high heat, stirring occasionally, until onion is translucent, about 4 minutes. Add cinnamon, cloves, cardamom, and red-pepper flakes; cook, stirring constantly, 2 minutes.
Stir in tomatoes and juice, stock, saffron, and 1 teaspoon salt. Using the side of a wooden spoon, break up tomatoes. Add reserved lamb; bring mixture to a boil. Reduce heat to low; cover, and simmer until meat is tender, about 1 hour.
Return reserved artichokes to pot. Continue to simmer until artichokes are tender, about 25 minutes; add caperberries during final 5 minutes of cooking. Season with salt and black pepper; stir in cilantro. Discard cinnamon, cloves, and cardamom before serving.