# Корпоративные требования: CS, versioned bundle и CW

Сверка выполнена 29.10.2026 без изменения установленного CW и его исходного репозитория.

## Источники и их границы

| Источник | Проверенное состояние | Что он доказывает |
|---|---|---|
| [YouTrack CS](<https://yt.giscloud.ru/articles/CS>), корень CS-A-263 | Индекс статей доступен; текст целевой статьи через браузерный инструмент не извлечён из srcdoc; API-страница блокировалась Chrome | Актуальный текст живой статьи не подтверждён |
| [Versioned corporate bundle](<https://git.giscloud.ru/ai-assistant/services/youtrack-agent/-/tree/3234ebf660472a97291b2d51b1cd527c38fff1f4/docs/codex-kb/codex/skills/corporate-development-context>) | SHA `3234ebf660472a97291b2d51b1cd527c38fff1f4`, 18 Markdown-файлов получены из текущего remote main | Свежая доступная версия нормативного bundle в Git; не доказательство синхронности с живым CS |
| CW source → installed runtime | 23 проверенных файла из 6 применимых skills совпадают побайтово | Локальная установка согласована с локальным источником; это не синхронность с новым bundle |
| StackServiceBase | Официальный gem 0.0.111 скачан и проверен по SHA-256, template source изучен | Содержание опубликованного шаблона; генератор не запускался, Ruby отсутствует |

Старый путь `docs/codex-kb/codex_ru/skills/corporate-development-context` из CW provenance в актуальном main отсутствует. Новый путь — `docs/codex-kb/codex/skills/corporate-development-context`. Это самостоятельная причина устаревания автоматических ссылок.

Локальные исходники CW находятся в `локальный источник Там есть пользовательские незакоммиченные изменения. Полный `cw sync`, pull, overwrite или публикация не выполнялись.

## Что расходится

Из 18 файлов bundle восемь совпали с CW; девять существующих файлов различаются, один новый отсутствует в CW. Полный [diff](#archive-availability), [машинная сверка](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/evidence/cw-bundle-comparison.json>).

| Изменение в доступном bundle | Значение для ревью и будущей синхронизации |
|---|---|
| Новая общая политика корпоративных gems | Актуальность касается SSB, Dry Stack, build-labels и всех мест их использования. Нужны последние **совместимые** версии; сама ревизия не разрешает обновление |
| Новый `technology-versions.md` | Более новая технология сама по себе не означает дефект существующего сервиса. Учитываются поддержка, совместимость и границы задачи |
| Каноническая ветка поставки | На один Swarm stack — одна поставляемая ветка, обычно main. Branch образа и branch stack независимы |
| `.drs` не владеет внутренним lifecycle | Миграции, ожидание БД, bootstrap приложения не должны прятаться в inline shell обычного сервиса; ранее выбранный отдельный release-контур допустим |
| Уточнение `Options name:` | Заданное в композиции имя перекрывает CLI `--name`; второй флаг не создаёт автоматически изолированное окружение |
| Имена/порядок volumes | Переименование stack/service и перестановка анонимных mount-элементов могут сменить физический volume; данные не мигрируют автоматически |
| Обновление gems не равно изменению build-контракта | Можно актуализировать совместимую версию, сохранив корпоративную цепочку. Изменение её команд/registry/публикации — отдельное решение |
| Runtime review ограничен задачей | Source/config review не требует автоматически запуска образа или проверки всего Swarm; неизвестное runtime нужно явно указать |
| Исправлены относительные ссылки Dry Stack | В CW `dry-stack.md` ссылается на отсутствующий `monitorsoft-dry-stack-dsl.md`; bundle ссылается на существующий `dry-stack-dsl.md` |
| Уточнён Ruby schema lifecycle | Backend готовит прикладную схему повторяемо и безопасно для предусмотренной параллельности; SSB сам проектные migrations не запускает |

Нельзя побайтово заменить CW bundle-версией: CW имеет корректные локальные имена skills с префиксом `monitorsoft-`, provenance и проектные уточнения. Часть удалённых из bundle примеров является локальным историческим evidence, а не устаревшей нормой. При синхронизации следует перенести нормативные изменения, сохранить применимые дополнения и исправить ссылки, затем проверить source/runtime parity.

Правило пользователя KISS/DRY уже находится в `monitorsoft-microservice-architecture/SKILL.md`, источник и runtime совпадают. Оно требует сокращать ненужные сущности без деградации и не требует нового общего слоя ради похожих строк. Конфликта с сохранением security/integrity/lifecycle-проверок нет.

## Применённые правила

| ID | Правило | Источник |
|---|---|---|
| N01 | Профиль репозитория выбирается по владельцу: сервис, stack или monorepo; несколько стеков допустимы | [repository-profiles](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/repository-profiles.md>) |
| N02 | Один build-manifest собственных образов, реальные contexts и additional_contexts; локальная runtime-only инфраструктура отдельно | [monorepository-delivery](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/monorepository-delivery.md>) |
| N03 | Сохранить build-labels → Bake и корпоративную публикацию; `.version` — major.minor | [image-build](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/image-build.md>) |
| N04 | Полное желаемое описание stack, одна каноническая ветка, сохранение stateful ресурсов и ownership | [dry-stack-delivery](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/dry-stack-delivery.md>) |
| N05 | Явное имя stack, единый channel своих images, минимальные DRS без лишних defaults и внутреннего bootstrap | [dry-stack-dsl](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/dry-stack-dsl.md>) |
| N06 | Credentials по принятой политике секретов; не выводить чувствительные значения в Git/logs | [dry-stack-delivery, секреты](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/dry-stack-delivery.md>) |
| N07 | Внешний HTTP ingress защищён существующим oauth2-slim; middleware на соседнем path не защищает корень | [http-ingress-auth](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/http-ingress-auth.md>) |
| N08 | Прикладной lifecycle и runtime contract имеют владельца; проверки запуска соразмерны результату задачи | [service-runtime](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/service-runtime.md>), [SSB integration](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/stack-service-base-integration.md>) |
| N09 | Реальные тесты с зависимостями и достоверный exit status; skipped не выдавать за пройденный suite | [service-testing](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/service-testing.md>) |
| N10 | Наблюдаемость: декларация маршрута и наличие dashboard не доказывают приход сигналов | [service-observability](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/service-observability.md>) |
| N11 | Актуальные совместимые corporate gems; обновление остальных технологий по применимому требованию | [bundle SKILL](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/SKILL.md>), [technology-versions](</experiments/voice-ai/archive/v/10/29/chat-agent-corporate-review/sources/corporate-bundle/references/technology-versions.md>) |
| N12 | KISS/DRY, ограниченные очереди/память, прямой data flow, один владелец правил | [установленный skill](#archive-availability) и прямые требования пользователя |

## Опубликованные версии

Проверено прямым чтением официального API RubyGems. Web search/cache показывал более старый SSB, поэтому он не использован как последнее значение.

| Gem | Версия | Публикация UTC | Официальный источник |
|---|---|---|---|
| stack-service-base | 0.0.111 | 28.10.2026 13:19:20 | [RubyGems API](<https://rubygems.org/api/v1/gems/stack-service-base.json>) |
| dry-stack | 0.1.62 | 08.10.2026 14:34:33 | [RubyGems API](<https://rubygems.org/api/v1/gems/dry-stack.json>) |
| build-labels | 0.0.85 | 14.09.2026 15:17:39 | [RubyGems API](<https://rubygems.org/api/v1/gems/build-labels.json>) |

Версии из lockfile/Dockerfile и расхождения указаны в R10 основного отчёта. Совместимость обновлений не подтверждалась тестами, зависимости не изменялись.

## Вердикт по актуализации

Сверка выполнена: установленный CW внутренне согласован, но не содержит всех изменений свежего доступного versioned bundle. Готов конкретный diff для последующей адресной синхронизации. Полную актуализацию «по живой CS» считать завершённой нельзя, поскольку её текст не получен. Нормативный материал и проекты в этом read-only проходе не исправлялись.
