Whisk the flour and milk together in a saucepan until smooth. Cook over medium low heat, stirring constantly, until thick and glossy. Transfer to a bowl and let it cool completely.
First, combine the lukewarm milk, sugar and yeast and leave until slightly foamy. Add the egg and cooled tangzhong, then mix in the flour, salt and cardamom. Knead until a soft dough forms, then gradually work in the softened butter. Continue kneading until smooth, elastic and slightly tacky.
Transfer the dough to a lightly greased bowl, cover and leave somewhere warm until doubled in size, about 60 to 90 minutes.
Meanwhile, mix the soft butter with brown sugar, cinnamon, vanilla and salt until smooth and spreadable.
Once the dough has doubled, roll it into an even rectangle. Spread the cinnamon butter evenly over the surface, then roll it tightly from one long edge into a log.
Cut the log into 8 to 10 equal pieces using a sharp knife or unflavoured dental floss. Arrange them in a prepared baking dish with a little room between each roll.
Cover the shaped rolls and let them rise for another 30 to 45 minutes, until visibly puffy. Meanwhile, preheat the oven.
Once the rolls have finished proofing, drizzle the heavy cream over and around them. Bake until puffed, lightly golden and cooked through in the centre. Cover loosely with foil if the tops brown too quickly.
While the rolls bake, rub the cold butter into the oats, flour, brown sugar and salt until coarse crumbs form. Bake separately until golden and fragrant, then let it cool completely.
Beat the cream cheese and icing sugar until smooth. Add the chilled mascarpone and vanilla, then mix gently until creamy and thick. Refrigerate briefly if needed.
Let the baked rolls cool slightly so they are warm rather than piping hot. Spread the mascarpone cream cheese frosting generously over the tops.
Finally, sprinkle the cooled buttery oat crumble over the frosting, making sure each roll gets plenty of golden clusters. Serve warm for the best texture.