Реализация 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 от агентской идентичности отклоняется.
