Перейти к основному содержимому

ADR 0205 — Отклонение агента, которое наблюдает Anamnese, становится сигналом продукта, без персональных данных

Статус​

Accepted. 2026-10-02 (AT-356 часть 2, решение владельца от 02.10: "Sim, sinal do produto"). Дополняет ADR 0196, не редактируя его: Anamnese по-прежнему ведёт профиль ЧЕЛОВЕКА; этот ADR добавляет вторую запись — об АГЕНТАХ.

Контекст​

В тестовом магазине от 02.10 (AT-376) Anamnese прочитала как черту пользователя то, что было сбоем агента: "Não vi o handoff aparecer. Pode passar ao Arquiteto?" стало "driver de continuidade" — это человек прикрывал сбой PO. То же касается агента в цикле и хода, отменённого пользователем. Этот сигнал ценен, но для того, кто улучшает ПРОДУКТ, а не для профиля того, кто его произвёл.

Измерено в dev до изменения: у Anamnese были лишь глаголы о человеке (emit_proficiency, skip_proficiency) и об инструкциях/пределе (propose_instruction_patch, propose_max_parallel, которые становятся proposed_action). Не было места, где сказать "агент X отклонился", не приписывая это кому-то.

Решение​

  1. Собственное долговечное событие, anamnese.agent_deviation, записываемое в event log сессии раунда новым инструментом report_agent_deviation (:direct, не завершает раунд, актор agent/anamnese).
  2. Без персональных данных, по построению. Payload собирается в engine по списку РАЗРЕШЁННЫХ: agente, tipo (закрытый словарь: laco, cancelamento_pelo_usuario, reparo_pelo_usuario) и evidenceEventIds (дедуплицированные, предел 20). Нет поля свободного текста — именно в нём модель написала бы имя или черту. Сессия и проект берутся из конверта события. Лишнее поле, выдуманное моделью, отбрасывается.
  3. Вне графа пользователя. GraphEventTranslator НЕ переводит этот тип: граф — память ЧЕЛОВЕКА (профиль, принятые факты), а сигнал не его. Тест фиксирует отсутствие в EVENTOS_DO_LOG_PROJETAVEIS.
  4. Чтение по событию, без нового экрана. Тот, кто улучшает продукт, читает запросом к event log (session_events с type = 'anamnese.agent_deviation'). Вкладка Insights пока не получает чтения: она по проекту и для того, кто решает, а читатель этого сигнала — сопровождающий продукта.

Последствия​

  • Профиль пользователя перестаёт поглощать сбой агента: kickoff велит регистрировать исправление как отклонение (RN-716/RN-717).
  • Объявленные пробелы: api не проверяет, что evidenceEventIds существуют (внутренний append не валидирует payload этого типа); нет агрегации и экрана; а распознавание отклонения — за моделью — код лишь гарантирует форму и отсутствие персональных данных.
  • Изменение словаря tipo — изменение этого контракта, с RN.