Preheat the oven to 190 degrees C. Place olive oil and butter in casserole dish over medium heat. Stir in onion and minced lamb; brown the mince, breaking it up into small crumbles as it cooks, about 10 minutes.
Stir in flour until incorporated then mix in salt, black pepper, rosemary, paprika, cinnamon, tomato sauce and garlic; cook and stir until garlic is fragrant, 2 to 3 minutes. Stir in water then scrape up any brown bits from the bottom of the casserole dish. Reduce heat to medium-low then bring mixture to a simmer; cook and stir until thick, about 5-6 minutes.
Remove lamb mixture from heat and stir in veges until combined. Spread lamb mixture into the bottom of a rectangle baking dish then set aside. Place potatoes into a large saucepan of salted water. Bring to a boil, reduce heat to medium then cook until tender, about 15 minutes. Drain well then return potatoes to saucepan.
Mash butter, cayenne pepper, cream cheese and cheese into the potatoes. Mash until combined and potatoes are smooth. Season to taste with salt and black pepper.
Whisk together egg yolk and milk in a small bowl; stir into the mashed potato mixture. Top the lamb mixture in the baking dish with the mashed potatoes then spread evenly to cover. Bake in the preheated oven until the top is golden brown and sauce is bubbling up around the edges, 25 to 30 minutes.