diff --git a/NOTES/40_chat_summaries/CHAT_RESUME_2026-09-27_vm_in_pipeline.md b/NOTES/40_chat_summaries/CHAT_RESUME_2026-09-27_vm_in_pipeline.md new file mode 100644 index 0000000..504d2d3 --- /dev/null +++ b/NOTES/40_chat_summaries/CHAT_RESUME_2026-09-27_vm_in_pipeline.md @@ -0,0 +1,248 @@ +# CHAT RESUME — добавляем ВМ в пайплайн (состояние на 2026-09-27) + +> Цель файла: новый чат стартует **без уточняющих вопросов** — здесь всё, что уже сделано, +> что где лежит, что проверено на живых стендах и что решать по ВМ. +> Репозиторий: `/home/naeel/TF/tf_provider`, ветка `master`. +> Remote: `https://gitea.services.ngcloud.ru/terraform/tf_provider.git`. +> Репозиторий примеров: `tf_examples/` (отдельный git) → `https://gitea.services.ngcloud.ru/Nail/tf_examples.git`. + +--- + +## 0. Где что лежит (точки входа) + +| Тема | Путь | +|---|---| +| Предыдущее резюме (freeze/adopt, состояние Штурвала) | `NOTES/40_chat_summaries/CHAT_RESUME_2026-09-25_shturval_freeze_state.md` | +| Разбор диагностики + дизайн «заморозки» | `NOTES/30_analysis/SHTURVAL_DEV00_DIAG_AND_FREEZE_DESIGN_2026-09-24.md` | +| Зависимости сервисов DEV + чек-листы Штурвал/ВМ | `docs/60_strategy/dev_stand_service_dependencies.md` | +| Диаграмма зависимостей + генератор | `docs/diagrams/README.md`, `docs/diagrams/infra_services_flow.mmd`, `render_infra_diagram.py` | +| Страница для пользователя: поведение провайдера | `docs/30_registry/guides/provider-behavior.md` | +| Страница-инструкция пайплайна | `docs/curated/pipeline/vdc_edge_ip_snat.md` | +| Пример в репе примеров | `tf_examples/fullpipe_chain/` (в т.ч. `shturval.tf`) | +| Регламент публикации доков | `DOCS_PIPELINE/README.md`, `TOOLS/scripts/04_build_and_publish_docs.sh`, `scripts/publish-docs.sh` | +| Инструкции «как сделать руками» | `HOW_TO/README.md` (индекс), `HOW_TO/howitwasdone.md`, `HOW_TO/DEVOPS_BUILD_PIPELINE.md` | +| Версии провайдеров по стендам (источник правды) | `VERSIONS.md` | +| Память (репозиторий) | `/memories/repo/shturval-destroy-freeze.md`, `/memories/repo/registry-versions.md` | +| **ВМ: старые материалы** | `docs/20_discovery/vm_service.md`, `vm-ui-verification.md`, `vm_provisioning_failures.md`, `vapp-service.md`, `docs/40_analysis/vm_creation_failure_analysis.md`, `docs/50_history/04_vm_hang_fix_and_500_error.md`, `docs/50_history/12_vm_resource_hardening.md`, `docs/50_history/23_vapp_uid_inconsistency_displayname_resolve_bug.md` | +| **ВМ: старое резюме (ЛЕГАСИ)** | `NOTES/40_chat_summaries/CHAT_RESUME_PLAN_VM.md` — другой репозиторий (`/home/naeel/terra`), ресурс `nubes_vm`, пути неактуальны; только как история | +| **ВМ: спеки услуг** | `generated/dev/resources_yaml/26_vapp.yaml` (услуга 26, vApp), `generated/dev/resources_yaml/28_vc_vm_v3.yaml` (услуга 28, ВМ) | +| Референс от платформы (Cloud Director) | каталог `!/` в корне: `vmware_org.tf`, `vdc.tf`, `network.tf.tmpl` (цепочка ipSpace → providerGateway → providerVdc) | +| Стенды | `DEV_STAND/FullPipe/` (проверенный, аккаунт `tazet@narod.ru`), `DEV_STAND/FPipeGmail/` (аккаунт `tazetdinovn@gmail.com`, организация `kontra`) | + +--- + +## 1. Что уже сделано (только факты, по коммитам) + +**21–24.09 — ресурсы-модификаторы и релизы 2.0.18 → 2.0.23** +- `nubes_vc_org_ip_allocation` (modify `vIPConfigure`) и `nubes_vc_nsxt_snat` (modify `ipSpaceName`, обратный `no-needed`) — генератор + код + тесты (`22cf259`, `80d82a1`, `73a7459`, `4b497e6`, `ba6c4f5`, `1236c59`). +- Ресурс аллокации принимает **имя** организации (резолв в UUID) — `5bd197f`. +- Убран plan-modifier, менявший пользовательское значение (Terraform: planned value must match config) — `807dfde`. + +**24.09 — Штурвал: adopt + «заморозка»** +- Всё про Штурвал собрано в один файл `shturval.tf` (`b8adeb6`); правильный сервис — **150**, не 148 (`1a90c77`, `d98f603`). +- `worker_configuration` — JSON с **camelCase** (`groupName`, `sizingPolicy`, `sizingDisk`, `labelDeck`) — snake_case валит платформу (`72d5771`). +- `adopt_existing_on_create = true` для кластера (`57abb7b`). +- Реализован **третий режим destroy** `keep_on_destroy` → `state_only` для всех instance-ресурсов + предупреждения в Delete (`22c6c83`), релиз **2.0.22** (`c29df21`). +- Конфиг стенда переведён в «заморозку» (`40aef87`): квота IP/SNAT/эдж — `keep_on_destroy = true`, кластер — `suspend_on_destroy = true`, у vDC — `suspend` + adopt. +- Живая проверка `destroy` = заморозка: `5 destroyed`, кластер и vDC → `suspended`, эдж/SNAT/квота не тронуты (`c9d7345`). + +**24.09 — фикс регистра UUID, релиз 2.0.23** +- Adopt suspended-инстанса падал на регистре UUID внутри JSON (`startupConfiguration`: план `2c37fed1-…` против живого `2C37FED1-…`). Добавлены `jsonutil.LowercaseUUIDsInText`, нормализация строк внутри JSON, `JsonNormalize()` приводит UUID-подстроки к lowercase; покрыто тестами (`621280a`), релиз **2.0.23** (`208d97e`, `03fff05`). + +**24–25.09 — документация** +- Новая страница «Как работает провайдер Nubes: поведение и отличия от канонического Terraform» (`aaf87d9`, читаемость `c808a3b`): §1 суть, §2 ресурсы, §3 отличия от Terraform, §4 CRUD, §5 delete/suspend/state_only, **§6 конкретный пайплайн стенда vDC → Edge → IP → SNAT → Штурвал**, §7 регистр UUID, §8 чек-лист DevOps, §9 FAQ, §10 ссылки. +- Страница пайплайна переписана (`f8d6494`): требования, чек-лист услуги 150 (ALB + AVI ≥ 3, внешних IP ≥ 3), проверка результата (адреса API/Ingress), таблица «заморозки» при destroy, полное удаление, состав файлов. +- `provider-behavior.md` добавлена в навигацию `mkdocs.yml` («Руководства → Как работает провайдер (отличия от Terraform)») и связана ссылкой со страницей пайплайна (`8d25de9`). + +**25.09 — стенд второго пользователя `FPipeGmail`** +- Организация `kontra` (аккаунт `tazetdinovn@gmail.com`, компания `naeel_test`, ClientID `WZ03709`), токен — `secrets/dev.token`; в `.tfvars` было закомментировано устаревшее `kontora` (`e20c22e`). +- Имена Штурвала сделаны свои: `shturval-dev1` / `shturval-dev-01` — занятое имя кластера (даже созданное другим пользователем) платформа не принимает (`e72eb75`). +- Проверено на 25.09: `terraform init` (провайдер 2.0.23), `validate` — ок, `plan` = `5 to add, 0 change, 0 destroy`. **apply не запускался** (запускает только пользователь). + +**25.09 — репозиторий примеров `tf_examples`** +- `fullpipe_chain`: добавлен `shturval.tf` (переменные + locals + ресурс, самодостаточно), пин провайдера `2.0.21 → 2.0.23`, флаги «заморозки» как в рабочем стенде (эдж/SNAT/квота `keep_on_destroy = true`, vDC `suspend` + adopt), выводы Штурвала, блок параметров в `terraform.tfvars.example`, переписаны README примера и корневой (`21618a7`); добавлено предупреждение про уникальность имени кластера (`435a685`). +- Всё запушено: последний коммит примеров — `435a685`. + +**26.09 (не в этой сессии, но уже в `master` — чтобы не переспрашивать)** +- Диаграмма зависимостей сервисов: `docs/diagrams/*` (`ea725bd`, `ff38352`, `6791e8f`), генератор `render_infra_diagram.py`, README с инструкцией перегенерации. +- Сверка цепочек зависимостей с YAML + чек-листы Штурвала и ВМ: `docs/60_strategy/dev_stand_service_dependencies.md` (`dc837e8`), перенос артефактов диаграмм + гайд по созданию vApp (`a366f47`). +- Закоммичены бэкапы от 25.09: `TMP/backup_2026-09-25/**` (`4800958`). + +--- + +## 2. Текущее состояние (проверено 2026-09-27) + +**Terraform** +- `DEV_STAND/FullPipe`: `terraform state list` — **пусто**. +- `DEV_STAND/FPipeGmail`: `terraform state list` — **пусто**; при этом конфиг валиден, `plan` = `5 to add` (по состоянию на 25.09). +- Terraform `1.9.5`; `go build ./...` и `go test ./...` — чисто (проверено 25.09). + +**Облако, аккаунт `tazet@narod.ru` (токен `secrets/narodDEV.token`)** + +| Услуга | Имя | UID | Статус | +|---|---|---|---| +| 150 Штурвал | `shturval-dev` | `94627ff4-33a5-48f2-aca1-695741e0b6a2` | `suspended` | +| 21 vDC | `fullpipe-vdc` | `d0937335-276b-475b-baa4-d8e6d16bad51` | `suspended` | +| 22 Edge | `fullpipe-edge` | `2c37fed1-e8f8-4a84-8434-7851c7c8b5d6` | `running`, SNAT `internet-ipv4-v1` | +| 19 Организация | `organ` | `57eeacd1-dc7f-4a52-b903-7e5f7d3c1164` | `running`, `vIPConfigure` = `[{internet-ipv4-v1, count: 3}]` | + +В том же аккаунте лежат ~10 старых `fullpipe-edge` со `isDeleted=true` (история) — не пугаться. + +**Облако, аккаунт `tazetdinovn@gmail.com` (токен `secrets/dev.token`, срок до 2026-12-27)** +- Организация `kontra` (`df5ec5f2-5f5d-4c82-952c-3dffa91c61d3`, услуга 19): `running`, `isTrial`, создана 2026-09-24 08:20, `vIPConfigure` = `count: 3`, realm `sandbox.nubes.ru`. +- Ни vDC, ни эджа, ни Штурвала в этом аккаунте нет. +- ⚠️ Наблюдение (требует уточнения перед работами): `GET /instances?page=1&size=200&isDeleted=false` в этом аккаунте вернул **0** инстансов, хотя `GET /instances/{uid}` по `kontra` работает. 25.09 тот же список отдавал 8 записей. Если понадобится поиск по имени — учитывать этот риск. + +**Провайдер / реестр / доки** +- DEV в реестре: **`2.0.23`** (последняя), пины `2.0.23` в `DEV_STAND/FullPipe/versions.tf`, `DEV_STAND/FPipeGmail/versions.tf`, `tf_examples/fullpipe_chain/versions.tf`, `.terraform.lock.hcl` FullPipe. +- PROD `1.0.0`, TEST `3.0.0` (новая схема: prod `1.*`, dev `2.*`, test `3.*`). +- Доки dev опубликованы (`2.0.23`) и зеркало на ВМ обновлено; живые URL: + - https://tf-docs.nodejsk8s.dev.nubes.ru/nubes-dev/curated/pipeline/vdc_edge_ip_snat/ (в меню: «Проверенные примеры») + - https://tf-docs.nodejsk8s.dev.nubes.ru/nubes-dev/30_registry/guides/provider-behavior/ (в меню: «Руководства») + +**Git** +- Основной репо: `master` = `origin/master` = `e72eb75`; примеры: `435a685` = `origin/master`. +- В истории уже лежат коммиты от 26.09 (диаграммы, чек-листы, бэкапы) — см. §1. + +--- + +## 3. Что делать дальше: **добавляем ВМ в пайплайн** (главная цель нового чата) + +**Целевая цепочка (текущая + ВМ):** +организация (руками в ЛК) → vDC (21) → Edge (22) → внешние IP (modify) → SNAT (modify) → **[vApp (26) → ВМ (28)]** → Штурвал (150) + +**Подтверждённые факты (сверено с YAML, коммит `dc837e8`)** +- D-06: vApp (26) → Edge (22), параметр `nsxtUid` — vApp использует Edge для сети. +- D-07: vApp (26) → vDC (21), параметр `vdcUid`. +- D-08: ВМ (28) → vApp (26), параметр `vappUid` — ВМ размещается в vApp. +- ВМ можно создавать в **уже существующих** vApp / vDC / Edge — ссылками `vappUid` / `vdcUid` / `nsxtUid`. +- Ресурсы (CPU/RAM/Storage) ВМ: `vmCpu`, `vmRam`, `vmDisk` (доп. диск); квоты выделяются на уровне vDC (21) и услуги ВМ (28). +- Чек-лист создания ВМ (28) по create-параметрам, обязательные: `vappUid`, `vmName`, `vmCpu`, `vmRam`, `accessPortList`, `imageVm`, `userLogin`, `userPublicKey`, `ipSpaceName`. Полный текст — `docs/60_strategy/dev_stand_service_dependencies.md` (§«Чек-лист создания ВМ (28)»). +- Спеки ресурсов: `generated/dev/resources_yaml/26_vapp.yaml`, `28_vc_vm_v3.yaml` (**руками не править** — перезапишет `01_generate_yamls.sh`). +- Имена ресурсов в провайдере: `nubes_vc_vapp`, `nubes_vc_vm_v3` (услуга 148 «Менеджмент Kubernetes Штурвал» — **не** то, что нужно; для кластера только 150). + +**Известные проблемы ВМ (читать до работ)** +- `docs/20_discovery/vm_provisioning_failures.md` — падения на создании, разбор payload Terraform vs ручного запроса. +- `docs/40_analysis/vm_creation_failure_analysis.md`, `docs/50_history/04_vm_hang_fix_and_500_error.md` — зависание на FW и 500 («String[] → GUID»). +- `docs/50_history/12_vm_resource_hardening.md` — правки по надёжности ресурса ВМ. +- `docs/50_history/23_vapp_uid_inconsistency_displayname_resolve_bug.md` — резолв по имени мог вернуть **удалённый** инстанс (лечится фильтром `isDeleted=false`); проверить, что фикс жив в 2.0.23. + +**Что предстоит решить (НЕ выбрано, требует решения пользователя)** +1. Где создавать vApp: в `DEV_STAND/FullPipe` (проверенный стенд, аккаунт `narod`) или отдельным файлом-аналогом `shturval.tf` (например `vm.tf`) — по сложившейся конвенции «всё про сервис в одном файле». +2. Очерёдность: ВМ до Штурвала или после (влияет и на внешние адреса, и на время apply). +3. `imageVm` — откуда брать список образов (в текущих заметках не зафиксировано) → проверять в ЛК/HAR. +4. `ipSpaceName` для ВМ — тот же `internet-ipv4-v1` или другой; хватит ли квоты (сейчас `count = 3`, занято кластером). +5. `userPublicKey` — какой ключ использовать (в репо есть `secrets/id_ed25519.pub`). +6. Режим destroy для vApp и ВМ (есть ли `suspend` у 26/28 — проверить `availableOperations` на живом инстансе перед выбором флагов). +7. Обновить после работ: `docs/curated/pipeline/vdc_edge_ip_snat.md` (или новую страницу), `tf_examples/fullpipe_chain` (файл ВМ + README + выводы), `docs/60_strategy/dev_stand_service_dependencies.md`, диаграмму `docs/diagrams/*` (перегенерировать `render_infra_diagram.py`). + +**Правило порядка (из инструкций ЛК):** платформа строит список ipSpace из состояния `job.vcd.networkProvider` / `providerGateway`, то есть аллокация IP и SNAT идут **после** готовых vDC и Edge; иначе modify падает с «Can't cast Complex Object Type Struct to String». + +--- + +## 4. Факты платформы (проверено, не перепроверять) + +- 1 кластер Штурвала = 1 vDC; vDC удаляется только через **14 дней** после `suspend`. +- Квоту IP нельзя опустить ниже занятых адресов; `suspend` кластера адреса **не** освобождает. +- У Edge операции `suspend` нет вообще: доступны `delete`, `modify`, `reconcile`. +- Доступные операции: организация (19) — `delete`, `suspend`, `resume`, `modify`, `reconcile`, `create_user`, `delete_user`; vDC (21) — `delete`, `modify`, `suspend`, `resume`, `reconcile`; Штурвал (150) — то же + `create_user`, `delete_user`. +- API ЛК (dev): `GET /api/v1/svc/instances/{uid}`; поля: `explainedStatus`, `state.isSuspended`, `state.isDeleted`, `state.params`, `availableOperations`; ошибки операций приходят **в теле** (`isSuccessful=false`, `errorLog`) при HTTP 200/201. +- Обязательные заголовки: браузерный `User-Agent`, `Referer: https://deck-dev.ngcloud.ru/`, `Authorization: Bearer <токен>`; иначе 403. +- Регистр UUID: облако отдаёт один и тот же UUID в разных регистрах → сравнивать **без учёта регистра, в том числе внутри JSON** (учтено в 2.0.23). +- Имя кластера Штурвала должно быть **уникальным**: занятое (даже другим пользователем) не подойдёт; имя услуги и имя кластера — свои у каждого пользователя. +- `plan` не видит существующие объекты: adopt/конфликт проверяются в `Create` (в плане всегда «will be created»). + +--- + +## 5. Шпаргалка: режимы destroy («заморозка») + +| Ресурс | Флаг в стенде | Поведение при destroy | Предупреждение | +|---|---|---|---| +| `nubes_k8s_sthutrval_cluster` | `suspend_on_destroy = true` | `suspend` | «Ресурс заморожен, а не удалён» | +| `nubes_vc_vdc` | `suspend_on_destroy = true` | `suspend` | то же | +| `nubes_vc_nsxt` (эдж) | `keep_on_destroy = true` | не трогается | «Ресурс оставлен как есть, а не удалён» | +| `nubes_vc_nsxt_snat` | `keep_on_destroy = true` | не трогается | «SNAT не выключался» | +| `nubes_vc_org_ip_allocation` | `keep_on_destroy = true` | не трогается | «Аллокация IP не снималась» | + +Приоритет: `keep_on_destroy` > `suspend_on_destroy` > обычное удаление. Дефолты генератора: `suspend_on_destroy = true` (для сервисов с операцией `suspend`), `keep_on_destroy = false`, `adopt_existing_on_create = false`. Обратный ход: `apply` усыновляет объект по имени и делает `resume`. + +--- + +## 6. Релизы и публикация (команды) + +```bash +# Релиз провайдера (dev) +TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev <версия> +# → сам прогоняет 01 (YAML) + 02 (Go/доки), собирает, подписывает, заливает в реестр +# → VERSIONS.md обновить вручную + +# Локальная проверка без релиза +cd provider && go build -o ../TMP/devbin/terraform-provider-nubes . +TF_CLI_CONFIG_FILE=TMP/terraformrc.dev terraform validate|plan # dev_overrides + +# Документация: собрать и залить в S3 +TOOLS/scripts/04_build_and_publish_docs.sh --profile TOOLS/config/dev 2.0.23 +# ⚠️ версию передавать АРГУМЕНТОМ: в TOOLS/config/dev/profile.env всё ещё VERSION="2.0.17" +# docker недоступен → сборка идёт локальным mkdocs 1.6.1 + mkdocs-material + +# Довезти до домена (сейчас обязательно руками: с ВМ нет маршрута до S3) +tar -C site -cf - . | ssh vps 'rm -rf ~/tmp-docs-site && mkdir -p ~/tmp-docs-site && tar -C ~/tmp-docs-site -xf -' +ssh vps 'rsync -a --delete ~/tmp-docs-site/ /var/www/tf-docs/nubes-dev/' +# vps = naeel@5.172.178.213 (алиас в ~/.ssh/config, ключ ~/.ssh/naeel_vm_id_ed25519) +# путь из secrets/HOW_TO_SSH.md устарел (файла /home/naeel/remote_dev/... нет) + +# Примеры +cd tf_examples && git add -A && git commit -m "..." && git push origin master +``` + +Проверка доков: `curl -s -o /dev/null -w "%{http_code}" ` — должно быть 200; содержимое локальной сборки лежит в `site/` (каталог в `.gitignore`). + +--- + +## 7. Правила работы (не нарушать) + +- `terraform apply` и `destroy` — **только пользователь**. Мне доступны `init/plan/validate/show/state list/state show`. +- Никаких правок, коммитов, релизов и публикаций без прямой команды; команда непонятна — **спросить, не гадать**. +- После каждой правки — коммит с осмысленным сообщением; перед правкой важных файлов — бэкап в `TMP/backup_<дата>/`. +- Секреты (`terraform.tfvars`, токены) **не печатать** в терминал и не коммитить (`*.tfvars` в `.gitignore`); сравнивать по хешу/маскировать. +- Не расширять область задач (scope creep), не «улучшать» соседние стенды и репозитории. +- Не зацикливаться: два вызова инструмента с близкими аргументами без результата — стоп и доклад. +- Проверка примера — на копии в `/tmp`, не в `tf_examples/` (там нет gitignore для `.terraform/`, служебные файлы уехали бы в публичный репозиторий). + +--- + +## 8. Быстрые команды + +```bash +# состояние стендов +cd DEV_STAND/FullPipe && terraform state list && terraform plan +cd DEV_STAND/FPipeGmail && terraform state list && terraform plan + +# кластер (когда running) +kubectl config current-context # tazet@narod.ru@shturval-dev-00 +kubectl get nodes +kubectl get pods -A | grep -v -E "Running|Completed" + +# API ЛК (dev), народ-аккаунт +TOK=$(tr -d '\n' < secrets/narodDEV.token) +curl -s -H "Authorization: Bearer $TOK" \ + -H "User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36" \ + -H 'Referer: https://deck-dev.ngcloud.ru/' \ + 'https://lk-api-gateway-dev.ngcloud.ru/api/v1/svc/instances?page=1&size=200' + +# реестр провайдера (dev) +curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes-dev/nubes/versions + +# услуги каталога: 19 орга, 21 vDC, 22 Edge/SNAT, 26 vApp, 28 ВМ, 150 Штурвал, 148 — не то +``` + +--- + +## 9. Открытые вопросы и техдолги + +1. Ref-параметр **внутри JSON** не валидируется при adopt — `provider/internal/resources_core/ref_validation.go`. +2. Регистр ключей в `lookupLiveParam` — `provider/internal/core/operation_cfs.go:38` (в прежних заметках был указан неверный файл); нужна живая проверка. +3. Тикеты в платформу: TTL/очистка Failed-подов установщика Штурвала (порядок установки компонентов до готовности Cilium); у Edge нет операции `suspend`. +4. `TOOLS/config/dev/profile.env`: `VERSION="2.0.17"` — конфиг отстаёт от реестра (`2.0.23`); правка конфига без команды не делалась. +5. Аномалия списка инстансов в аккаунте `tazetdinovn@gmail.com` (0 записей при работающем GET по uid) — разобраться перед работами по FPipeGmail/ВМ. +6. `DEV_STAND/FPipeGmail` — применять или нет (сейчас `plan` = 5 ресурсов, `state` пуст) — решение за пользователем. diff --git a/NOTES/40_chat_summaries/README.md b/NOTES/40_chat_summaries/README.md index e3c8031..0db2e18 100644 --- a/NOTES/40_chat_summaries/README.md +++ b/NOTES/40_chat_summaries/README.md @@ -7,7 +7,10 @@ | Файл | Тема | Статус | |---|---|---| -| `CHAT_RESUME_IAC_2026-09-24.md` | **Текущая линия: IaC + `modify` (Штурвал).** Задача, позиции участников (Георгий/Дмитрий/Виталий), 10 подтверждённых фактов, почему не работает простое, каноничное решение, развилка A–E, **исправленные ошибки**, карта файлов, открытые вопросы | ✅ **Актуально — начинать отсюда** | +| `CHAT_RESUME_2026-09-27_vm_in_pipeline.md` | **Актуальная линия: добавляем ВМ (услуги 26 vApp + 28 ВМ) в пайплайн.** Всё сделанное (freeze/adopt, 2.0.19→2.0.23, пример, доки), состояние стендов и облака на 27.09, точки входа по ВМ, известные проблемы, развилки | ✅ **Актуально — начинать отсюда** | +| `CHAT_RESUME_2026-09-25_shturval_freeze_state.md` | Состояние Штурвал/freeze на 25.09: диагностика стенда, режимы destroy, релиз 2.0.23, схема публикаций | ⚠️ История (всё вошло в резюме от 27.09) | +| `CHAT_RESUME_2026-09-24_shturval_freeze.md` | Adopt кластера + дизайн freeze-on-destroy | ⚠️ История | +| `CHAT_RESUME_IAC_2026-09-24.md` | Линия IaC + `modify` (Штурвал): факты, развилка A–E, карта файлов | ⚠️ История | | `CHAT_RESUME_2026-09-22.md` | Предыдущая сессия (дата в имени) | ⚠️ История | | `CHAT_RESUME_2026-09-21.md` | Предыдущая сессия | ⚠️ История | | `CHAT_RESUME_2026-09-20.md` | Предыдущая сессия | ⚠️ История | @@ -17,8 +20,8 @@ ## Как пользоваться -1. Открыть `CHAT_RESUME_IAC_2026-09-24.md` — это сводка всей линии по IaC. -2. Внутри него есть ссылки на детальные документы (`../30_analysis/*`, `../20_prompts/*`). +1. Открыть `CHAT_RESUME_2026-09-27_vm_in_pipeline.md` — это сводка всей текущей линии (и всё, что уже сделано ранее). +2. Внутри него есть ссылки на детальные документы (`../30_analysis/*`, `../10_plans/*`, `../20_prompts/*`). 3. Устаревшие рестюме **не удалять** — они фиксируют состояние на свою дату (полезно для хронологии). ## Важно про даты