Preheat the oven to 400 degrees F. Put the potatoes in a large saucepan, cover with cold water by 1 inch and season with salt. Bring to a boil, then reduce the heat and simmer until tender, 20 to 25 minutes.
Meanwhile, heat the olive oil in a large skillet over medium heat. Add the leeks and season with 1/2 teaspoon salt. Cook, stirring, until the leeks are soft but not browned, about 8 minutes. Transfer half of the leeks to a large bowl and set aside.
Add the beef and lamb to the skillet with the remaining leeks. Cook over medium heat, breaking up the meat, until no longer pink, about 6 minutes. Pour off any excess fat from the skillet; season the meat with 1/2 teaspoon salt and a few grinds of pepper.
Stir the carrots, garlic, Worcestershire sauce and thyme into the meat. Clear a space in the middle of the skillet and add the tomato paste. Cook the tomato paste, stirring, until slightly darkened, about 1 minute, then stir into the meat mixture. Pour in the stout and simmer until slightly reduced, about 2 minutes. Add the broth and bring to a simmer.
Cook, stirring, until the carrots are almost tender, about 5 minutes. Stir in the peas; reduce the heat to low and let simmer while you mash the potatoes.
Drain the potatoes and let cool slightly. Transfer to the bowl with the reserved leeks; add the butter, half-and-half and 1/2 teaspoon salt and mash well. Stir in 1/2 cup cheddar.
Spread the meat mixture in a 3-quart baking dish. Dollop the mashed potatoes on top, then spread with the back of a spoon. Sprinkle with the remaining 1/2 cup cheddar. Bake until bubbling around the edges and the topping is browned in spots, about 25 minutes. Let rest 10 minutes before serving.
You can assemble any of these dishes up to 2 hours ahead. Cover and refrigerate, then add about 10 minutes to the baking time.