If you want to enforce "you must play in the microgame corresponding to the location of the previous space IN the microgame" rule, add that space (the second part of the play) to the gamestate. Then, a move is valid if either the first part of the play matches that, OR the game in that space is solved.
https://github.com/TU-CSCI2322-FL22/solver-connect-three/blob/3b398642bada87d610c043c993389cc52d8ec5ec/Main.hs#L9
If you want to enforce "you must play in the microgame corresponding to the location of the previous space IN the microgame" rule, add that space (the second part of the play) to the gamestate. Then, a move is valid if either the first part of the play matches that, OR the game in that space is solved.