`build_pane_previews` assembles one pane a frame and chose the first stale
one. A pane that cannot be assembled — an item model that never resolves —
is stale by definition, so it was chosen again every frame and gave the
frame up every time: every pane behind it in slot order waited on it
forever and stayed on the mirrored live player, which looks exactly like
the per-pane dress-up never having run. The shop's Smoky Wooden Torch was
doing this to its page.
The choice now offers every stale pane in slot order and the caller takes
the first it can actually make, so a pane that cannot be assembled costs
its own turn and nothing else. Walking past one is free: every `assemble`
bail is a lookup, all of them before the skin composite.
Also adds `[booth] pane source`, a `WOW_BOOTH_LOG` line per pooled slot
whenever where its character comes from changes — its own bake, or the
mirror because the room is closed, the bake has no parts, or its rig is
still loading. Those three look identical on screen and were the reason
this took a second run to see.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn