Решили: части тела и предметы в руках адресуются рантайм-реестром, выведенным ИЗ КОНВЕНЦИИ РИГА (предмет = кость под Rotation Point (Grip), рука = (Left)/(Right) над ней, часть тела = кость над Visual Part (…)). Руками объявляется только то, чего в геометрии нет: тип предмета и двуручность — компонент UnitHeldItem на кости предмета. Свечение каста переехало с маски РОЛЕЙ на маску ЧАСТЕЙ (PartMask), а PartRole/UnitPartRole удалены.

Почему: ручная разметка ролей (вчерашняя фаза A) назначала бы факт, который риг уже держит структурно, — то есть заводила второго владельца, расходящегося молча. Она же не решала задачу Макса: роль не умеет выбрать ОДИН из двух одинаковых кинжалов, а «иногда светится щит, иногда одно из двух оружий» — требование дизайна. Отвергнуто:

  • виды юнитов по вооружению (меч+щит, два кинжала, двуручка) — комбинаторный перечень рядом с фактическим содержимым рук, тот же второй владелец;
  • суффикс роли в имени кости (Sword (Weapon)) — язык рига один, но имя узла входит в пути клипов, масок и аватара, и правится только через RigMigrate: платить миграцией за каждый новый предмет дорого;
  • эвристика по имени спрайта (Contains("shield"), как мерил риг-профиль до сегодня) — работает, пока предметов два и оба названы по-английски; факел, баклер и лук она записала бы в оружие молча.

Двуручный предмет — ОДИН UnitPart со слотом Both, а не пара записей: две записи зажгли бы свечение дважды по одному древку и вернули бы два оружия на запрос «дай оружие».

Грабли: имя Parts у SkeletalBodyVisual было занято списком рендереров — реестр забрал его себе, список стал Renderers (правка достала до инспектора и двух тестов). Прогон с узким EditMode-фильтром снова отрапортовал «Some tests failed» на пустом PlayMode-ране: EditMode при этом 10/10.

Владелец правды: UnitPartRegistry.cs, RigNaming.cs (конвенция — общая для рантайма и инструментов рига), UnitHeldItem.cs (тип предмета), тест UnitPartRegistryTests — в нём инвариант шва: индекс части это её слот в списке рендереров тела, даже если в списке дыра от потерянной ссылки.