Решили: снимок палитры (GuildmasterPalette.asset) пересобирается сам по импорту
tokens.primitives.uss / tokens.semantic.uss — AssetPostprocessor рядом с
PaletteSnapshotBuilder. Пункт меню остаётся, но обязанности помнить о нём больше нет ни у кого.
Почему: сам шов USS → снимок законен и остаётся: мир (карта, боевые VFX, перекрасчик спрайтов)
рисуется мимо UI Toolkit и читать USS не умеет. Костылём был не он, а ручной шаг: состояние
«снимок отстал от токенов» существовало только потому, что о кнопке надо было помнить, и ловилось
красным PaletteSnapshotTests уже постфактум. Правило, живущее в голове при том, что его умеет
исполнять машина, — это и есть определение костыля.
Отвергнуто два других пути. Парсить USS в рантайме — писать парсер CSS ради одного потребителя. Сделать источником ассет, а USS генерировать — переворачивает направление, и тогда правка цвета уезжает в инспектор, где негде держать обоснования контраста; сейчас они живут комментариями прямо в USS рядом с числами.
Сказано: «Зачем нам кнопка “пересобрать палитру”? В чем сложность тебе её самой нажимать? Что за костыли, Никси?» (04.08.2026, сессия ca460396).
Грабли:
- Нажать кнопку агент мог всё это время —
execute_menu_itemв Unity MCP. Шаг числился «за Максом» по моей ошибке, а не по устройству системы, и из-за этого дважды попадал в отчёты как чужая работа. - В play mode пересборка пропускается: запись ассета посреди чужой игровой сессии — это
внезапный
SaveAssetsпод руками у того, кто играет. После выхода импорт темы отработает заново. - Рекурсии нет по построению: следим за
.uss, пишем.asset.
Владелец правды: Assets/_Project/Scripts/Data/Editor/PaletteSnapshotAutoRebuild.cs,
PaletteSnapshotBuilder.cs, тест PaletteSnapshotTests.