# Диагностика Chat Agent

Текущий путь описан в [NATS](</experiments/voice-ai/archive/w/DOCS/NATS.md>) и [архитектуре](</experiments/voice-ai/archive/w/DOCS/ARCHITECTURE.md>).
Предыдущие WebRTC/Core/workflow проверки — [история до удаления Core](</experiments/voice-ai/archive/w/DOCS/DIAGNOSTICS.md>).

| Симптом | Что сопоставить |
|---|---|
| Нет подключения панели | HTTPS bootstrap, Slim Auth, срок grant, NATS WebSocket и per-client subjects |
| Чат доступен, аудио не запускается | Permission/устройство, Ingress admission, ASR readiness; HTTP 200 Ingress подтверждает только chat bus |
| Нет транскрипции | Граница Silero → непрерывность Opus → PCM batch commit → bridge/worker → Ingress result → Gateway → UI |
| Есть текст, нет ответа | Команда панели → Gateway → Agent admission/очередь → LLM → провайдер; ASR сам Agent не запускает |
| Ответ есть, UI пуст | client/context/request ID, grant, terminal receipt, сохранённая история |
| Не запускается диагностический повтор | Владелец replay-резервации, полнота архива, ASR idle; timeout не освобождает занятой worker |
| В схеме нет запроса к ответу | producer/consumer и сохранённые IDs; отсутствующее наблюдение нельзя дорисовать |

## Порядок проверки

1. Зафиксировать source SHA, CI/image digest, фактический container image/revision,
   replicas, health и update state. Green CI не доказывает rollout.
2. Проверить Gateway и Ingress lifecycle, Agent/LLM health, Ingress ASR server IDs,
   один ASR listener и два адаптера отдельной шины. Отсутствие ответа — ошибка проверки.
3. В Monitor открыть конкретную транскрипцию: границы, исходный звук, чистое время
   модели, входы/выходы и последовательность. Очередь bridge и вызов модели разделены.
4. При разрешённом smoke повторить одну сохранённую фразу. Сравнить байты/границы,
   число вызовов и текст. Микрофон, WER и длительную стабильность этим не подтверждать.

Длительность измеряется часами владельца операции. Отметки разных серверов не дают
достоверную сетевую задержку. Ошибки доставки, инструмента, модели и диагностики
показываются отдельно. UUID допустимы в trace attributes, не в metric labels.

Ingress сохраняет три живых потока и один replay, не пересылает heartbeat в Core.
Batch commit подтверждает приём полного задания, не завершение модели. После end
результат ожидается не дольше 20 секунд; после abort чужая фраза не принимается.
Отмена сокета провайдера сама по себе не доказывает остановку внешнего GPU.

Insight используется для чтения состояния собственного контейнера. Изменения идут
штатным CI, без редактирования установленного кода, env, firewall или credentials.
Не печатать токены, signed URLs и тела пользовательской переписки. Не перезапускать
сервисы до установления причины. Нельзя завершать чужой захват ради проверки.

Источники: [Ingress admission](</experiments/voice-ai/archive/w/src_shared/audio_ingress.py>),
[терминальные результаты](</experiments/voice-ai/archive/w/src_audio_ws_ingress/results.py>),
[Gateway](</experiments/voice-ai/archive/w/src_api_gateway/browser_api.py>), [release probe](</experiments/voice-ai/archive/w/stack/runtime_probe.py>),
[интеграционные проверки](</experiments/voice-ai/archive/w/tests/integration/test_audio_ingress.py>).

## Редактор ASR и подготовка TTS

Вкладки `/monitor/asr` и `/monitor/tts` используют общий исполнитель стенда
моделей. Протокол, права сохранения промпта, fallback и порядок проверки:
[VOICE_EDITOR.md](</experiments/voice-ai/archive/w/DOCS/VOICE_EDITOR.md>).
