Chat Agent 2.6.0 · проверка устойчивости
Продуктовая ревизия Chat Agent 178546a4 проверена в изолированном checkout. Финальная ревизия MR a619fa19 дополнительно удерживает образ до публикации и сверяет digest без отдельной загрузки артефакта. Ревизия композиции H100 ac9da70. MR Chat Agent !74, MR rag-stack !7.
Исправления
| Область | Дефект или лишняя работа | Изменение |
|---|---|---|
| Fish | Закреплённый голос приводил к ошибке проверки многозначного тензора | Передаются списки текста и тензоров. Пустой transcript и неверная длина кодов отклоняются до запуска |
| Gateway | При запоздалой публикации ошибки старая озвучка могла остановить новую | Старое задание снимается до сетевого ожидания, подтверждённое завершение worker не порождает cancel |
| Gateway | Новый request_id становился ожидаемым только после остановки предыдущего |
Выбор нового запроса делается до первого сетевого ожидания |
| Gateway | Флаги отправки, окончания синтеза и фаза могли расходиться | Одна фаза синтеза. Успешное проигрывание по-прежнему подтверждается отдельно |
| Gateway | При ошибке подтверждения подписка на worker оставалась зарегистрированной | Подписка удаляется при неудачном handshake |
| Gateway | Неполный или повторный ответ мог портить порядок и состояние | Отрицательные номера и тела в служебных сообщениях отклоняются, повторы не двигают фазу назад |
| Offscreen | Подписка прежнего владельца могла пережить его переподключение | У каждой регистрации есть удаление именно своей подписки |
| Offscreen | Запоздалая ошибка позиции могла остановить следующее задание | Ошибка применяется только к своему ещё активному потоку |
| Offscreen | Блокировка autoplay оставляла подписку готовой и запускала бесполезный синтез для новых ответов | Снимается готовность панели до повторного включения пользователем |
| Плеер | Неподвижный плеер посылал четыре одинаковых запроса в секунду | При неизменной позиции один heartbeat в две секунды. После end запросы позиции прекращаются |
| Плеер | Повтор мог снова открыть закрытое задание. Пустой медиапоток мог зависнуть | Повторы завершённого задания игнорируются, закрытие MediaSource и отсутствие декодируемого звука дают ошибку |
| NATS | Служебные события первого PCM и первого блока шли и в журнал, и в плеер | Плеер получает только нужные состояния и данные, Monitor сохраняет измерения |
| NATS | Команды позиции создавали диагностические пакеты и меняли родительский ID запроса | Диагностика управления звуком записывается в Gateway только на значимых переходах, при пересылке WebM переиспользуется заголовок |
| Worker | Неизменная позиция будила кодировщик без нового кредита | Heartbeat продлевает аренду, передача просыпается при продвижении позиции |
| Worker | Отмена могла оставить непрочитанный stdout FFmpeg, отказ запуска кодировщика выглядел как сбой модели | При отмене канал дочитывается и процесс завершается. Ошибка запуска кодировщика имеет свой код |
| Микрофон | Отказ одной операции mute мог вернуть управление до завершения остальных | Проигрывание начинается после окончания всех операций mute. Невалидный запрос на микрофон не останавливает звук |
| CPU | PCM создавал лишнюю копию при ограничении амплитуды. Ошибка аргументов пилота выявлялась после загрузки модели | Амплитуда ограничивается в существующем буфере, проверка аргументов выполняется до загрузки |
| Образ | Registry обрывал загрузку крупных слоёв весов | Девять слоёв весов примерно по 1 ГиБ. Tensor bytes сохраняются, индекс переписывается при сборке. Код копируется после весов для переиспользования слоёв |
| CI | После завершения Trivy локального тега больше не было | Docker-контейнер без сети удерживает точный ID образа до push. Локально проверены сканирование по ID и восстановление тега |
| CI | После успешной публикации job падала на загрузке дублирующего текстового артефакта из-за DNS | Digest сверяется по ответу registry и RepoDigests прямо в журнале job |
Проверки
- Python 254 прошло, 4 пропущено, 12 подтестов прошло. PostgreSQL и NATS в отдельных локальных контейнерах — 129 прошло, 3 пропущено, 10 подтестов прошло.
- Frontend 617 прошло. Проверены типизация, runtime-настройки, сборка Front и ZIP 2.6.0. Панель проверена в обеих темах в Chromium.
- Сквозной локальный прогон в Chromium через NATS WebSocket проверил порядок от
widget_stage doneдо WebM/Opus. Получен один текст, выполнен один синтез, воспроизведение началось до завершения синтеза,endedдошёл до Gateway. Вместо Fish в этом прогоне использовался тестовый звук. Микрофонные callbacks проверены синтетически. - Отдельно проверены ранняя выдача WebM настоящим FFmpeg, адресность, повтор финального события, пропуск блока, отмена и задержка освобождения CPU-слота.
- Тест неподвижного плеера подтвердил 4 запроса позиции за 8 секунд против 32 при прежнем интервале. Это измерение числа запросов, задержку речи оно не измеряет.
- На закреплённом Fish с Torch 2.10 CPU воспроизведён сбой старого
prompt_tokens. Новый вход проходит проверку и доходит до подготовки модели. Заголовки закреплённых весов проверены, переразбиение проверено на тензорах через Safetensors.
Поставка
- Все пять штатных проверок, сборка CPU-образа, Trivy и публикация успешно завершены для
a619fa19. Registry и Docker подтвердилиsha256:7d18a14777dde91cfd7acfb8fed937b074308c6b8d9678c4b23741b9b1c7ebb8. Pipeline 5908. - Chat Agent main
d7b849f6. rag-stack mainfc8b307a. Оба MR объединены после проверок и подтверждения digest. - Две штатные попытки скачать образ на H100 остановились на HEAD манифеста с
proxyconnect tcp 72.56.73.217:1195: i/o timeout. До скачивания слоёв и запуска CPU-пилота дело не дошло. Пик RAM, качество BF16/FP32 и задержка Fish на H100 не измерены. Первая попытка, повтор. - Пакет 2.6.0 собран локально, SHA-256
ab82c90e21bed32a38b5c8fb39100380d132884199aeeb4e3dcdc0a8d9b5af9f. ZIP и локальная панель проверены. Пользовательский Chrome ещё не обновлён.
Повторная загрузка Fish через GitLab
- Ещё один штатный pull на H100 завершился тем же тайм-аутом прокси. Применена схема резервной загрузки, использованная для ASR. Runner скачал OCI-слои из registry и передал образ на H100 по существующему SSH. Повтор pull, MR !8.
rag-stackmain1a11c704. Preload завершился успешно. Docker на H100 подтвердилsha256:7d18a14777dde91cfd7acfb8fed937b074308c6b8d9678c4b23741b9b1c7ebb8, ревизиюa619fa19d2a4db3dfed473758c32d44f3811997cиlinux/amd64. Job 31241.- Эталонный WAV сгенерирован на CPU. SHA-256 его манифеста
7fccfdddc1933d211b4198cc24d7ef20fd39f87d44fa6a0922d7992fcfa55587. Загрузка WAV как GitLab-артефакта упала на DNS дляgitlab, поэтому запись не прослушана. Job 31242. - В первых четырёх BF16-прогонах первый PCM получен через 11,815, 16,146, 18,221 и 32,614 с после начала синтеза. RTF составил 5,92, 5,70, 6,13 и 6,38. Уже первые фразы превышают целевые пределы 2,5 с и 0,8. Это время CPU-синтеза, без браузерного буфера. На момент фиксации полный BF16-прогон продолжается, FP32 и production-путь не проверены. Job 31243.