Решили: у скелетного рига появился свой UnitVisual (Visuals/BoneStandart.asset), и кадр контакта его юниты берут из маркера клипа, как все остальные. Доля WindupShare у дев-бойца обнулена, а из UnitView убрано поле _attackClip — источник маркера теперь один.

Почему: исключение завела прошлая сессия, а не дизайн (прямое указание Макса 2026-07-31: «у скелета должно быть как у всех, я ничего по нему отдельного не давал»). Механика исключения была такая: UnitVisual скелетному юниту не завели, симуляция его клипа не видела, AttackFrameCount давал ноль — и дыру закрыли числом. Число при этом оказалось тем же самым маркером, пересчитанным руками: маркер стоит на 0.467 с при длине клипа 1.167 с, а 0.45 × 30 тиков дают ровно 0.467 с. То есть один факт жил в двух местах, и второй экземпляр никто не заказывал.

Отвергнутая альтернатива — оставить долю и расширить её до списка позиций под будущую серию Ударов. Она выглядела дешевле (не трогать ассеты), но закрепляла второго владельца позиции контакта именно там, где серия сделает расхождение видимым: показ скрабил бы клип по своему маркеру, а урон приходил бы по числам из данных.

Грабли: перевод на общий путь вскрыл три несоответствия, которые валидатор контента раньше не проверял — просто потому, что у юнита не было визуала и он выпадал из выборки. Способность указывала на пустой слот клипа; собственный арт был приглушён тинтом, хотя у единственного владельца арта приглушения быть не должно; и у рига нет клипа смерти вовсе. Первые два починены, третий закрыт заглушкой (Idle в слоте Death) по решению Макса и записан долгом — Meta - Tech Debt §3.11.

Отсюда общее наблюдение, которое стоит помнить при любой такой унификации: исключение прячет юнита от валидаторов целиком, и цена возврата в общий строй — не одна правка, а весь список правил, которым он не соответствовал всё это время.

Владелец правды: Visuals/BoneStandart.asset (клипы рига), UnitView.ResolveAttackMarker (<remarks> — почему источник один), долг по клипу смерти — tech-debt §3.11, тесты AnimationValidationTests и UnitTintPolicyTests.