Решили: тронул публичный интерфейс — гони compile-check.ps1 -All, а не безаргументный вызов. Правило добавляется к уже известному «тронул .cs — гони compile-check».

Почему: список «задетых» сборок скрипт строит от изменённых файлов (git status → ближайший asmdef вверх по дереву) и дополняет его зависимостями цели, чьи артефакты устарели. Обратных зависимостей — тех, кто зависит от тронутой сборки, — в этом списке нет ни в каком виде. Для правки внутри метода это ровно то, что нужно. Но расширение интерфейса ломает не тронутую сборку, а его реализаторов, и их файлы при этом никто не менял.

Грабли: сегодня к IShopController добавились Injuries и Heal. Скрипт проверил семь сборок и сказал «компилируется»; красным оказался Guildmaster.DevTools с заглушкой PreviewShop, которая интерфейс реализует и в списке задетых не значилась. Нашлось это только на прогоне тестов в теневом проекте — то есть минутами позже и совсем другим инструментом. -All стоит около 45 секунд против двух-семи и на такой правке окупается сразу.

Тот же класс промаха, что и «compile-check слеп к новым ссылкам asmdef» (запись 2026-08-21-compile-check-is-blind-to-new-asmdef-references): скрипт отвечает на вопрос «собирается ли ЭТО», а не «не сломала ли я кого-то ещё».

Владелец правды: scripts/compile-check.ps1Get-ChangedAssemblies, Add-StaleDependencies.