Модуль 07 — Практика: миграция без красных тестов
Время: 210 минут · Артефакт: labs/07-refactor/
Задание 1. Карта зависимостей (25 мин)
Выберите функцию/класс, который хотите заменить. Постройте карту:
grep -rn "old_name" --include=*.py .
Оформите таблицу:
| Файл | Строка | Что делает | Риск |
|---|---|---|---|
Приёмка: карта полная (сверьте с grep ещё раз), риски расставлены.
Задание 2. План миграции (25 мин)
Напишите план из 5–7 шагов, каждый:
- меняет ≤ 2 файла;
- заканчивается
./scripts/check.sh; - имеет свой коммит.
Приёмка: план утверждён вами до начала работы (зафиксируйте в отчёте).
Задание 3. Пошаговая миграция (90 мин)
Выполняйте шаги по плану. После каждого:
./scripts/check.sh
git add -A && git commit -m "step N: <что сделано>"
Правила для агента:
Работаем по одному шагу плана. После шага остановись и покажи дифф.
Файлы вне <путь> не трогай. Публичные сигнатуры не меняй.
Приёмка: минимум 3 шага, каждый с зелёными тестами и коммитом.
В отчёте — git log --oneline и git diff --stat по всей миграции.
Задание 4. Проверка на откат (25 мин)
Сломайте один шаг намеренно (агенту: «попробуй сделать шаг 4 сразу вместе с шагом 5»). Посмотрите, сколько файлов затронуто и сколько тестов упало. Откатите:
git reset --hard HEAD~1
Приёмка: в отчёте — сравнение «по одному» vs «всё сразу»: число файлов, число падений, время на разбор.
Задание 5. Удаление мёртвого кода (45 мин)
После миграции:
Старый код больше не используется. Найди все ссылки на <old_name>,
удали их и сам код. Если что-то ещё использует — остановись и покажи список.
Приёмка: тесты зелёные, grep по старому имени пуст, дифф просмотрен.
Критерии сдачи
- Карта зависимостей полная.
- План на 5+ шагов, утверждён до работы.
- ≥ 3 шага с зелёными тестами и коммитами.
- Эксперимент «всё сразу» + откат.
- Мёртвый код удалён, репозиторий зелёный.