Что делать, когда сломалось
Кому это? Тому, у кого прогон только что стал красным — или у кого проверка вообще не запускается. Когда читать? Сейчас, начиная с сообщения, которое вы получили. Если это не поломка, а вопрос — FAQ; чтобы разобраться с инструментом — гайд.
Каждый случай ниже — реальная поломка этого репозитория или одного из двух его потребителей. Написано то, что помогло, а не то, что должно было бы помочь.
release говорит, что в чекауте нет тегов
FAIL release
CHANGELOG.md:1 (no tags)
this checkout has no tags, so whether the released versions are tagged cannot be checked
fix: fetch tags — actions/checkout needs fetch-depth: 0
С репозиторием всё в порядке. actions/checkout по умолчанию забирает один коммит и ни
одного тега, поэтому проверке нечего сравнивать. Дайте джобе её вход:
- uses: actions/checkout@v5
with:
fetch-depth: 0
Это нужно каждой джобе, которая запускает harnessimo check, а не только той, где вы это
заметили.
Proof-маркер падает, хотя файл очевидно на месте
Три причины, в порядке частоты:
- Путь считается от корня репозитория, а не от документа. Маркер в
docs/GUIDE.md, указывающий наsrc/cli.ts, — верный; на../src/cli.ts— нет. - Символ переименовали или перенесли.
<!-- proof: src/<module>.ts:<aSymbol> -->падает в тот момент, когда<aSymbol>переименовали. Это проверка работает: утверждение пережило то, на что ссылалось. - У команды нет раннера. Для
<!-- proof: make <target> -->нужно, чтобыdocs.commandsобъяснял, что такоеmake—{ "make": "Makefile" }. Без этого маркер не разрешается и честно об этом сообщает, а не проходит молча.
clean-exit говорит, что прогресс не записан
.harness/4-state/PROGRESS.md:1 (not updated)
21 file(s) changed and this was not one of them
Сессия поменяла код и оставила файл, который следующая сессия читает первым, с описанием
старого состояния. Либо обновите его, либо — если в этом репозитории «где я остановился»
живёт в другом месте, например в хендоффе трека, — поставьте cleanExit.progressFile в
null и напишите почему в $comment конфига. Осознанно выключить правило, в письменном
виде, — это не то же самое, что его игнорировать.
locked отказывает коммиту, который тронул только CI
Это проверка делает свою работу: .github/workflows/ перечислен в locked.paths, а коммит
агента не имеет права менять файлы, которые решают, прошла ли его работа.
Правильный путь — не ослабить правило. Внесите изменение, а затем сдвиньте baseline отдельным коммитом, который фиксирует почему:
# The fourteenth corrects the constraint count that file states about itself.
4a2726ae71df13b215b061744f084f9e08df959a
История файла baseline становится аудит-следом каждого сдвига защищённой поверхности.
Пре-коммит-хук отклоняет то, что check пропускает
Хук и ваш терминал запускают разные сборки. Сгенерированный хук ищет
node_modules/.bin/harnessimo, затем src/cli.ts, затем dist/cli.js, затем PATH — так
что протухший dist/ перекрывает исходники, из которых собран. Пересоберите или удалите
dist/.
Если нужно срочно закоммитить, а хук неправ, — чините хук. --no-verify выключает гейт для
всех, кто скопирует команду из вашей истории.
cold-start падает, хотя локально всё работает
Так и задумано. Проверка клонирует репозиторий в пустой каталог и запускает
задокументированные команды без всего, что есть на вашей машине: без .env, без глобальных
установок, без кешированных node_modules. Падение означает, что новый участник или свежий
CI-раннер не сможет начать, — и это было правдой до появления проверки, просто невидимой.
Читайте, что она напечатала: отсутствующий файл — это отсутствующий файл, а падающая команда — это команда, которую обещает ваш README и не может выполнить репозиторий.
queue verify проходит локально и падает в CI
CI запускает check --reverify, то есть заново прогоняет верификацию каждого пункта со
статусом passing, а не верит записанному состоянию. Пункт, который однажды позеленел, а
потом был поправлен руками, здесь падает. Этот разрыв между «в файле написано passing» и
«оно проходит» — вся причина, по которой очередь существует.
Ничего не запускается: «no harnessimo.config.json here»
Инструмент читает конфиг из текущего каталога. Запускайте из корня репозитория — или
выполните harnessimo init, если репозиторий ещё не настроен.
doctor пишет «not set» у проверки, которую вы считали включённой
Проверка включается, когда есть её секция конфигурации: нет секции — нет проверки. doctor
печатает честный список, и этот список и есть ответ на вопрос «что этот репозиторий реально
гарантирует». Добавьте секцию, названную в таблице гайда, и запустите
doctor снова.
Всё ещё не работает
Заводите issue с командой, которую запускали, и полным выводом: https://github.com/atamaniuc/Harnessimo/issues. Вывод называет файл, строку и способ починки; если не назвал — это баг в сообщении, и о нём стоит сообщить отдельно.