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 отклонился", не приписывая это
кому-то.
Решение
- Собственное долговечное событие,
anamnese.agent_deviation, записываемое в event log сессии раунда новым инструментомreport_agent_deviation(:direct, не завершает раунд, акторagent/anamnese). - Без персональных данных, по построению. Payload собирается в engine по
списку РАЗРЕШЁННЫХ:
agente,tipo(закрытый словарь:laco,cancelamento_pelo_usuario,reparo_pelo_usuario) иevidenceEventIds(дедуплицированные, предел 20). Нет поля свободного текста — именно в нём модель написала бы имя или черту. Сессия и проект берутся из конверта события. Лишнее поле, выдуманное моделью, отбрасывается. - Вне графа пользователя.
GraphEventTranslatorНЕ переводит этот тип: граф — память ЧЕЛОВЕКА (профиль, принятые факты), а сигнал не его. Тест фиксирует отсутствие вEVENTOS_DO_LOG_PROJETAVEIS. - Чтение по событию, без нового экрана. Тот, кто улучшает продукт, читает
запросом к event log (
session_eventsсtype = 'anamnese.agent_deviation'). Вкладка Insights пока не получает чтения: она по проекту и для того, кто решает, а читатель этого сигнала — сопровождающий продукта.
Последствия
- Профиль пользователя перестаёт поглощать сбой агента: kickoff велит регистрировать исправление как отклонение (RN-716/RN-717).
- Объявленные пробелы: api не проверяет, что
evidenceEventIdsсуществуют (внутренний append не валидирует payload этого типа); нет агрегации и экрана; а распознавание отклонения — за моделью — код лишь гарантирует форму и отсутствие персональных данных. - Изменение словаря
tipo— изменение этого контракта, с RN.