chimera-run-the-projects-own-gate-command
Запускайте команду проверки проекта буквально — тот же охват, те же флаги. Почти идентичный вариант, придуманный вами на ходу, врёт в обе стороны.
Присвоено человеком, который прочитал карточку, а не заявлено файлом о самом себе. Карточка, которую агент выводит во время запуска, поглотившего недоверенное содержимое, рождается заражённой и удерживается на разбор, прежде чем её вообще извлекут.
Когда это вспоминается
- сейчас запущу линтер или проверку типов
- проверяю перед коммитом или PR
- CI упал, а локально прошло
- дописываю область или флаг строгости
- отчитываюсь, что гейт зелёный
Ценность обычно лежит в разделах «Избегать» и «Проверить». «Делать» — это раздел, который пишут все.
Текст карточки выше — перевод. Английский оригинал — это то, что импортирует командная строка, что читает агент во время работы и что подтверждает хеш ниже.
Повод
Вы собираетесь запустить контроль качества проекта — линтер, тайпчекер, тесты — и предъявить
результат как свидетельство того, что изменение безопасно. Соблазн — сузить («я трогал только
chimera/») или ужесточить («--strict наверняка лучше»).
Это не относится к разведке. Запускать pytest tests/test_governed_surfaces.py -x, пока вы
итерируете над одним файлом, правильно; правило о том, что после этого можно назвать контролем.
Суженный прогон — вспомогательное средство отладки, но никогда не верификация.
Делать
- Найдите, где команда записана, и назначьте канонической ОДНУ запись. В Chimera это цель
checkвMakefile—make check, — потому что цель исполняема, а строка в прозе является её копией. Три проверки, которые она запускает:ruff check .,mypy chimeraиpytest -q. - Запускайте каноническую форму байт в байт. Ни добавленного пути, ни добавленного флага, ни
подменённого раннера. Учтите, что копия в прозе может отличаться так, что это выглядит косметикой
и ею не является:
Makefile:21оборачивает это какuv run --no-sync,CONTRIBUTING.md:105— какuv run --extra dev --extra desktop. Тот же инструмент, разные окружения — ровно поэтому одна из записей обязана быть источником. - Если два источника расходятся, считайте авторитетным workflow CI, запускайте его и правьте
устаревший документ тем же PR:
CONTRIBUTING.mdкакое-то время нёс ошибочную строкуmypy --strict, а устаревшая инструкция расходится по всем, кто её прочтёт. - Если каноническая команда не может выполниться в вашем окружении, говорите, что контроль не
запускался. На Windows локальный
.venvсломан (litellm требует Rust/MSVC), поэтому контроль запускается в WSL: переносить оболочку можно, править команду нельзя. - Приводите команду и её вывод дословно, а не пересказ того, как всё прошло.
Избегать
Два близких промаха, оба настоящие, оба в одной сессии, и заметьте, что врут они в противоположные стороны:
mypy --strict chimera # WRONG — lies toward failure
mypy chimera # right
Явный флаг перебивает собственную настройку проекта warn_unused_ignores = false в
pyproject.toml и выдаёт около пятнадцати ошибок unused-ignore в файлах, которых никто не трогал.
Это едва не превратилось в баг-репорт, поданный на чистый код.
ruff check chimera tests # WRONG — lies toward success
ruff check . # right
Суженный охват не сообщает о B023 (замыкание, захватившее переменную цикла), о котором сообщает
ruff check ., потому что охват меняет, какие файлы — а значит, какие подиректорные настройки
правил — участвуют. CI упал на PR, чей локальный «контроль» был зелёным.
Общий механизм: флаг решает, какая конфигурация побеждает, а охват решает, какие правила срабатывают. Ни то, ни другое не является косметической разницей, и оба варианта достаточно похожи на настоящую команду, чтобы их вывод читался как авторитетный.
Проверить
Укажите файл и строку, где записана ваша команда. Makefile:21, CONTRIBUTING.md:105. Если
не можете — вы её сымпровизировали.
Двоичный вопрос: можно ли вставить набранную вами строку в рецепт check без единой правки? Если у
вашей команды есть аргумент или флаг, которых в рецепте нет, ответ «нет», и запускали вы другую
проверку, случайно носящую то же имя.
Риск
Каноническая команда обычно самая медленная, и правило, запрещающее быстрый вариант, подталкивает не запускать вообще ничего. Это исход хуже, чем суженный прогон, честно помеченный как суженный.
Измерьте цену, прежде чем решать, что правило дешёвое, и перемеряйте по мере роста набора тестов. Первая редакция этой карточки утверждала, что полный набор Chimera идёт «около пятнадцати секунд», — число, верное однажды и уехавшее примерно к 100 секундам по четырём измеренным прогонам к моменту написания карточки. Карточка о том, что команды не выдумывают, — плохое место для публикации цифры, не переживающей запуска этой команды.
И сам рецепт может быть неверен. Следовать ему буквально — значит унаследовать его слепые пятна:
make check не скажет вам, что тест читает лежащий в gitignore
bench/local_lift/results/paired.json, которого в свежем клоне нет. Лечение плохого контроля —
менять рецепт в PR, а не тихо запускать у себя улучшенный: приватное улучшение защищает ровно одного
человека и оставляет CI, и всех остальных, на старой команде.
Как применить
Карточка — это данные. Склонируйте репозиторий и импортируйте её по пути: всё, что приходит по сети, считается заражённым и удерживается до одобрения — это и есть желаемое поведение, и поэтому здесь нет установщика в одну строку.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/chimera-run-the-projects-own-gate-command/SKILL.mdЦелостность
SHA-256 файла в опубликованном виде. Импортёр может проверить, что полученное совпадает с показанным на этой странице.
12e60e2bbe0fa29b4a242ec429a1897741266f43812148c3a55356f77de227b9