# Проверка Chat Agent 2.4.4 → Monitor

05.11.2026. Проверена реально активированная пользователем панель Chrome, а не только ZIP или локальный макет.

## Что исправлено

1. Тайм-аут чтения журнала: устранено повторное тяжёлое объединение данных фраз; агрегат читается через asyncpg fetch, не fetchrow, чтобы одноразовый portal не исключал parallel workers PostgreSQL. Лимит 2 с сохранён. Проверочная выборка: 39 наблюдений за 750,964 мс.
2. Ошибка чтения больше не выглядит как ноль запросов и ноль событий; тайм-аут Monitor отличается от недоступной команды.
3. Квитанции инструмента связаны с конкретной передачей его результата, а не с исходным вопросом. Приём команды, результат инструмента и окончательный ответ разделены.
4. Расширение сохраняет подтверждение получения и показа окончательного ответа через существующую квитанцию. Monitor использует эти записи без второй копии ответа.
5. JSON проецируемых квитанций открывается по существующему источнику; проверяются сессия, операция, событие и временная граница. Исправлена потеря выбранной сессии при ленивом чтении UI.
6. В новых прогонах показаны реальные сервисы и адрес провайдера. Исторический bus обозначен как незаписанный участник, а не выдуманный сервис или брокер.
7. Описания команды, допуска, вызова инструмента, результата и завершения указывают назначение передачи. Проверены все 27 шагов рабочего прогона.
8. Убрано наложение закреплённых фильтров на заголовок подробностей. Проверены обе темы, контраст единственного tooltip, клавиатурный доступ, выделение стрелки и обратный переход.
9. Отправка консольных наблюдений расширения больше не направляется в удалённый Core.

## Реальный контрольный запрос

Request ID: `4e4fc102-fe8a-4cb2-81b6-c9dbe7ba1997`.
Session ID: `e553d21f-3e16-4891-9321-65b73fed9cee`.

Панель вызвала run_js один раз: прочитала h1 RoboForm без чтения полей формы и без изменения страницы. Два обращения к модели. Ответ: **Form Filler: Test Form - All Fields**.

- Monitor: 41 сохранённое наблюдение, 27 передач; 8 запросов, 12 ответов, 7 событий; 0 ошибок доставки и инструментов.
- Отправка команды → показ: 2367 мс; Agent: 2235 мс. Вложенные удалённые вызовы LLM: 1807 мс; инструменты: 123 мс. Эти интервалы не складываются.
- Получение браузером: 09:21:43.029; показ: 09:21:43.032, разница 3 мс по часам браузера.
- Отправка Gateway: 09:21:44.274 по серверным часам. Расхождение часов показано явно и не трактуется как отрицательная сетевая задержка.
- После окончательной поставки проверено открытие JSON квитанции и фактического ответа через payload_ref, журнал → выбранная стрелка → журнал, тёмная/светлая тема.

[Открыть проверенный запрос](</experiments/voice-ai/monitor-archive/>).

## Исходники и CI

[MR !55](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/55>) и [MR !56](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/56>) merged. Окончательный main `461aeffbf42c937a2216e963bbe8760a4dee9483`; серверная ревизия `9f7113f147f239e74061a06152ad45b73dfb90fc`. От исходного 329856fa: 30 файлов, +356 / −84 строк. Корневой CI не менялся.

- Pipeline 5752: пять обязательных checks успешны; Python — 250 passed, 137 штатно skipped, 12 subtests; frontend — 574 теста; browser NATS, Ruby и PostgreSQL/NATS integration завершились успешно.
- Pipeline 5753: пять обязательных jobs успешны; повторно выполнены 574 frontend-теста. Python, browser, Ruby и integration штатно пропущены отбором влияния, поскольку последний commit меняет только Front.
- Последняя локальная регрессия: 47 тестов и TypeScript проверка прошли. Тест чтения JSON до исправления воспроизводил отсутствие selected_session_id.
- Backend build 29578, deploy 29596 — success. Final Front build 29636, preflight 29639, refresh 29665 — success. Неиспользованные manual jobs не запускались.

## Работающие образы

Все перечисленные сервисы: 1/1 running; rollout completed. Для Ingress подтверждён Docker health=healthy. У остальных Docker HEALTHCHECK не задан; функциональное поведение проверено реальным запросом и HTTPS Monitor.

| Сервис | Версия | Revision | Digest |
|---|---|---|---|
| chat-agent_src_llm | 1.0.1165 | `9f7113f1` | `sha256:82fffd86a34167d520368f1a52afcdf4c18fff4d103b582edfa4d360a6ef5345` |
| chat-agent_src_api_gateway | 1.0.1165 | `9f7113f1` | `sha256:0103e1771744dcff8988ea8925966ea147cf55ce60e6dc6d5d515618890d1412` |
| chat-agent_src_agent | 1.0.1165 | `9f7113f1` | `sha256:c01319a54f619898c18f38b9a0a72b6689f4963ea5aafe0ccb24bb6b8be30aee` |
| chat-agent_audio_ws_ingress | 1.0.1165 | `9f7113f1` | `sha256:3bb9732abf26710fe5bf12c27f6439c09c27acd1a25f535105a1f7812300013c` |
| chat-agent_src_front | 1.0.1166 | `461aeffb` | `sha256:3adc716dad08b763af773baaf2572b6de1e7aaa1be2590004361070ef98e56c4` |

Расширение 2.4.4 активировано и проверено в Chrome. Последняя правка обновила только Front, повторная активация расширения не нужна.

## Границы достоверности

У исторического прямого NATS-запроса `e82ce59b-1101-4a0a-9914-9837d3945ca2` исходный отправитель действительно не сохранён. Его имя и отсутствующие промежуточные отметки браузера не восстановлены догадками. Совпадение времени не использовалось для связи операций.

Во время обновления одна загрузка Monitor не подключилась; обычное обновление страницы восстановило HTTPS auth и NATS. Бесшовное переподключение при rollout этим тестом не подтверждается.

Микрофон, ASR/GPU и длительные прогоны в эту проверку командного пути не входили. Формы RoboForm не заполнялись.

## Доказательства

- `final-description-audit.json`: строки и подробности всех 27 передач.
- `final-answer-detail.txt`, `final-receipt.txt`: ответ и квитанция после поставки.
- `images-before.json`, `images-delivered.json`: прежние и окончательные образы.
- `verification.json`: итоговые IDs, проверки, времена и ограничения.

![Рабочая схема и подробности](#archive-availability)
![Результат в расширении](#archive-availability)
