- **Keyring**: `GetKeyRingSize` has no level term at all — it scans for the highest filled slot
and rounds up to a multiple of four (`ContainerFrame.lua:817-844`), expanding only when the key
count has caught up with that slot. So one key is one row of four, four keys in four slots grow
to eight rather than refusing a fifth, and full is all 32. The realm also **fixed** 1.12's silent
refusal: it renamed the message to `NO_EMPTY_KEYRING_SLOTS_ERROR` and defined it
("Your keyring is full."), where stock printed a name that did not exist.
- **Bag tooltip**: the item-button `OnUpdate` accumulates toward `TOOLTIP_UPDATE_TIME` instead of
counting down from it (`:694-704`), and reads the threshold before adding — so a landing template
repaints an open plate two frames after it crosses a fifth of a second, not on the next frame.
- **Raid grid**: the rank is a `$parentRankIcon` Texture now (`Blizzard_RaidUI.xml:49`), set to
`RAID_LEADER_ICON`/`RAID_ASSISTANT_ICON` (`:100`, `:155-161`). The `$parentRank` FontString that
held "(L)"/"(A)" is still declared and never written.
- **Ready check**: the realm moved it into its own group UI (`Turtle_GroupUI.lua:259`) and
`RaidFrameReadyCheckButton`'s OnClick calls `GroupFrame_InitiateReadyCheck` by name, so
`load_social_ui` seats that file; without it the button clicks into a nil.
And two fixtures that were mine to fix and I missed: `quest_tests`' detail and reward panels still
carried `item_id: 0`, which `3f2982445` taught the counters to take-while out of existence. Same
correction as the `benilla-ui` fixture in that commit, with the reason written where it is read.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SgstFWtn1RxEJ5kVrpgYwn