Measure the flour with a kitchen scale if possible. Combine the flour, granulated sugar, instant yeast, and salt in a large mixing bowl or the bowl of a stand mixer.
Whisk the lukewarm milk, water, and egg yolks together. The liquids should feel gently warm, not hot.
Add the liquid mixture to the dry ingredients. Mix until a rough dough forms and no loose flour remains. Let stand for 5 minutes to allow the flour to hydrate.
Knead with a dough hook on the manufacturer’s recommended bread-dough setting, adding the softened butter a few pieces at a time. Allow each addition to work into the dough before adding more.
Continue kneading until the dough is smooth, elastic, and slightly tacky, approximately 10–15 minutes total in a stand mixer. It should stretch into a thin membrane before tearing. If kneading by hand, expect it to take longer.
If the dough remains excessively sticky after kneading, add flour 1 teaspoon at a time. Avoid adding enough flour to make it stiff or completely dry.
Shape the dough into a ball and place it in a covered bowl. Let rise in a comfortably warm, draft-free spot for approximately 60–120 minutes, until roughly doubled in size. Use 90 minutes as the planning estimate.
Line a large baking sheet with parchment paper. Gently deflate the risen dough and divide it into 8 equal portions, approximately 94 g each.
Roll each portion into a short rope. If the dough resists stretching, cover and let rest for 5 minutes. Continue rolling into a rope approximately 16–18 inches long.
Brush each rope very lightly with some of the melted shaping butter. Coil it loosely into a spiral on the baking sheet, leaving a little space between the turns for expansion. Tuck the outer end underneath. Leave approximately 3 inches between the rolls.
Cover loosely and let rise for approximately 45–75 minutes, until noticeably puffy and expanded. A gentle fingertip indentation should return slowly rather than springing back immediately.