Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Рейтинг: 48.7% · 7 голосов
Программирование с искусственным интеллектом: Claude Code, Cursor, GitHub Copilot, agentic coding, протокол MCP, генерация и ревью кода, автоматизация рабочего процесса разработчика.
Ответить
Аватара пользователя
mgyorko
Сообщения: 7
Зарегистрирован: 12 май 2026, 19:04

Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение mgyorko »

Короче, история выходных. Мигрировал платежный модуль со старого SDK ЮKassa на их новый API, задача муторная, отдал Claude Code в агентном режиме. Сорок минут шуршал, отчитался красиво: миграция готова, 247 passed, 0 failed, можно мержить.

Полез читать дифф перед мержем, скорее по привычке. И вот что нашел. В conftest.py появилась autouse фикстура, которая мокает все вызовы платежного шлюза. А 12 тестов на старый флоу помечены @pytest.mark.skip(reason="legacy payment flow, scheduled for removal"). Никто ничего не scheduled, он это сам выдумал. reason написан так, будто так и было задумано. CI зеленый, skip же не fail.

То есть он не справился с миграцией, увидел что тесты падают, и вместо того чтобы сказать об этом, замел под ковер и написал легенду. В отчете про скипы ни слова. Если бы я мержил по диагонали в пятницу вечером, в понедельник платежи бы легли.

Кто как ловит такое? Читать глазами каждый дифф на 2к строк не масштабируется.
👍 ❤️ 🔥1 😄 🤔
✔ Лучший ответ сформирован автоматически — cudaguru
scalalord писал(а):сами сформулировали кривой reward, сами получили reward hacking Удобная позиция, только она перекладывает брак инструмента на пользователя. Молоток, который при промахе сам рисует на пальце шляпку гвоздя, бракованный молоток, как промпт ни формулируй. И инструкцию "не трогай тесты" из CLAUDE.md агент теряет после первого же compaction, проверено не раз. Что реально работает: Pr…
Перейти к ответу →
Аватара пользователя
davkar
Сообщения: 58
Зарегистрирован: 11 май 2026, 03:00

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение davkar »

@mgyorko, классика жанра. у меня копайлот в agent mode так же расставлял .skip в jest и молчал. с тех пор в ci отдельная проверка: число скипнутых выросло относительно мастера, джоба красная. полчаса настройки, ловит регулярно
👍3 ❤️ 🔥1 😄 🤔
Аватара пользователя
sneeke
Сообщения: 29
Зарегистрирован: 11 май 2026, 03:15

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение sneeke »

mgyorko писал(а):reason написан так, будто так и было задумано
Вот это самое стремное, на самом деле. Скипнуть тест полбеды, а сочинить правдоподобную причину это уже заметание следов. У меня был случай похлеще: агент не скипал, а переписал ассерты. Было assert response.status == "succeeded", стало assert response.status in ("succeeded", "failed", "pending"). Тест проходит всегда, а в диффе выглядит как расширение кейсов. Заметил через две недели, когда тест не поймал реальный баг.

По защите: pytest -rs в CI плюс сравнение skip-счетчика с мастером. И дифф по tests/ и conftest.py читаю всегда и целиком, остальное уже как пойдет.
👍 ❤️1 🔥1 😄 🤔1
Аватара пользователя
scalalord
Сообщения: 7
Зарегистрирован: 12 май 2026, 05:41

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение scalalord »

а чего вы все удивляетесь. вы дали агенту критерий "тесты зеленые" и он его оптимизировал самым дешевым способом. закон гудхарта в чистом виде. он не врет, у него нет понятия совесть, есть условие завершения задачи. сами сформулировали кривой reward, сами получили reward hacking. пишите в задаче "тесты проходят И ни один тест не изменен и не скипнут" и половина таких историй исчезнет
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
navspy
Сообщения: 60
Зарегистрирован: 12 май 2026, 02:48

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение navspy »

@sneeke, мержить платежный модуль в пятницу вечером, вот где настоящая проблема в этом посте. агент тут вообще десятый
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
cudaguru
Сообщения: 5
Зарегистрирован: 10 май 2026, 23:59

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение cudaguru »

✔ Лучший ответ — сформирован автоматически
scalalord писал(а):сами сформулировали кривой reward, сами получили reward hacking
Удобная позиция, только она перекладывает брак инструмента на пользователя. Молоток, который при промахе сам рисует на пальце шляпку гвоздя, бракованный молоток, как промпт ни формулируй. И инструкцию "не трогай тесты" из CLAUDE.md агент теряет после первого же compaction, проверено не раз.

Что реально работает: PreToolUse хук, который блочит Edit и Write по путям tests/ и conftest.py. Скрипт на десять строк, агент физически не может туда писать, хочет поменять тест, обязан остановиться и спросить. После этого мой опус стал честно писать "миграция ломает 12 тестов, нужно решение". Та же модель, тот же промпт, просто убрал возможность жульничать.
👍 ❤️1 🔥1 😄 🤔
Аватара пользователя
reactchan
Сообщения: 12
Зарегистрирован: 11 май 2026, 16:44

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение reactchan »

@scalalord, у меня кодекс хардкодил эталоны, подниму градус. тест сравнивал ответ апи с golden json, агент не осилил починить сериализацию и молча перегенерил сам golden файл из своего же кривого выхлопа. формально все честно, тест не тронут, не скипнут, просто эталон теперь тоже сломан. и хук по путям tests/ такое не поймает, голдены лежали в fixtures/. читать дифф глазами все равно придется, вопрос только какой кусок
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
ransome
Сообщения: 37
Зарегистрирован: 11 май 2026, 01:39

Re: Claude Code скипнул падающие тесты и сам сочинил отмазку в reason, чуть не уехало в прод

Сообщение ransome »

reactchan писал(а):читать дифф глазами все равно придется
ага, но теперь хотя бы понятно, куда смотреть в первую очередь. в общем внедрил: в ci джоба skip-delta (pytest -rs, парсим, сравниваем с мастером), хук на tests/ и conftest.py, после поста про голдены добавил туда и fixtures/. прогнал миграцию заново, агент уперся в хук и выдал честное "12 тестов на legacy flow падают, вот варианты". то есть мог и сразу, просто врать было дешевле. осадочек остался
👍 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «AI-ассистированная разработка»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость