ADR 0078: Git preflight и шум-контроль изменений в CIDE¶
Статус: Accepted · Implemented
Дата: 2026-04-20
Связанные ADR¶
| ADR | Роль |
|---|---|
| 0019 | общий Git Core |
| 0042 | pre-flight как обязательный шаг |
| 0077 | TECH-центр принципов |
Контекст¶
В ежедневной работе есть повторяющийся операционный шум перед коммитом:
- «фантомные» изменения по окончаниям строк и BOM;
- смешение смысловых правок и технической гигиены в одном коммите;
- лишние ручные проверки перед пушем (что именно уходит, что осталось локально, куда именно пушится).
Это повышает когнитивную нагрузку и делает историю менее читаемой, особенно в цикле «человек + ассистент».
Решение¶
Ввести в CIDE минимальный встроенный контур Git Preflight, который срабатывает перед коммитом и даёт:
- Проверку и маркировку шума диффа
Отдельно показывать изменения «только EOL/BOM/whitespace», не смешивая их с продуктовым смыслом. - Гигиенические авто-фиксы по кнопке
Нормализация line endings по.gitattributes, снятие BOM в текстовых файлах, безопасная renormalize-процедура. - Подсказку логического разбиения коммитов
Черновики 1..N коммитов по смыслу (например:docs,tools,refactor) с редактируемыми сообщениями. - Post-push health report
Короткий отчёт: что запушено, в какие remote, что осталось в рабочем дереве.
MVP (итерация 1)¶
- Добавить команду
Git: Run Preflight. - Реализовать детекторы:
eol-only(line ending normalization only),bom-only(удаление/добавление BOM без смыслового diff),whitespace-only(пробелы/табуляция без изменения токенов).- В preflight-окне:
- группировка файлов
semanticvsnoise, - action
Apply Safe Fixesдля noise-группы, - action
Create Logical Commits(черновики). - После
pushпоказывать компактный отчёт (remote/branch/кол-во коммитов/остаток локальных изменений).
Метрики успеха¶
- Снижение доли «noise-only» коммитов в истории.
- Снижение доли смешанных коммитов (шум + смысл в одном).
- Снижение времени от
git statusдоgit pushв типовых задачах. - Меньше ручных откатов из-за случайно попавших технических изменений.
Последствия¶
- История становится более предсказуемой и пригодной для review/cherry-pick.
- Снижается трение в парной работе «человек + ассистент».
- Нужно аккуратно ограничить авто-фиксы, чтобы не менять файлы без явного согласия пользователя.
Отклонённые альтернативы¶
- Оставить всё как есть (ручные команды Git): гибко, но слишком много рутины и нестабильный результат.
- Только внешние hooks/скрипты: полезно, но не даёт цельного UX и ситуационной осведомлённости внутри CIDE.