Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в домашней папке, перенесены в agents/. Разложено по агентам там, где имя файла позволяло определить автора; остальное — в _salvage-2026-08-18/ и разбирается вручную. Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных рабочих копий: она существовала только на диске. Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.5 KiB
4.5 KiB
Реализация ADR-0005 и ADR-0009. Раздел ТЗ 36.
Репозиторий: https://github.com/ochenstarik-ui/kagent Зависит от задачи 0.9.0 (зелёный trunk).
Зачем
Definition of Done требует test_failures: 0. Это условие выполняется двумя способами: сделать код корректным или согласовать тесты с текущим поведением кода. Автономный агент оптимизирует измеримую цель, поэтому второй путь ожидаем, а не гипотетичен. Сейчас удаление падающего теста удовлетворяет DoD.
Параллельно: параллельные workstream создают ветки, а порядок их интеграции нигде не определён, поэтому ветка может пройти верификацию на устаревшей базе и сломать trunk, при том что отчёт задачи заявит успех.
Что сделать
Целостность оракула (ADR-0005, ТЗ 36.2-36.6)
- тесты формируются на этапах спецификации и планирования, а не по реализации;
- роли Test Agent и Code Reviewer не обслуживаются той же конфигурацией модели, что Developer Agent в рамках одной задачи;
- утверждённый набор тестов read-only для Developer Agent на всё время реализации и repair, тестовые пути в forbidden_paths контракта задачи;
- изменение существующих тестов — действие класса approval_required;
- разделение change set на code diff и test diff, раздельное представление reviewer;
- проверка запрещённых конструкций в test diff: маркеры skip и ожидаемого падения, пустые обработчики исключений, отключённые и ослабленные ассерты, снижение порогов покрытия, флаги обхода проверок и hooks; совпадение блокирует завершение и не снимается реализующим агентом;
- мутационная проверка: ограниченный набор синтетических дефектов в изменённый код, новые тесты обязаны их обнаружить, mutation_score в DoD;
- учёт escape defects с атрибуцией запуску и конфигурации reviewer.
Ветвление и merge queue (ADR-0009, ТЗ 36.7)
- сериализация интеграции: rebase на текущий trunk, повторный прогон обязательных проверок на интегрированном результате, затем merge;
- одна задача — одна ветка — один change set;
- запрет прямого push в базовую ветку, force push и переписывания истории для всех агентских идентичностей, включая административные;
- конфликт внутри allowed_paths разрешает агент с полной повторной верификацией; конфликт вне allowed_paths или затрагивающий замороженные тесты эскалируется как человеческое решение и не расходует repair-циклы;
- коммиты атомарны, в trailers идентификаторы задачи, запуска и версий промптов.
Критерий приёмки
- негативный тест: агент, пытающийся пометить падающий тест как skipped, получает блокировку завершения;
- негативный тест: тест, не обнаруживающий ни одного синтетического дефекта, не засчитывается, задача не закрывается;
- две ветки с конфликтом проходят через очередь без поломки trunk;
- попытка force push от агентской идентичности отклоняется.