Why does adding current object to a group it interacts with cause issues?

Square are solid “all squares in the screen, literally, all”, and when he touch one square, this gonna pass to “true moving” right? ( Strange because the square is solid, so why the square move?)

‘Solid’ doesn’t mean the object can’t move, it just means these types of objects don’t allow others to pass through them. In my game (the above is just a proof-of-concept to highlight the issue I was having), the ‘squares’ can move around, but when they stop moving they block other squares from moving through that position. Like pieces on a chess board - you can move one of your pieces to, say, C5, but that’ll then prevent your other pieces from moving to C5, since that square is now occupied. Hope that makes sense.

(the Condition: Square are collision with other Square, you don’t wanna solve with that form, right @anon14980890 ?)

No, I don’t want to use the built-in collision detection event. For more info about why, see my discussion here: One object instance stops moving when it hits the grass, another doesn't - #4 by BWPanda

You could create objects that act as collision boxes for the moving sprites

While not ideal, that worked, thanks @MrMen. I created a new object (‘hiddenSquare’, which I coloured grey to differentiate) then added in to the game on top of the square in the top-right. I added a new action on game start to hide this object, then added it to my ‘solids’ group (instead of ‘squares’). It works now. I still hope to find a better solution (one that doesn’t require adding a bunch of hidden objects on top of all existing objects once they stop moving), but at least now I have a backup failing that.