Iron rule: не пиши фикс пока не понял root cause. Гипотеза != причина.
Баг: {{bug}}
Алгоритм
Фаза 1. Воспроизведение
Без репродукции — нет бага.
- Зафиксируй минимальный путь к багу
- Запиши конкретный сценарий: какие действия, какие данные, какая среда
- Если репродуцируется не всегда — найди что отличает успех от провала
- Сделай minimal reproducible example: меньше данных, меньше шагов
Если не можешь воспроизвести — иди в логи, GSC, трассировки. Иногда нужно подождать следующего инцидента с улучшенным логированием.
Фаза 2. Сбор фактов
НЕ догадки. Только то что видишь:
- Что в логах?
- Какие данные в БД?
- Что в network-вкладке?
- Какая версия кода в проде?
- Когда баг начался? Что изменилось?
Фаза 3. Гипотезы
Сформулируй 2-3 гипотезы. Для каждой:
- Что предполагаешь
- Как опровергнуть (важно! ищем что разрушит гипотезу)
- Что подтвердит
Хорошая гипотеза — фальсифицируемая.
Плохая: "может быть race condition"
Хорошая: "если updateUser вызвать дважды за < 100ms, второй вызов перезаписывает первый, потому что lock не работает"
Фаза 4. Проверка гипотез
По одной, не параллельно. Для каждой:
- Поставь эксперимент
- Получи результат
- Подтверди / опровергни
Если все гипотезы опровергнуты — значит fakta мало. Возвращайся в фазу 2.
Фаза 5. Понимание
К моменту фикса ты должен уметь объяснить:
- Что произошло (механизм)
- Почему именно эти условия привели к багу
- Почему этого не случалось раньше / случалось но не замечали
- Почему фикс работает
Если не можешь — не фикси. Иначе делаешь "что-то что починило" вместо "что-то что починит и не сломает другое".
Фаза 6. Фикс
- Минимальное изменение
- Не "пока я тут — заодно поправлю Х" (это другой PR)
- Добавь regression test — иначе бан вернётся
- Документируй "почему" в коммите
Фаза 7. Профилактика
- Можно ли поймать это раньше? (тест, lint rule, type check)
- Где ещё в коде та же проблема?
- Какой урок для команды?
Что НЕ делать
- ✗ "Закомментировал и работает" — забыл root cause
- ✗ "Поменял < на <=, теперь работает" — почему?
- ✗ "Возможно потому что..." — это не фикс, это лотерея
- ✗ Не фикси с одной попытки. Воспроизведи. Доказывай
Оркестратор редизайна страницы (7 фаз)
Полный цикл редизайна одной страницы: от анализа текущей версии до плана измерения результата. 7 фаз с чёткими артефактами на каждой.
Постмортем агентского сбоя
Разобрать почему агент справился плохо, и сформировать конкретные правки в промт.
Зацикливание агента
Почему агент крутится в цикле tool calls и как остановить.