`Booth::staged` records which pane's bake a booth holds, and only
`stage_pane_look` ever wrote it. Nothing cleared it, so a booth that fell
back to mirroring the live unit still claimed to hold the pane's bake.
That is a stale latch with a delay fuse. A pane's bake lives as long as its
room, and every pane numbers its own bakes from 1, so a window that closes
and reopens brings the same pane back at revision 1 — meeting a latch that
still said `(that pane, 1)` from its previous life. `needs_restage` read
that as "already current" and the window came back showing whatever the
mirror had left in the booth. It was the same shape as the pane-to-pane
collision the latch already guards, one lifetime further out.
Clearing on the way through the mirror can only cost one extra restage.
Also adds `[booth] pane geom`, a `WOW_BOOTH_LOG` line per pooled slot
whenever the aspect its camera is framed through, the square bake it
renders into, or the square the UI samples changes — the three numbers
that decide whether a pane is drawn un-stretched, and the ones a pane
whose content and framing both check out must be disagreeing on.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn