height 100% означает, что вы хотите получить 100% высоты родителя. Родители у .row это body и затем html, у которых вы забыли задать высоту (те же 100%) или минимальную высоту.
В вашем примере, без указания высоты 100%, красный блок все же тянется на всю высоту родителя из-за того, что .row это флекс контейнер, а у него по умолчанию align-items: stretch.