# Слияния и проверка сборок — 29.10.2026

Проверки доведены до конечных статусов. **ASR не прошёл полный CI: job завершилась
часовым тайм-аутом после сборки образов.** Остальные включённые проверки завершены;
n8n исключён пользователем. Точные статусы jobs: [ci-current.json](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/ci-current.json>).
Ниже сборка, публикация и фактический runtime указаны отдельно.

## Исходники

Все шесть MR слиты. Деревья merge-коммитов совпали с подготовленными ветками;
пользовательские рабочие копии не сбрасывались. Подтверждение:
[merge-trees.json](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/merge-trees.json>), [merges.json](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/merges.json>).

| Репозиторий | MR | Merge SHA | Добавлено / удалено |
|---|---|---|---:|
| Chat Agent | [!22](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/22>) | `7fcaecc5f68563224c9bf4819cf80431dae5c37f` | +73 / −269 с исправлением документации |
| ASR | [!7](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/merge_requests/7>) | `ca436b4d7b3b2f2848743b6b04a8c33067798522` | +414 / −1203 |
| rag-stack | [!1](<https://git.giscloud.ru/ai-assistant/deployments/rag-stack/-/merge_requests/1>) | `b98aab1dcf9318d9a527f36e9e560b0cd2c94cef` | +108 / −2339 |
| helpers | [!1](<https://git.giscloud.ru/voice-chat/helpers/-/merge_requests/1>) | `1fecc86395a1ad0bee797b9f2bc0d449ab7437fb` | +142 / −131 |
| n8n | [!1](<https://git.giscloud.ru/voice-chat/n8n/-/merge_requests/1>) | `ced69eeb3db261d4e4ded5a0d3b96073e5645967` | +506 / −629 |
| webrtc-server | [!1](<https://git.giscloud.ru/voice-chat/webrtc-server/-/merge_requests/1>) | `fb7f6a537b2c2e34dff977ccc27afbd7af098f67` | +11 / −0 |

В Chat Agent дополнительно исправлен действующий runbook: удалены инструкции
запуска уже удалённых jobs ASR/rag-stack и добавлены ссылки на текущий процесс.
Коммит `3e201723254ad48e53f6c9fa1eb9e9cca52c4338` находится в `main`.
Изменены только строки komaroff; Repowise обновлён до правки, проверены diff и ссылки.
Приложения и корневой CI этим коммитом не изменены.

Общий результат относительно прежних основных веток: **+1254 / −4571, сокращение
3317 строк**. Подробности: [source-diff-summary.json](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/source-diff-summary.json>).

## Выполненные проверки

### Chat Agent

[Pipeline 5568](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/pipelines/5568>)
прошёл все пять обязательных checks на merge SHA:

| Проверка | Job | Результат | Длительность |
|---|---:|---|---:|
| Python | 26808 | PASS | 128,15 с |
| Browser NATS | 26809 | PASS | 15,16 с |
| Frontend | 26810 | PASS | 48,32 с |
| Ruby | 26811 | PASS | 16,79 с |
| PostgreSQL/NATS integration | 26812 | PASS | 240,80 с |

Фактическое выполнение: Python — 229 passed, 8 subtests passed и 110 skipped;
browser NATS — 3 теста; frontend — 468 тестов в 64 файлах; Ruby — 60 тестов,
389 assertions; integration — 88 тестов с PostgreSQL/NATS. Пропущенные Python
тесты не записаны в число выполненных. Краткие выводы сохранены в
`job-26808-checks-summary.log` … `job-26812-checks-summary.log`.

Первый запуск [26815](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/26815>)
упал: в manual job не был передан обязательный `CI_CHAT_AGENT_POSTGRES_BASE_IMAGE`.
При повторе передан прежний закреплённый base digest из метаданных работающего
образа PostgreSQL; исходники и зависимости для этого не менялись.

[Повторная job 26916](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/26916>)
**PASS, 24,65 с**: собраны и опубликованы три выбранных образа — PostgreSQL 1.0,
Core 10.0 и Audio Ingress 5.0. [Лог публикации](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/job-26916-publication.log>).
Image config IDs соответственно:

- `60ef911edb83dfad829c4dd39692a3f6d5b7a974b0b11b3fb3a784a7a0f4f3d1`;
- `d85e9b9375d25f8ca191604ba327554746b36b2ec4202dd0b05d28b95613113c`;
- `0efaeffff14fe3a695a63bc15989b1c17a33bac5fb14bd19feca23ed097267e4`.

После публикации фактический PostgreSQL обновился на этот image ID, имеет OCI
revision `7fcaecc5f68563224c9bf4819cf80431dae5c37f` и статус `healthy`. Core и
Audio Ingress закреплены на прежних digest и работают на них; их публикация
не объявляется новым rollout.

Read-only preflight прошёл до публикации ([26831](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/26831>),
14,68 с) и после обновления PostgreSQL
([26917](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/jobs/26917>), **17,02 с**).
Он подтвердил готовность Core, Agent, LLM и раздельных NATS-контуров, одну ASR
подписку и два диагностических адаптера. Распознавание реальной речи этим не проверялось.

Документационный follow-up — pipeline 5572: все пять jobs завершены успешно,
но сами suites явно **skipped: unchanged inputs**. Это подтверждает работу отбора,
а не повторное выполнение тестов. В обоих pipeline итог `manual` относится к
оставленным невыбранными ручным операциям.

### ASR

[Job 26859](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/jobs/26859>)
создал все восемь образов: worker, live bridge, file UI, status, LinTO и три
diarization sidecar. 41 тест bridge с настоящим NATS и 5 worker-тестов выполнены
успешно. Image IDs и строки лога: [job-26859-summary.log](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/job-26859-summary.log>).
Это локальные IDs образов на builder, а не доказательство публикации в registry.

После финальных сообщений Bake от 17:44:44 UTC job перестала добавлять вывод.
Точный вызов без доступа к процессам runner не установлен; начало Trivy в свежем
логе не подтверждено. Статус публикации нельзя приравнивать к успешной сборке.
Повторное чтение trace подтвердило завершение всех нумерованных BuildKit-шагов,
включая metadata. По прямому решению пользователя job не отменялась.
[Снимок](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/asr-stall-observation.json>).

Конечный результат: **failed / job_execution_timeout**, 3622,02 с,
18:44:40 UTC. Сообщение runner: execution took longer than 1h0m0s.
Deploy не выполнялся. Начало Trivy и публикация в этой job не подтверждены;
старый Trivy-блокер нельзя выдавать за причину этого тайм-аута.
Точный зависший вызов остаётся неизвестным без диагностики процессов builder.
Повтор без установленной причины не запускался.
[Финальный лог](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/job-26859-final-summary.log>).

### rag-stack

Deployment image пересобран из слитого дерева:
`sha256:5142324baaf6fc50c4e2a53c84a082887627cc36100e6cd3947c10f30661406e`.
В нём повторно проверены шаблон, синтаксис и полные Compose пяти стеков — 36
сервисов. Относительно подготовленной ветки различий конфигурации нет.

Фактический CMD выполнен с подставным dry-stack в контейнере без сети и Docker
socket. Все пять команд получают правильные полные DRS; при успехе exit 0,
при отказе одной команды exit 1. [Результат](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/rag-deploy-command-probe.json>).
Реальный SSH, GPU, MIG/CDI и системные службы проверка не затрагивала.

Полный deploy не запускался: существующий runtime legacy LinTO использует
частный образ, а сохранённая чужая строка DRS — vendor image. Применение всех
стеков могло бы заменить этот работающий сервис. Проверенный build deployment
image не выдаётся за выполненный rollout. Старый pipeline 5567 был skipped.

### helpers

Четыре теста с настоящим OpenTelemetry SDK прошли. Wheel `otel 0.1.1` собран,
проверка зависимостей установленных 59 пакетов прошла. SHA-256 wheel:
`5998011e2add1b1d0ef9d21e1a6717cf02bc8781deccbcc51dd7533de57a3e17`.
Дополнительно этот wheel установлен в новое пустое окружение Python 3.11:
импорт подтверждён из site-packages установленного wheel, все 4 теста прошли,
`uv pip check` подтвердил совместимость 35 установленных пакетов.
[Лог](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/helpers-wheel-acceptance.log>).
В репозитории нет сервиса, Docker build и CI; сборка приложения не требуется.
Существующий consumer pin не менялся.

### n8n и webrtc-server

Пользователь исключил неиспользуемый n8n из дальнейших проверок. Его ожидающий
[pipeline 5570](<https://git.giscloud.ru/voice-chat/n8n/-/pipelines/5570>) отменён
до запуска build/deploy. Ниже сохранены уже полученные локальные результаты;
дальнейшая работа по n8n остановлена.

[webrtc-server 26863](<https://git.giscloud.ru/voice-chat/webrtc-server/-/jobs/26863>)
завершён **PASS за 9,22 с**. Штатный CI также подтвердил `services: {}`:
изменение README не требует application rebuild.
[Лог](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/job-26863-verification.log>).

Пока CI ожидает runner, оба образа n8n собраны локально из merge SHA через
существующий Compose/Bake, без публикации. Сборка заняла 6,18 с с кэшем;
тестовые слои переиспользованы, это не новый прогон тестов. В готовых образах
отдельно прошли запуск CLI n8n 2.6.3, shell-синтаксис импортера, импорт bridge
и чтение сгенерированной конфигурации. Проверки выполнялись без сети.
[Сборка](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/n8n-local-build-result.json>), [образ](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/n8n-local-build-metadata.json>),
[smoke](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/n8n-image-smoke.json>).

Сборочный образ webrtc-server собран локально за 26,57 с:
`sha256:7ae203f49152f1e5eff028d2ce55c22d30ab227b1e1a77029dc0927ccf66ccc1`.
Его фактический CMD выполнен без сети и Docker socket с предыдущим и текущим
SHA: штатный build-labels выбрал `services: {}`, exit 0. Это подтверждает
отсутствие application rebuild для изменения README.
[Результат](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/webrtc-server-builder-command-result.json>).

В webrtc-server изменён только README. Автоматический общий deploy 26864 отменён
до запуска: эта правка не требует обновления работающего legacy стека/TURN.
Это явная отмена ненужной поставки, а не PASS deployment job.

## Блокеры и runtime

По отдельному решению пользователя обновление баз и зависимостей не включается
в очистку; Trivy не отключается и исключения CVE не добавляются.

- Предыдущая ASR job 26805 остановилась на LinTO: 9 находок ОС (8 High, 1 Critical)
  и 3 Python (1 High, 2 Critical). Scanner не проверил оставшиеся образы после
  первого отказа. Эти результаты не подменяют статус новой job.
- Предыдущая n8n job 26761: 51 находка ОС (48 High, 3 Critical) и 301 находка
  в зависимостях приложения (246 High, 55 Critical). Обновление vendor n8n 2.6.3
  требует отдельной проверки workflows/миграций.
  Повторная локальная проверка свежего runtime-образа дала те же количества
  и exit 1; Python bridge отдельно показал 5 High и exit 1. Проверки завершились
  до исключения n8n пользователем. [Runtime](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/n8n-local-trivy-result.json>),
  [bridge](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/n8n-bridge-trivy-result.json>).
- Свежий Insight показал повторные падения n8n и worker при инициализации БД:
  `connect ECONNREFUSED 178.20.41.87:5432`. Адрес
  `db.webrtc-komaroff.gis-master.ru:5432` записан в DRS с февраля и данной
  очисткой не менялся. Сбой наблюдался до начала нашей сборки n8n.
- Chat Agent Core и Audio Ingress имеют healthy tasks; существующий ASR bridge
  и H100 worker/LinTO работают. Это проверка прежних запущенных образов.
  Повторная проверка около 18:36 UTC: worker и LinTO HTTP — `Up 26 hours (healthy)`,
  bridge — `running`. Зависшая CI-job не остановила эти сервисы.
- ASR Compare запросил повторный Slim Auth. Браузерная транскрипция в этой
  итерации не объявляется проверенной.

Снимок без credentials: [runtime-observations.json](</experiments/voice-ai/archive/v/10/29/chat-agent-build-verification/runtime-observations.json>).
Инфраструктура, PostgreSQL, NATS, runner и конфигурация H100 не менялись.
