From the documentation of the a1ex dual-iso algorithm, full frame reconstruction should only be possible for midtone and impossible for both highlights and shadows.
This is because only the midtones fall into the "sensitive" part of both the low and high ISO lines.
You are right, but I was talking one step before the final blending, when they build the non-interpolated fullres image out of the interpolated, exposure corrected, bright and dark images. For context:
Interpolated bright image example:

Interpolated dark image example:

Then they build an initial fullres image using pixels from the bright image if it's a bright row (and not overexposed in theory), or from the dark image if it's a dark row:
for (int y = 0; y < h; y ++)
{
for (int x = 0; x < w; x ++)
{
if (BRIGHT_ROW)
{
uint32_t f = bright[x + y*w];
/* if the brighter copy is overexposed, the guessed pixel for sure has higher brightness */
fullres[x + y*w] = f < (uint32_t)white_darkened ? f : MAX(f, dark[x + y*w]);
}
else
{
fullres[x + y*w] = dark[x + y*w];
}
}
}
It looks like there are cases where pixels are so overexposed that doesn't look overexposed anymore, and the comparison is taking the pink rows from the bright image anyways.
This is what I would like to change to keep as much detail as possible, while avoiding the pink parts. I tried ignoring the comparison with white_darkened and taking always the MAX, like this:
fullres[x + y*w] = MAX(f, dark[x + y*w]);
And that gives visually a resolution between the halfres and the fullres with no pink artifacts. The problem is that I don't understand what the values of the pink areas means, I don't know how to figure out when a pink pixel is "too pink" and should be discarded. The comparison with "white_darkened" seems to work most of the time, but that's just too complex for me.
Maybe someone with more knowledge on the topic can help us...