You are right even though some of the measurement conditions may have introduced an error.
I have created an experimental example with such conditions.
I set the animation speed to 0. And I added a loop to loop through all sprites for comparison.
The result showed that construct3 has a problem with comparing objects to themselves.
Where the sprites are different, everything is fine.
Where a sprite compares itself it always produces 3 instead of one.
I did the same with local variables and the error was repeated.
Example dropmefiles.com.ua/en/CReBDzZ4W2