# Очистка исходников komaroff и trizna — 29.10.2026

Изменения закоммичены и отправлены в два существующих Draft MR. Основные ветки,
инфраструктура и production не обновлялись. Это дополнение к
[предыдущей очистке шести репозиториев](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-implementation/REPORT.md>).

| Репозиторий | SHA дополнения | MR | Добавлено / удалено |
|---|---|---|---|
| rag-stack | `f2ad938e808d35b264839a32b8273820998227a7` | [MR !1](<https://git.giscloud.ru/ai-assistant/deployments/rag-stack/-/merge_requests/1>) | +358 / −228 |
| helpers | `88387841d7654fe175c205cdcf3a04db55f24577` | [MR !1](<https://git.giscloud.ru/voice-chat/helpers/-/merge_requests/1>) | +18 / −83 |

## Реализация

- H100: один shell-фрагмент содержит defaults, создание MIG, проверку возможностей
  nvidia-ctk, генерацию CDI и проверку устройств. SSH-установщик включает тот же
  текст в автономный boot-helper. Дополнительных SSH-соединений и `eval` нет.
- Исправлена передача списка CDI-устройств: SSH склеивает аргументы команды,
  поэтому прежняя передача через `$1/$2/$3` разбивала список и подменяла индекс
  GPU и геометрию. Теперь значения передаются как quoted assignments в stdin.
  Пробелы, одинарные/двойные кавычки и shell-подстановки проверены как данные.
- Убраны повторные чтения NVIDIA. При существующей MIG-разметке `nvidia-smi -L`:
  2 → 1 вызов; при создании стандартной геометрии `nvidia-smi ... -lgip`:
  3 → 1. Ошибки этих команд больше не маскируются завершающей командой pipeline.
- Сохранены переменные, defaults, пути установленных файлов, systemd dependency
  Docker, ручной запуск без systemd и best-effort refresh NVIDIA CDI.
- README rag-stack описывает ручное обслуживание вместо неверного утверждения
  об установке boot-helper обычным pipeline.
- README helpers: 93 → 28 строк; назначение otel, потребитель src_core,
  установка и проверка. Код, API, зависимости и версия пакета 0.1.1 не менялись.

Рабочий shell-код: **305 → 193 строки, −112 (−36,7%)**. Документация двух
репозиториев суммарно сокращена на 45 строк. Добавлено 222 строки изолированных
тестов. Полный diff: **+376 / −311**, итог **+65 строк с тестами**.
Сокращение числа NVIDIA-вызовов проверено на fake transport; ускорение реального
H100 не измерялось.

## Проверки

**9 tests PASS, 21,467 с**; вместе с запуском контейнера — 21,927 с.
[Полный вывод](</experiments/voice-ai/archive/v/10/29/chat-agent-trizna-cleanup/h100-tests.log>), [команда и результат](</experiments/voice-ai/archive/v/10/29/chat-agent-trizna-cleanup/h100-tests.json>).

Проверены установка и повторный запуск, готовая и отсутствующая MIG-разметка,
запуск boot-helper с сохранёнными настройками и defaults, отсутствие systemd,
буквальная передача сложных значений, недостающие профиль/устройство/инструменты/
опции, ошибки NVIDIA и systemd, прежняя семантика best-effort refresh.
Сформированный boot-helper прошёл `sh -n` и содержит ровно общий исходный фрагмент.

Сравнение baseline и новой реализации подтвердило одинаковые изменяющие состояние
операции, их порядок, config, systemd unit/drop-in и результат генерации CDI.
Для baseline тестовый SSH сохраняет намеренные границы argv: иначе известная
ошибка передачи не даёт сравнить последующие операции. Исходник baseline не
изменялся. Новая версия проверялась с реальной семантикой SSH — соединением
аргументов через пробел. Исключены из сравнения только удалённые повторные
read-only запросы `nvidia-smi`.

Контейнер: локальный `python:3.10-slim`, image ID
`sha256:0f61d91517f6602b9d99096696845f54ddfe01a52029b4f55fdddb277ebe034a`.
Сеть отключена, capabilities сняты, root filesystem read-only, изменения только
в tmpfs; repository и evidence смонтированы read-only. SSH, NVIDIA и systemd
подменены командами теста. Нет GPU, Docker socket, SSH agent и системных каталогов
хоста. **Ни установщик на H100, ни установленный там boot-helper не запускались.**

Дополнительно PASS: синтаксис обоих shell-файлов, Python AST, ссылки README,
`git diff --check`, copy-aware аудит авторства. Изменены только строки
`[адрес скрыт]` и `[адрес скрыт]`.
[Аудит и SHA-256 неизменённых контрактов](</experiments/voice-ai/archive/v/10/29/chat-agent-trizna-cleanup/source-audit.json>): 10 файлов RAG и
5 файлов пакета otel, включая CI, DRS и Dockerfiles, совпадают с исходной базой.
Незатронутые SDK tests повторно не запускались. Индексы Repowise обновлены.

## CI и границы поставки

GitLab подтвердил новые SHA и обновлённые описания двух MR:
[снимок MR](</experiments/voice-ai/archive/v/10/29/chat-agent-trizna-cleanup/merge-requests-after.json>).

- RAG pipelines 5561 / 5563: `skipped`.
- helpers pipelines 5562 / 5564: `skipped`.

Отправка выполнена с `ci.skip`: это пропуск CI, а не PASS suite. Адресные
проверки выполнены локально; application images не собирались и не публиковались.
Слияний, deploy/restart, изменения установленной конфигурации H100 не было.
CI-файлы и DRS относительно начала этой итерации неизменны.

Прежние блокеры остаются отдельными результатами предыдущей итерации:

- [ASR pipeline 5557](<https://git.giscloud.ru/voice-chat/py_faster_whisper/-/pipelines/5557>)
  остановился на Trivy для существующей LinTO базы после build/tests.
- [n8n pipeline 5518](<https://git.giscloud.ru/voice-chat/n8n/-/pipelines/5518>)
  остановился на Trivy для существующих vendor dependencies.

В этой итерации их зависимости не исправлялись и проверки не повторялись.
Ранее исключённый R22 включён только в очистку исходников согласно уточнению
пользователя. Остальные исключения, секреты и код других авторов сохранены.
