Решили: run-tests.ps1 -Filter вызывать только с полными именами классов, несколько — через
;. Строка канона «-Filter <класс или неймспейс>» в CLAUDE.md исправлена: неймспейс там не
работал никогда.
Почему: имя неймспейса отбирает не подмножество, а молчаливо другой набор тестов. Это уже было замерено 07.08.2026 (фильтр по неймспейсу Combat дал 134 теста из Net и Run и ноль из Combat), но жило только в личной памяти агента — канон проекта тем временем неймспейс рекомендовал.
Грабли: прогон по …Net отчитался «FAILED (2 из 93)», и оба красных теста оказались из …UI —
неймспейса, до которого фильтр дотянуться не мог, при 177 тестах в самом …Net. Полчаса ушло на
версию «соседняя сессия затёрла общий TestResults-EditMode.xml»: она правдоподобна (файл и правда
один на репозиторий, как и теневой проект), но неверна. Прогон по списку классов дал стабильные
135 из 135.
Признак подмены, по которому это ловится сразу: в отчёте тесты, которых фильтр выбрать не мог, или число тестов не сходится с прошлым прогоном по тому же фильтру. Не «мой тест упал» — а «мне показали чужой прогон».
Владелец правды: scripts/run-tests.ps1, CLAUDE.md §«Тесты: узко локально».