# Результат корпоративного cleanup — 29.10.2026

Изменения реализованы в шести изолированных ветках `fix/corporate-cleanup-20261029`.
Созданы Draft MR. Main/master, production и основная пользовательская копия не менялись.
Поставка не объявляется завершённой: состояние CI приведено отдельно ниже.

## Исходники

| Репозиторий | SHA | Строки | MR |
|---|---|---:|---|
| webrtc-komaroff | `6d48c68a21` | +54 / −241 | [!22](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/merge_requests/22>) |
| py_faster_whisper | `1b72c6d3c6` | +414 / −1203 | [!7](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/merge_requests/7>) |
| rag-stack | `93bee3fea0` | +84 / −192 | [!1](<https://git.giscloud.ru/ai-assistant/deployments/rag-stack/-/merge_requests/1>) |
| helpers | `30c1ddc3d2` | +124 / −48 | [!1](<https://git.giscloud.ru/voice-chat/helpers/-/merge_requests/1>) |
| n8n | `ac2ac43729` | +506 / −629 | [!1](<https://git.giscloud.ru/voice-chat/n8n/-/merge_requests/1>) |
| webrtc-server | `fb5de458d5` | +11 / −0 | [!1](<https://git.giscloud.ru/voice-chat/webrtc-server/-/merge_requests/1>) |

Всего: **+1193 / −2313**, итоговое сокращение **1120 строк**. Включены тесты и документация.

Проверка `git blame -w -M -C -C` относительно исходных SHA не обнаружила изменений
чужих строк. Проверены 70 ранее существовавших файлов; новые файлы перечислены в diff.
Секреты не удалялись и не ротировались. В GitLab ASR добавлены protected `CI_*`
ссылки на прежние variables, чтобы стандартный job передавал их контейнеру;
новые значения секретов не создавались. CW не изменялся.

## Что изменено

- **ASR:** один build manifest, локальная конфигурация отдельно, стандартный
  `build-labels → Bake`. Проверяемые pinned code-only ветки worker/LinTO и полный
  runtime находятся в их Dockerfiles. Несовместимая база останавливает code-only;
  полный build выбирается явно. Четыре мёртвых модуля (393 строки), старые manifests,
  собственные селекторы и слепые пять повторов deploy удалены. Batch bridge не
  получает старые server VAD/WebSocket параметры. Неиспользуемая публикация
  diarization base убрана; общий base stage остаётся внутри Dockerfile.
- **Chat:** native changed выбирает builds; прежняя матрица оставлена только для
  suites. Сохранены чужие CI gates/phases. Удалены exporter и собственный неверный
  override IID; исправлена версия PostgreSQL build context.
- **RAG:** deadline существующего DeliveryCommand применяется к vLLM-вызовам;
  независимый restart соседа не считается изменением spec. LinTO HTTP и legacy
  STT больше не используют один устаревший default. Dashboard содержит batch-метрики.
- **n8n:** атомарный request claim через существующую таблицу; нет повторного POST
  после неоднозначной ошибки. Одинаковые конкурентные tool calls разделяют Future,
  разные args имеют разные ключи. Клиенты, pool и server task закрываются при ошибке.
  Импортер конечный, с проверкой persisted publication и fingerprint. Нативный CLI
  2.6.3 не регистрирует live webhook, поэтому существующий workaround сохранён.
- **helpers 0.1.1:** исключение записывается один раз; shutdown закрывает только
  собственные SDK providers. Исправлена clean-install dependency aiohttp.
- **webrtc-server:** уточнено назначение TURN; сетевой и runtime код сохранён.

Новые runtime сервисы, таблицы, соединения и универсальные managers не добавлялись.

## Проверки

- ASR bridge: 41 test в собранном Docker image, настоящий NATS; отдельно пять
  worker tests на Python 3.10. Bridge suite выполняется в своём Python 3.11;
  у worker test stage установлен предел 90 секунд. Release helpers:
  32 tests / 100 assertions. Повторные LinTO code releases, already_current,
  timeout и соседние tasks покрыты существующим suite.
- RAG: 12 Ruby tests / 30 assertions.
- helpers: 4 tests с настоящим OpenTelemetry SDK.
- n8n: 6 tests с настоящим PostgreSQL локально и в CI; importer replay и три
  failure cases в image; настоящий CLI 2.6.3 + временная SQLite импортировал
  workflows и пропустил повторный запуск с тем же fingerprint.
- Chat: 7 delivery tests, Ruby publication phases, suite impact matrix; все пять
  обязательных GitLab checks прошли в pipeline 5519.
- Native selection: 18 сценариев на трёх repos, включая generated Bake parsing.
  Docs/helper-only — ноль application builds; Front-only — один Front;
  shared input — пять backend consumers. ASR `src/` остаётся широким context:
  его изменение выбирает семь образов. Это ограничение не скрыто за словом «точный».
- DRS до/после: ASR 16, n8n 6, RAG 18, Chat 12 services. Изменились только старые
  ASR env, завершение importer, image LinTO HTTP и override Front IID.
  Сети, mounts, volumes, GPU и лимиты сохранены.
- Две source-only пробы и изменение runtime проверены на hash guards.
  Это проверка выбора/совместимости исходников, не два GPU rollout.
- GitLab CI lint ASR/n8n: valid, без errors/warnings. Diff/check и повторный
  copy-aware authorship audit пройдены.

## Закрытие пунктов ревью

| Пункт | Реализованный результат в исходниках |
|---|---|
| R04 | Разделены свои image references LinTO HTTP / legacy STT; общий чужой deploy сохранён |
| R05 | ASR/n8n приведены к композиции опубликованных шаблонов; Chat/RAG только в разрешённых строках |
| R07 | Deadline vLLM через существующий helper; сравнение соседей по spec; удалены пять повторов deploy ASR |
| R08 | Стандартный build-labels/Bake; удалены собственные дубли build selection |
| R09 | Один build manifest на repo, локальный runtime отдельно; убран неиспользуемый образ diarization base |
| R10 | Исправлены свои форматы .version и pins gems; удалён уже исправленный upstream monkey patch |
| R11 | Удалены доступные по авторству исторические ветки/aliases; смешанные CI blocks сохранены |
| R13 | Неиспользуемые env/guard нового batch bridge удалены; действующий legacy consumer сохранён |
| R14 | Удалены четыре мёртвых ASR-модуля, 393 строки |
| R15 | Собственный dashboard приведён к batch; в Grafana не импортирован |
| R19 | Удалены свои лишние константы/default; чужие shell/services сохранены |
| R20 | Удалён свой deploy override IID; чужая ошибка Dockerfile остаётся |
| R21 | Полностью не закрыт: собственный отдельный CI обход не добавлялся, общий чужой deploy/rules сохранён |
| R24 | Обновлены свои текущие README/DOCS/knowledge; исторические документы отмечены, generated wiki сохранён |
| R25 | Удалены два неиспользуемых exporter в Chat Agent и n8n |

R01, R02/R03/R06/R16/R17/R18/R22/R23 исключены по запросу. R12 не имеет
участков разрешённого авторства. Дополнительные исправления helpers и n8n
выполнены по EXTRA_REVIEW.md принятого плана.

## Ограничения авторства

R01, R02/R03/R06/R16/R17/R18/R22/R23 исключены согласно решению владельца.
R12 не имеет разрешённых участков. R04/R05/R11/R19/R20/R21 закрыты лишь частично:
чужой общий deploy RAG, CI/gem строки, перенесённые gates Chat, старый RAG service,
Ollama shell и Front Dockerfile IID оставлены. Copy-aware blame обнаружил больше
перенесённых чужих CI строк, чем первоначальная построчная проверка; они сохранены.
Исторический CDI repair не выполнялся и не менялся.

## CI, образы и runtime

CI запускается с `CI_SKIP_PUSH=1` на review branches; production images не публикуются.

| Репозиторий | Фактическая проверка | Итог |
|---|---|---|
| Chat Agent | [5519](<https://git.giscloud.ru/voice-chat/webrtc-komaroff/-/pipelines/5519>) | Все пять checks PASS; application build jobs не запускались |
| ASR | [5557](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/pipelines/5557>) | Все образы собраны, 41 bridge + 5 worker tests PASS; Trivy остановил job на уязвимостях существующей LinTO базы |
| n8n | [5518](<https://git.giscloud.ru/voice-chat/n8n/-/pipelines/5518>) | Оба image и tests собраны; Trivy блокирует текущие vendor dependencies |
| RAG / helpers / webrtc-server | Указанные выше локальные адресные проверки | Production CI/deploy не запускались |

В ASR исправлены ошибки нового build: interpolation имени базового образа,
отсутствовавший tests/__init__.py и ошибочный запуск bridge suite в worker Python 3.10.
Pipeline 5557 проверил `429c9a01c45ea6d9ecebdb3efc3d28836c9d2436`.
Последующий коммит удалил лишнюю публикацию diarization base (потребителей нет)
и уточнил документацию: штатный manifest теперь содержит восемь образов.
Для этого diff повторно прошли native selector/Bake и authorship; повторная
GPU-сборка и тот же заведомо неуспешный vulnerability scan не запускались.

Trivy проверил LinTO первым и остановился: отчёт содержит девять находок ОС
(8 High / 1 Critical) и три Python (1 High / 2 Critical), включая certifi,
filelock и uv. Это не утверждение об отсутствии находок в остальных ASR images:
до них scanner не дошёл. Обновление базы требует отдельной проверки runtime,
поэтому кодовая база LinTO не подменялась ради зелёного CI.
Временная недоступность GitLab устранена вне этой задачи; все коммиты отправлены.
Прежний job 26772 отменён; инфраструктура не перезапускалась.

У n8n сохранённая версия 2.6.3 содержит исправляемые High/Critical уязвимости
в vendor dependencies. Scanner не отключался. Обновление n8n и совместимость
workflows не входят в выполненную проверку; до решения этого блокера поставка
n8n не готова.

Локально private registry вернул 401 для GPU pinned images. В CI существующая
авторизация runner сработала; guards worker/LinTO прошли. Новые registry
credentials не вводились.

Фактический Insight 29.10.2026: legacy STT работает на `0.0.12`; LinTO HTTP —
`ffe2d25a66bd…`, legacy LinTO — `3ee7069d0cbe…`. Эти задачи не перезапускались.
Микрофон, Compare и Monitor в production не прогонялись: новых rollout нет.

Последнее машинное состояние CI: [ci-status.json](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/evidence/ci-status.json>).
Доказательства: [authorship](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/evidence/author-check.json>),
[render diff](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/evidence/render-diff.json>), [build selection](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/evidence/native-selection.json>),
[runtime guards](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/evidence/code-runtime-guards.json>), [CI lint](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/evidence/ci-lint.json>).
