Currently the cse code annotates the expression tree with
ii) alias_scopes to indicate where the aliases should be evaluated
Unfortunately when you have nested records, the transforms for the associated no_createrows are processed more than once, and sometimes that can cause aliases to be added in new places, or alias scopes to be added. This then means that alias(no_createrow) fails to match, causing the row to be recreated.
An example of this can be seen with rchampion1.eclxml if the no_select expansion of a no_createrow is made independent of scope (as it should be).
I think it occurs when you have 2 levels of nested rows, and different values assigned to the 1st level, but the same value assigned to the second level - which causes the place to evaluate the aliases to differ between the two.
I suspect the only sensible solution is to
i) mark alias if they are unconditonal
ii) completely change the way that aliases are evaluated