refactor: разложить рабочие материалы по NOTES/ и HOW_TO/, корневой README — карта проекта
- NOTES/: 10_plans, 20_prompts, 30_analysis, 40_chat_summaries, 60_reference + README в каждой папке - HOW_TO/: все общие инструкции (сборка/заливка, DevOps-ранбук, добавление сервиса, миграция, генерация доков) + индекс «что нужно -> какой файл» - новый README.md: карта проекта, пайплайн, стенды, реестр, запреты/грабли - HOWTO-UPLOAD.md: исправлена легаси-схема версий (prod=1.*, dev=2.*, test=3.*) - DEVOPS_BUILD_PIPELINE.md: пути скриптов -> TOOLS/scripts, universal_rebuild/main.go -> provider/main.go - howitwasdone.md / MIGRATION_PLAN_FOR_AGENT.md: пометки о соответствии старых путей - внутри перенесённых файлов обновлены ссылки на новые пути
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
# DevOps Runbook: Provider Build Pipeline
|
||||
|
||||
This repo root contains the 4 scripts for the full provider build pipeline.
|
||||
> Перенесено из корневого `README.md` 2026-09-24 (в корне теперь — карта проекта).
|
||||
> Пути и версии в тексте приведены к текущему состоянию репозитория.
|
||||
|
||||
Пайплайн сборки провайдера. Скрипты живут в `TOOLS/scripts/` (НЕ в корне репозитория).
|
||||
|
||||
## Overview
|
||||
|
||||
@@ -12,7 +15,7 @@ This repo root contains the 4 scripts for the full provider build pipeline.
|
||||
## Documentation publishing instructions
|
||||
|
||||
The verified documentation generation and publishing pipeline is documented in
|
||||
[`HISTORY/2026-09-03_docs_upload_pipeline_verified.md`](HISTORY/2026-09-03_docs_upload_pipeline_verified.md).
|
||||
[`../HISTORY/2026-09-03_docs_upload_pipeline_verified.md`](../HISTORY/2026-09-03_docs_upload_pipeline_verified.md).
|
||||
It covers the generated docs source, MkDocs build, the separate documentation
|
||||
S3 bucket, VM upload and mirror steps, stand-specific URLs, and the legacy
|
||||
script that must not be used.
|
||||
@@ -39,10 +42,10 @@ Provider naming defaults:
|
||||
|
||||
## Step 1: Generate YAMLs from API
|
||||
|
||||
Script: `01_generate_yamls.sh`
|
||||
Script: `TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/<стенд>`
|
||||
|
||||
Input list of services:
|
||||
- `services_list.txt` (service_id only)
|
||||
- `TOOLS/config/services_list.txt` (service_id only)
|
||||
|
||||
Token options:
|
||||
- `TOKEN_FILE=/home/naeel/terra/HH-MM-SS.token`, or
|
||||
@@ -51,7 +54,7 @@ Token options:
|
||||
Example:
|
||||
```bash
|
||||
export TOKEN_FILE=/home/naeel/terra/08-33-41.token
|
||||
./01_generate_yamls.sh
|
||||
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev
|
||||
```
|
||||
|
||||
## Step 2: Generate Go resources and docs
|
||||
@@ -83,7 +86,7 @@ Example:
|
||||
export S3_ENDPOINT=https://s3.msk-1.ngcloud.ru
|
||||
export S3_ACCESS_KEY=...
|
||||
export S3_SECRET_KEY=...
|
||||
./03_build_and_upload_provider.sh 2.0.2
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
|
||||
```
|
||||
|
||||
## Step 4: Build and publish docs
|
||||
@@ -95,7 +98,7 @@ Example:
|
||||
export S3_ENDPOINT=https://s3.msk-1.ngcloud.ru
|
||||
export S3_ACCESS_KEY=...
|
||||
export S3_SECRET_KEY=...
|
||||
./04_build_and_publish_docs.sh 2.0.2
|
||||
./TOOLS/scripts/04_build_and_publish_docs.sh --profile TOOLS/config/dev 2.0.18
|
||||
```
|
||||
|
||||
## Notes
|
||||
@@ -103,8 +106,8 @@ export S3_SECRET_KEY=...
|
||||
- The GPG private key must remain stable across releases. Do not regenerate per build.
|
||||
- If the key is regenerated, the registry server must be updated to serve the new public key.
|
||||
- Terraform will fail with `authentication signature from unknown issuer` if the registry public key does not match the signing key.
|
||||
- `services_list.txt` is the source of truth for which services are generated.
|
||||
- If the provider version changes, update `universal_rebuild/main.go`.
|
||||
- `TOOLS/config/services_list.txt` — источник правды по тому, какие сервисы генерируются.
|
||||
- Если меняется версия провайдера — обновить `provider/main.go` (ранее `universal_rebuild/main.go` — устаревший путь).
|
||||
|
||||
## One-time GPG bootstrap (do this once, keep the key stable)
|
||||
|
||||
|
||||
+19
-15
@@ -4,11 +4,15 @@
|
||||
|
||||
**Первая цифра версии жёстко привязана к стенду. НЕ ПУТАТЬ.**
|
||||
|
||||
| Стенд | Namespace | Первая цифра | Профиль |
|
||||
| Стенд | Namespace | Диапазон | Профиль |
|
||||
|---|---|---|---|
|
||||
| **PROD** | `nubes` | `2.*` | `TOOLS/config/prod` |
|
||||
| **DEV** | `nubes-dev` | `3.*` | `TOOLS/config/dev` |
|
||||
| **TEST** | `nubes-test` | `5.*` | `TOOLS/config/test` |
|
||||
| **PROD** | `nubes` | `1.*` | `TOOLS/config/prod` |
|
||||
| **DEV** | `nubes-dev` | `2.*` | `TOOLS/config/dev` |
|
||||
| **TEST** | `nubes-test` | `3.*` | `TOOLS/config/test` |
|
||||
|
||||
> ⛔ ЛЕГАСИ (не использовать): `prod=2.*`, `dev=3.*`, `test=5.*`, `0.0.1`.
|
||||
> Примеры версий ниже в этом файле могут содержать легаси-номера — подставляйте актуальную
|
||||
> из `../VERSIONS.md`.
|
||||
|
||||
## Архитектура конфигурации
|
||||
|
||||
@@ -23,7 +27,7 @@ TOOLS/config/
|
||||
│ NUBES_API_ENDPOINT = ...dev...
|
||||
│ TOKEN_FILE = secrets/dev.token
|
||||
│ NAMESPACE = nubes-dev
|
||||
│ VERSION = 3.x.x
|
||||
│ VERSION = 2.x.x ← актуальную брать из VERSIONS.md
|
||||
│
|
||||
├── test/profile.env
|
||||
└── prod/profile.env
|
||||
@@ -65,7 +69,7 @@ cd ~/tf_provider
|
||||
### Шаг 3 — Собрать и залить в реестр
|
||||
|
||||
```bash
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
|
||||
```
|
||||
|
||||
Компилирует (linux/windows/darwin), подписывает GPG, заливает в S3.
|
||||
@@ -75,7 +79,7 @@ cd ~/tf_provider
|
||||
```bash
|
||||
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev && \
|
||||
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev && \
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
|
||||
```
|
||||
|
||||
## Быстрая заливка (без перегенерации YAML/Go)
|
||||
@@ -83,14 +87,14 @@ cd ~/tf_provider
|
||||
Если YAML'ы и Go-код уже сгенерированы и не менялись — только шаг 3:
|
||||
|
||||
```bash
|
||||
# DEV
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 3.1.13
|
||||
# DEV (2.*)
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
|
||||
|
||||
# TEST
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 5.1.17
|
||||
# TEST (3.*)
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/test 3.0.1
|
||||
|
||||
# PROD
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 2.1.23
|
||||
# PROD (1.*)
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/prod 1.0.1
|
||||
```
|
||||
|
||||
Креды S3 подхватываются из `secrets/.s3cfg_registry`. Или через env:
|
||||
@@ -129,7 +133,7 @@ curl -s https://tf-registry.containerk8s.services.ngcloud.ru/v1/providers/nubes/
|
||||
|
||||
## Актуальные версии
|
||||
|
||||
Файл [`VERSIONS.md`](VERSIONS.md) — единственный источник правды. После каждой заливки — обновить.
|
||||
Файл [`../VERSIONS.md`](../VERSIONS.md) — единственный источник правды. После каждой заливки — обновить.
|
||||
|
||||
## Terraform-конфиг пользователя
|
||||
|
||||
@@ -138,7 +142,7 @@ terraform {
|
||||
required_providers {
|
||||
nubes = {
|
||||
source = "tf-registry.containerk8s.services.ngcloud.ru/nubes-dev/nubes"
|
||||
version = "3.1.13"
|
||||
version = "2.0.18"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# План миграции в Nubes Managed Kubernetes — Инструкции для агента
|
||||
|
||||
> ⚠️ **Пути `universal_rebuild/*` в этом плане — от ПРЕЖНЕЙ раскладки репозитория.** Актуально:
|
||||
> `universal_rebuild/internal/*` → `provider/internal/*`; `universal_rebuild/resources_yaml` →
|
||||
> `generated/<стенд>/resources_yaml`; `universal_rebuild/tools/gen` → `TOOLS/resource-generator`.
|
||||
> Также план писался ДО смены схемы версий: актуально `prod=1.*`, `dev=2.*`, `test=3.*`.
|
||||
> Часть про миграцию `registry.kube5s.ru` → `registry.nubes.ru` — ИСТОРИЧЕСКАЯ: актуальный реестр
|
||||
> `tf-registry.containerk8s.services.ngcloud.ru` (бакет `nubes-terraform-registry`).
|
||||
|
||||
**Создан:** 2026-03-13 (Opus 4.6)
|
||||
**Исполнитель:** Sonnet 4.6
|
||||
**Статус:** Ожидает исполнения
|
||||
@@ -24,7 +31,7 @@ Nubes (nubes.ru) — российский cloud-провайдер, собств
|
||||
**Обязательно прочитать перед работой:**
|
||||
- `REPO_CONTENTS.md` — карта репозитория
|
||||
- `.github/copilot-instructions.md` — правила работы (IMMUTABILITY POLICY)
|
||||
- `docs/CODEBASE_ANALYSIS_AND_ROADMAP.md` — анализ кодовой базы
|
||||
- `NOTES/30_analysis/CODEBASE_ANALYSIS_AND_ROADMAP.md` — анализ кодовой базы
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
# HOW_TO — все инструкции проекта
|
||||
|
||||
Здесь лежат **общие инструкции**: как собрать/залить провайдер, как добавить сервис, как устроены
|
||||
процессы. Отсюда начинать, если нужно что-то «сделать руками».
|
||||
|
||||
> Публикуемая пользовательская документация — в `../docs/` (mkdocs).
|
||||
> Рабочие материалы (планы, промпты, анализы) — в `../NOTES/`.
|
||||
|
||||
---
|
||||
|
||||
## Индекс: что нужно → какой файл
|
||||
|
||||
| Нужно | Файл | Кому |
|
||||
|---|---|---|
|
||||
| **Собрать и залить провайдер** (YAML → Go → бинарник → S3) | [`HOWTO-UPLOAD.md`](HOWTO-UPLOAD.md) | Релиз-инженеру |
|
||||
| **Полный DevOps-ранбук пайплайна** (4 шага: генерация, ресурсы+доки, сборка, публикация доков) + GPG-bootstrap | [`DEVOPS_BUILD_PIPELINE.md`](DEVOPS_BUILD_PIPELINE.md) | DevOps |
|
||||
| **Добавить новый сервис** в провайдер (полный цикл) | [`HOWTO_ADD_NEW_SERVICE.md`](HOWTO_ADD_NEW_SERVICE.md) | Разработчику провайдера |
|
||||
| **Имплементировать новый managed-сервис** (со стороны облака) | [`HOWTO_IMPLEMENT_NEW_CLOUD_SERVICE.md`](HOWTO_IMPLEMENT_NEW_CLOUD_SERVICE.md) | DevOps облака |
|
||||
| **Понять, как всё устроено на практике** (закрытый developer-guide) | [`howitwasdone.md`](howitwasdone.md) | Разработчику провайдера |
|
||||
| **Генерация документации** (архитектура, пайплайн, правила для LLM) | [`LLM_DOCS_GENERATION.md`](LLM_DOCS_GENERATION.md) | Разработчику доков |
|
||||
| **План миграции + runbook реестра** (обновление, откат, troubleshooting, мониторинг) | [`MIGRATION_PLAN_FOR_AGENT.md`](MIGRATION_PLAN_FOR_AGENT.md) | Агенту/инженеру |
|
||||
|
||||
---
|
||||
|
||||
## Короткий путь: собрать и залить (3 шага)
|
||||
|
||||
```bash
|
||||
cd /home/naeel/TF/tf_provider
|
||||
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev
|
||||
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
|
||||
```
|
||||
|
||||
Полные детали, требования, проверка после заливки и структура S3 — в [`HOWTO-UPLOAD.md`](HOWTO-UPLOAD.md).
|
||||
|
||||
## Текущие версии (источник правды)
|
||||
|
||||
[`../VERSIONS.md`](../VERSIONS.md). Схема нумерации: **prod = `1.*`, dev = `2.*`, test = `3.*`**
|
||||
(легаси `prod=2.*`, `dev=3.*`, `test=5.*`, `0.0.1` — НЕ использовать). Обоснование схемы:
|
||||
[`../NOTES/10_plans/PLAN_FLASH_reversion_cleanup.md`](../NOTES/10_plans/PLAN_FLASH_reversion_cleanup.md).
|
||||
|
||||
---
|
||||
|
||||
## Где лежит остальное (чтобы не искать вслепую)
|
||||
|
||||
| Тема | Где |
|
||||
|---|---|
|
||||
| Операционные runbook'и (API-токены, стенды, мониторинг, откат, тестирование, реестр) | `../docs/ops/` |
|
||||
| Внутренние справки/разборы по сборке и архитектуре | `../docs/help/` (напр. `BUILD.md`, `build-and-publish.md`) |
|
||||
| Пайплайн публикации документации | `../DOCS_PIPELINE/README.md`, `../DOCS_PIPELINE/publish-docs.sh` |
|
||||
| Правила генерации кода провайдера (ОБЯЗАТЕЛЬНЫ для генератора) | `../TOOLS/ARCHITECTURE.md` |
|
||||
| Скрипты пайплайна | `../TOOLS/scripts/` |
|
||||
| Конфиги стендов и общий реестр | `../TOOLS/config/` (`registry.env`, `<стенд>/profile.env`, `services_list.txt`) |
|
||||
| Секреты (не коммитить) | `../secrets/` |
|
||||
| Текущая задача по IaC/`modify` | `../NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md` |
|
||||
|
||||
---
|
||||
|
||||
## ⛔ Частые грабли (не наступать)
|
||||
|
||||
- **Не вызывать** устаревшие бинарники `TOOLS/*/bin/` — скрипт `02_*` сам пересобирает генераторы.
|
||||
- **Не путать** схемы версий: только `prod=1.*`, `dev=2.*`, `test=3.*`.
|
||||
- **Не использовать** старый API `index.cfm` и хосты `registry.kube5s.ru` / `deck-api.ngcloud.ru` — закрыты.
|
||||
- **GPG-ключ** подписи не перегенерировать: иначе registry и `terraform init` сломаются
|
||||
(`authentication signature from unknown issuer`).
|
||||
- **S3-бакеты разделены**: бинарники — `nubes-terraform-registry`, документация — `terraform-registry`.
|
||||
@@ -2,6 +2,13 @@
|
||||
<!-- Актуальный API: https://lk-api-gateway.ngcloud.ru/api/v1/svc -->
|
||||
# How It Was Done — Developer Guide (закрытая страница)
|
||||
|
||||
> ⚠️ **Пути в этом документе — от ПРЕЖНЕЙ раскладки репозитория (`universal_rebuild/*`).**
|
||||
> Актуальное соответствие: `universal_rebuild/internal/*` → `provider/internal/*`;
|
||||
> `universal_rebuild/resources_yaml` → `generated/<стенд>/resources_yaml`;
|
||||
> `universal_rebuild/tools/gen` → `TOOLS/resource-generator`;
|
||||
> `universal_rebuild/tools/service_params_gen` → `TOOLS/yaml-generator`.
|
||||
> Смысл описанного сохраняется, но пути в тексте сверять по этому соответствию.
|
||||
|
||||
**Filename & Versioning:** howitwasdone.md / 2026‑02‑04 / Draft v1
|
||||
|
||||
Этот документ — единый технический мануал. Он доступен только по прямой ссылке и не включён в публичную навигацию.
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
> ⛔ **LEGACY / НЕ ИСТОЧНИК ИСТИНЫ (помечено 2026-09-24).**
|
||||
> Этот план относится к отменённому заходу (метки `kind: modifier` в YAML + реестр в `yaml-generator`).
|
||||
> Актуальное состояние и выводы: `docs/CHAT_RESUME_IAC_2026-09-24.md`,
|
||||
> `docs/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md`, `docs/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md`.
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Отменёный заход: доменная логика модификаторов вшивалась в универсальный генератор
|
||||
> (`kind: modifier` в YAML + реестр в `yaml-generator`, `delete_strategy`/`inverse`). Ломало агностичность
|
||||
> провайдера и порождало баги. Файл сохранён ТОЛЬКО как история, не источник истины.
|
||||
> Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# ПЛАН реализации: редизайн ресурсов-модификаторов (kind: modifier)
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
> ⚠️ **ПЕРЕКРЫТ (пометка 2026-09-24). НЕ ИСПОЛЬЗОВАТЬ.**
|
||||
> Версия `0.0.1` объявлена ЛЕГАСИ в `PLAN_FLASH_reversion_cleanup.md`.
|
||||
> Актуальная схема: prod=`1.*`, dev=`2.*`, test=`3.*`.
|
||||
|
||||
# План: перегенерация провайдеров всех стендов (версия 0.0.1)
|
||||
|
||||
> Для Flash. Генерацию выполняет Flash по этому плану. Документацию НЕ трогать.
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# 10_plans — планы работ
|
||||
|
||||
Планы, связанные с версионированием, перегенерацией провайдера и модификаторами.
|
||||
|
||||
## Файлы
|
||||
|
||||
| Файл | О чём | Статус |
|
||||
|---|---|---|
|
||||
| `PLAN_FLASH_reversion_cleanup.md` | Чистка реестра (S3) от легаси-версий + новая схема нумерации: **prod=`1.*`, dev=`2.*`, test=`3.*`**; порядок перегенерации стендов | ✅ Актуально (источник схемы нумерации) |
|
||||
| `PLAN_modifier_redesign.md` | Редизайн «ресурсов-модификаторов» (`kind: modifier`) — шаги 1..10, `delete_strategy`, `idempotency`, `inverse` | ⛔ **Отменённый путь** (баннер в файле): логику вшивали в универсальный генератор |
|
||||
| `PLAN_regenerate_providers_0.0.1.md` | Перегенерация всех стендов версией `0.0.1` | ⚠️ **Перекрыт**: `0.0.1` объявлен легаси в `PLAN_FLASH_reversion_cleanup.md` |
|
||||
|
||||
## Как читать
|
||||
|
||||
- Схема нумерации и порядок заливки — только из `PLAN_FLASH_reversion_cleanup.md`.
|
||||
- `PLAN_modifier_redesign.md` читать **только как историю**: он описывает заход, от которого отказались
|
||||
(метки `kind: modifier` в YAML + реестр в `yaml-generator`). Актуальные выводы по модификаторам —
|
||||
в `../40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
## Не путать
|
||||
|
||||
Отмена `PLAN_modifier_redesign.md` **не означает**, что модификаторы не нужны. Нужны **отдельные
|
||||
tf-ресурсы под `modify`**, но без доменных меток в универсальном YAML — см. хендовер.
|
||||
@@ -0,0 +1,45 @@
|
||||
# 20_prompts — промпты для LLM
|
||||
|
||||
Промпты, которые отправлялись внешним моделям (Opus / Sol / Sonnet / DeepSeek Flash / GPT‑5.2‑Codex).
|
||||
Ответы моделей лежат отдельно — в `../30_analysis/` и `../40_chat_summaries/`.
|
||||
|
||||
> ⛔ = отменённый («ложный») путь, только история. ✅ = актуально.
|
||||
|
||||
## Статус: актуальное
|
||||
|
||||
| Файл | О чём | Статус |
|
||||
|---|---|---|
|
||||
| `prompt_for_opus_iac_shturval_modify.md` | IaC-развёртывание Штурвала: проблема `modify` и скрытых зависимостей (5 вопросов). **Факты внутри исправлены** (vIPConfigure — replace-семантика, а не накопительная) | ✅ Актуально |
|
||||
| `prompt_for_opus_modifier_global_architecture.md` | Как сделать модификаторы **НЕ инвазивным дополнением**: YAML — чистая выгрузка API, модификаторы — не ветка генератора | ✅ Актуальное направление (не реализовано) |
|
||||
| `prompt_for_opus_modifiable_architecture.md` | Простая логика «изменяемости» параметров (CreateOnly vs Modifiable) | ⚠️ Статус не определён |
|
||||
| `prompt_for_opus_review.md` | Код-ревью + оценка архитектуры, 3 задачи roadmap (в т.ч. `vcOrg modify` — динамическая аллокация IP) | ⚠️ Статус не определён; ответ — `../30_analysis/opus_review_answer.md` |
|
||||
|
||||
## Статус: отменённый заход (модификаторы со метками в YAML)
|
||||
|
||||
| Файл | О чём |
|
||||
|---|---|
|
||||
| `prompt_for_opus_modifier_architecture_full.md` ⛔ | Спроектировать с нуля архитектуру `kind: modifier` |
|
||||
| `prompt_for_opus_modifier_architecture_q3.md` ⛔ | Уточнения к архитектуре модификаторов (расхождения с кодом) |
|
||||
| `prompt_for_opus_modifier_null_bug.md` ⛔ | Баг: modify-модификатор сбрасывает create-поля (`needEnableAVI` true→false) |
|
||||
| `prompt_for_opus_modifier_plan_review.md` ⛔ | Ревью плана редизайна модификаторов |
|
||||
| `prompt_for_opus_modifiers_review.md` ⛔ | Код-ревью модификаторов в универсальном провайдере |
|
||||
| `prompt_for_opus_modifier_review_2.md` ⛔ | Ревью `vc_nsxt` / `vc_org` + досылка modify-params через `paramValue` |
|
||||
| `prompt_for_opus_inverse_architecture.md` ⚠️ | Архитектура inverse-отката модификаторов (`delete_params`, `zero_count`, `off_value`). Модель — от отменённого механизма; факты внутри (count=0, `no-needed`) переиспользуются |
|
||||
|
||||
## Промпты по другим темам (не про модификаторы)
|
||||
|
||||
| Файл | О чём |
|
||||
|---|---|
|
||||
| `prompt_for_opus_bugs.md` | Баг: `FindInstanceByDisplayName` не находит существующий инстанс |
|
||||
| `prompt_for_opus_duplicate.md` | subresource duplicate/exist + `state_out` |
|
||||
| `prompt_for_flash_fix_tainted_replace.md` | ТЗ для DeepSeek Flash: убрать create-time проверку существования из `ModifyPlan` |
|
||||
| `prompt_for_sol_dev_generator_bug.md` | Проверка решения бага Dev-генератора |
|
||||
| `prompt_for_sonnet_docs_ux.md` | BRIEF: анализ и рекомендации по документации провайдера (UX) |
|
||||
| `prompt_deepseek_flash.txt` | Роль: технический редактор документации; правила «не менять параметры/типы/ID» |
|
||||
| `gpt5_5.2_codex_universal_provider_prompt.md` | Задачи по `terra`-провайдеру (Codex) |
|
||||
|
||||
## Ответы на эти промпты
|
||||
|
||||
- `../30_analysis/opus_review_answer.md` — ответ на `prompt_for_opus_review.md`
|
||||
- `../30_analysis/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md` — ответ на `prompt_for_opus_iac_shturval_modify.md`
|
||||
- `../HISTORY/OPUS/` и `../HISTORY/SONNET/` — исторические ответы по датам
|
||||
@@ -15,9 +15,9 @@ Constraints:
|
||||
---
|
||||
|
||||
## 2) Файлы для изучения (указать полные пути)
|
||||
- docs/ARCHITECTURE_NEW.md — архитектурный обзор
|
||||
- NOTES/30_analysis/ARCHITECTURE_NEW.md — архитектурный обзор
|
||||
- docs/README.md, docs/index.md — документация / навигация
|
||||
- docs/howitwasdone.md — история решений
|
||||
- NOTES/50_process/howitwasdone.md — история решений
|
||||
- docs/ai_universal_provider_gen.md — процесс генерации провайдера (YAML → Go)
|
||||
- universal_rebuild/tools/gen/main.go — генератор (основная логика)
|
||||
- universal_rebuild/internal/resources_gen/* — примеры сгенерированных ресурсов
|
||||
|
||||
@@ -27,7 +27,7 @@ k8sShturval -> create
|
||||
- Провайдер генерируется из YAML-спеков. Схема tf-ресурса строится ТОЛЬКО из операции `create`.
|
||||
- `vIPConfigure` (array-map-fixed, sub: name/count) есть только в `modify` vc_org (id 207); в `create` (136) его нет.
|
||||
- `ipSpaceName` (string) есть только в `modify` vc_nsxt (id 111); в `create` (10) его нет.
|
||||
- `vIPConfigure` — **не накопительный, а replace-семантика** (подтверждено `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md`): повторный `modify` с тем же `count` не аккумулирует IP (1→1), работает в обе стороны (вверх/вниз/до 0), `count=0` принимается. Значение задаётся целиком, читается из `state.params`.
|
||||
- `vIPConfigure` — **не накопительный, а replace-семантика** (подтверждено `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md`): повторный `modify` с тем же `count` не аккумулирует IP (1→1), работает в обе стороны (вверх/вниз/до 0), `count=0` принимается. Значение задаётся целиком, читается из `state.params`.
|
||||
- `ipSpaceName` выводится из цепочки `providerVdc -> providerGateway -> ipSpace`, которую пользователь не знает. Сейчас платформа «подкладывает» недостающие параметры при создании пустой орги.
|
||||
- Допущение платформы: в организации один T0/провайдер-шлюз. Рост числа T0 отложен.
|
||||
- Платформа в движении: форма ресурсов зависит от новых спеков (ждут, придут сначала в sandbox).
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Отменённый заход (`kind: modifier` в YAML + реестр в генераторе). Сохранён как история.
|
||||
> Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Спроектировать С НУЛЯ архитектуру/логику «ресурсов-модификаторов» (kind: modifier)
|
||||
|
||||
## Цель
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Отменённый заход (`kind: modifier` в YAML + реестр в генераторе). Сохранён как история.
|
||||
> Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Уточнения к архитектуре модификаторов — расхождения с фактическим кодом
|
||||
|
||||
Не принимаю предыдущие ответы за истину. Сверка с реальным кодом выявила расхождения.
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
> ✅ **АКТУАЛЬНОЕ НАПРАВЛЕНИЕ (пометка 2026-09-24), НО ЕЩЁ НЕ РЕАЛИЗОВАНО.**
|
||||
> Требования отсюда действительны: YAML — чистая выгрузка API без доменных меток; модификаторы — НЕ ветка
|
||||
> универсального генератора. Ответ Opus по нему см. в `NOTES/30_analysis/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md`.
|
||||
> Состояние и развилка: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Глобальная архитектура модификаторов: как сделать их НЕ инвазивным дополнением
|
||||
|
||||
ЗАПРЕЩЕНО лезть в файлы репозитория. Отвечай только по тексту. Формат: тезисы, кратко, по пунктам моего вопроса. Без лишнего.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Баг относится к отменённому заходу (`kind: modifier` в YAML + реестр в генераторе).
|
||||
> Сохранён как история. Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Баг: modify-модификатор сбрасывает create-поля в дефолт (needEnableAVI true→false)
|
||||
|
||||
## Симптом
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Ревью плана отменённого захода (`kind: modifier` в YAML + реестр в генераторе).
|
||||
> Сохранён как история. Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Ревью плана реализации: редизайн модификаторов
|
||||
|
||||
Прошу отревьюить план `PLAN_modifier_redesign.md` (10 шагов). Это проект к реализации,
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Ревью реализации отменённого захода (`kind: modifier` в YAML + реестр в генераторе,
|
||||
> досылка modify-params через `paramValue`). Сохранён как история.
|
||||
> Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Ревью: модификаторы vc_nsxt / vc_org + досылка modify-params (Terraform Provider Nubes)
|
||||
|
||||
Ты — ревьюер. Ничего не правь. Прочитай и выдай:
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
> ⛔ **ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО (пометка 2026-09-24). ТАК ДЕЛАТЬ НЕЛЬЗЯ.**
|
||||
> Код-ревью отменённого захода (`kind: modifier` в YAML + реестр в генераторе).
|
||||
> Сохранён как история. Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Код-ревью: модификаторы (kind: modifier) в универсальном провайдере
|
||||
|
||||
## Контекст
|
||||
|
||||
@@ -280,7 +280,7 @@ CSS скрывает обе боковые панели mkdocs:
|
||||
2. **TOOLS/docs-generator/internal/writers/writers.go** — ВСЯ генерация .md (~1000 строк, ключевой файл)
|
||||
3. **TOOLS/docs-generator/main.go** — CLI, флаги, оркестрация
|
||||
4. **TOOLS/scripts/05_generate_docs_llm.py** — LLM-обогащение, SYSTEM_PROMPT
|
||||
5. **docs/LLM_DOCS_GENERATION.md** — архитектурная документация
|
||||
5. **NOTES/50_process/LLM_DOCS_GENERATION.md** — архитектурная документация
|
||||
6. **docs/30_registry/assets/extra.css** — CSS-стили
|
||||
7. **docs/30_registry/javascripts/fix-slash.js** — JS (trailing slash fix)
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
**Анализ от Gemini 3.8 flash.**
|
||||
|
||||
Исследование проведено строго в границах требований [docs/FORENSIC_ANALYSIS_BRIEF_2026-09-23.md](FORENSIC_ANALYSIS_BRIEF_2026-09-23.md).
|
||||
Исследование проведено строго в границах требований [FORENSIC_ANALYSIS_BRIEF_2026-09-23.md](FORENSIC_ANALYSIS_BRIEF_2026-09-23.md).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# Ответ Opus: анализ решения IaC-развёртывания Штурвала (модификаторы + скрытые зависимости)
|
||||
|
||||
**Дата:** 2026-09-23
|
||||
**Связанный промпт:** `docs/prompts/prompt_for_opus_iac_shturval_modify.md`
|
||||
**Связанный анализ:** `docs/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md`
|
||||
**Связанный промпт:** `NOTES/20_prompts/prompt_for_opus_iac_shturval_modify.md`
|
||||
**Связанный анализ:** `NOTES/30_analysis/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md`
|
||||
**Статус:** документирование ответа. Конкретный план НЕ составляется.
|
||||
|
||||
> ⚠️ **ВАЖНАЯ ПОПРАВКА (2026-09-23, позже).** Ответ Опуса ниже строился на НЕВЕРНОЙ посылке «`vIPConfigure` — накопительный API». Это опровергнуто тестом `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md`: `vIPConfigure` ведёт себя как **replace-состояние** — идемпотентно (1→1), работает в обе стороны (вверх/вниз/до 0), `count` читается из `state.params`. Соответственно «блокеры» (a) Read счётчика и (b) адресное освобождение **сняты как ложные**. Остаётся только (c) Read цепочки `providerVdc → providerGateway → ipSpace`. НЕ использовать прежнюю формулировку «накопительный API несовместим с декларативной моделью» как источник истины.
|
||||
> ⚠️ **ВАЖНАЯ ПОПРАВКА (2026-09-23, позже).** Ответ Опуса ниже строился на НЕВЕРНОЙ посылке «`vIPConfigure` — накопительный API». Это опровергнуто тестом `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md`: `vIPConfigure` ведёт себя как **replace-состояние** — идемпотентно (1→1), работает в обе стороны (вверх/вниз/до 0), `count` читается из `state.params`. Соответственно «блокеры» (a) Read счётчика и (b) адресное освобождение **сняты как ложные**. Остаётся только (c) Read цепочки `providerVdc → providerGateway → ipSpace`. НЕ использовать прежнюю формулировку «накопительный API несовместим с декларативной моделью» как источник истины.
|
||||
|
||||
---
|
||||
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
## 4. Спорный/непроверенный момент — РАЗРЕШЁН
|
||||
|
||||
Посылка Опуса «накопительный `vIPConfigure` без Read-счётчика и адресного освобождения несовместим с декларативной моделью» **опровергнута** тестом `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md`:
|
||||
Посылка Опуса «накопительный `vIPConfigure` без Read-счётчика и адресного освобождения несовместим с декларативной моделью» **опровергнута** тестом `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md`:
|
||||
|
||||
- повторный `modify` с тем же `count` не аккумулирует IP (1→1) → идемпотентно;
|
||||
- `count` меняется в обе стороны (2→1→0) через тот же `modify` → «адресное освобождение» не нужно, достаточно задать меньший/нулевой `count`;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
## Опровергнуто
|
||||
|
||||
- Утверждение из `docs/HAR_SNAT_MODIFY_FINDINGS.md` «уменьшить/удалить ipSpace нельзя, пока существуют дочерние инстансы» — **не подтвердилось на здоровой орге** (в HAR был сломанный Edge; это и было помечено как неподтверждённое наблюдение).
|
||||
- Утверждение из `NOTES/30_analysis/HAR_SNAT_MODIFY_FINDINGS.md` «уменьшить/удалить ipSpace нельзя, пока существуют дочерние инстансы» — **не подтвердилось на здоровой орге** (в HAR был сломанный Edge; это и было помечено как неподтверждённое наблюдение).
|
||||
- Опасение из Opus-ревью о «двойном выделении при replace/destroy→apply» — в части повторного `modify` с тем же `count` **не воспроизвелось** (идемпотентно).
|
||||
|
||||
## Открытый вопрос
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
# 30_analysis — анализы, отчёты, разборы
|
||||
|
||||
Фактические материалы: форензика, разборы багов, ответы LLM-ревью, аналитика по кодовой базе.
|
||||
|
||||
> Правило: **факт без источника не факт.** Ниже у каждого файла указано, проверен ли он на стенде.
|
||||
|
||||
## Ядро по задаче «IaC + modify» (актуально)
|
||||
|
||||
| Файл | Что внутри | Статус |
|
||||
|---|---|---|
|
||||
| `SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md` | Анализ: почему `modify` не выражается, прецедент VCD, скрытые зависимости (`providerVdc → providerGateway → ipSpace`), варианты A–E, мнение | ✅ Актуально |
|
||||
| `OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md` | Ответ Opus по промпту IaC **+ поправка**: два его «блокера» (Read счётчика, адресное освобождение) ложны | ✅ Актуально (читать с поправкой в шапке) |
|
||||
| `ORG_IP_MODIFIER_TEST_2026-09-22.md` | **Единственная проверка на живом стенде**: `vIPConfigure` идемпотентен (1→1), работает вверх/вниз/до 0, `count=0` принимается, Read из `state.params` | ✅ Актуально, высокое доверие |
|
||||
|
||||
## Форензика и отладка
|
||||
|
||||
| Файл | Что внутри | Статус |
|
||||
|---|---|---|
|
||||
| `FORENSIC_ANALYSIS_BRIEF_2026-09-23.md` | Бриф: что исследовать в цепочке API → YAML, строгие ограничения (не проектировать решения) | ✅ Актуально как рамка |
|
||||
| `FORENSIC_ANALYSIS_REPORT_2026-09-23.md` | Отчёт по брифу: потерь данных API→YAML нет; теряются динамические `valueList` и HTTP-метаданные | ✅ Актуально |
|
||||
| `HAR_SNAT_MODIFY_FINDINGS.md` | Находки по SNAT/`modify` из HAR. ⚠️ Часть утверждений **опровергнута** тестом 2026-09-22 (см. `ORG_IP_MODIFIER_TEST…`) | ⚠️ Частично устарело |
|
||||
| `DEBUG_REPORT_VC_VDC_500.md` | Разбор ошибки 500 при работе с vc/vdc | ⚠️ Историческое |
|
||||
| `DEBUG_REPORT_VM_FIX.md` | Разбор/фикс проблемы с VM | ⚠️ Историческое |
|
||||
| `inverse_rollback_analysis_2026-09-23.md` | Inverse-откат: `delete_params {Code, Mode, Value, zero_fields, off_value}`, порядок destroy. Модель — от отменённого механизма; факты (`count=0`, `no-needed`) верны | ⚠️ Частично устарело (баннер в файле) |
|
||||
|
||||
## Обзоры кодовой базы и архитектуры
|
||||
|
||||
| Файл | Что внутри | Статус |
|
||||
|---|---|---|
|
||||
| `CODEBASE_ANALYSIS_AND_ROADMAP.md` | Обзор репозитория + roadmap | ⚠️ Проверить актуальность по дате |
|
||||
| `ARCHITECTURE_NEW.md` | «Universal Rebuild»: ядро, генераторы, YAML-спеки. Ссылается на пути `universal_rebuild/*` | ⚠️ Историческое (пути не совпадают с текущим репо) |
|
||||
| `YAML_ANALYSIS_43_SERVICES.md` | Анализ 43 сервисов по YAML-спекам | ⚠️ Проверить актуальность по дате |
|
||||
| `opus_review_answer.md` | Ответ Opus на `prompt_for_opus_review.md` (ревью архитектуры, 3 задачи roadmap) | ⚠️ Историческое |
|
||||
|
||||
## Связанное
|
||||
|
||||
- Сырые данные: `../../HAR/` (дампы live-запросов), `../../generated/<стенд>/resources_yaml/` (спеки).
|
||||
- Хендовер по текущему состоянию: `../40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
@@ -45,7 +45,7 @@ k8sShturval -> create
|
||||
|
||||
### 2.2. Эти параметры — не «настройки», а отложенные действия
|
||||
|
||||
- `vIPConfigure=[{name,count}]` — задаёт желаемое число внешних IP целиком. **Не накопительная** (повторный вызов с тем же `count` не аккумулирует, подтверждено `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md`), работает в обе стороны (вверх/вниз/до `count=0`). Это **декларативное значение** в смысле «желаемое количество IP по данному ipSpace».
|
||||
- `vIPConfigure=[{name,count}]` — задаёт желаемое число внешних IP целиком. **Не накопительная** (повторный вызов с тем же `count` не аккумулирует, подтверждено `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md`), работает в обе стороны (вверх/вниз/до `count=0`). Это **декларативное значение** в смысле «желаемое количество IP по данному ipSpace».
|
||||
- `ipSpaceName` — включение SNAT на конкретный ipSpace, который возникает **только после** того, как на орге выделены IP.
|
||||
- Эти операции требуют порядка (org.modify → затем nsxt.modify) и зависят от живого состояния инстанса, а не от дефолтов формы.
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
> ⚠️ **ЧАСТИЧНО УСТАРЕЛО (пометка 2026-09-24).** Модель `delete_params`/`inverse`/`off_value` относится
|
||||
> к **отменённому** механизму модификаторов (метки в YAML + реестр в генераторе).
|
||||
> Но факты внутри — верны и переиспользуются: `count=0` канонический inverse, порядок destroy,
|
||||
> `ipSpaceName="no-needed"`, `needEnableAVI=false`. Актуально: `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`.
|
||||
|
||||
# Inverse-откат модификаторов: анализ ответа Опуса — 2026-09-23
|
||||
|
||||
Источник: prompt_for_opus_inverse_architecture.md → ответ Опуса (принят, анализ ниже).
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
### 3.1. Что просили у Opus
|
||||
- Проверить только:
|
||||
- `provider/internal/core/client.go`
|
||||
- `docs/DEBUG_REPORT_VC_VDC_500.md`
|
||||
- `NOTES/30_analysis/DEBUG_REPORT_VC_VDC_500.md`
|
||||
- `generated/dev/resources_yaml/21_vc_vdc.yaml`
|
||||
- `generated/dev/resources_yaml/26_vapp.yaml`
|
||||
- `generated/dev/resources_yaml/90_postgres.yaml`
|
||||
|
||||
@@ -61,7 +61,7 @@ k8sShturval -> create
|
||||
Файл: `generated/dev/resources_yaml/22_vc_nsxt.yaml`.
|
||||
4. **`vIPConfigure` — replace-семантика, НЕ накопительная.** Повторный modify с тем же count не задваивает (1→1),
|
||||
работает вверх/вниз/до 0, `count=0` принимается (несмотря на `minvalue:1`), live читается из `state.params`.
|
||||
Источник: `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md` (проверено на стенде DEV_STAND/FullPipe, провайдер 2.0.9).
|
||||
Источник: `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md` (проверено на стенде DEV_STAND/FullPipe, провайдер 2.0.9).
|
||||
5. **`ipSpaceName` — выводимое значение:** цепочка `providerVdc → providerGateway → ipSpace`, юзер его не знает.
|
||||
Платформа сейчас «подкладывает» недостающие параметры при создании пустой орги. Список доступных ipSpace
|
||||
в статической выгрузке (`/instanceOperations/default/{id}`) — пустой, виден только в ЛК/живом инстансе. (Виталий + форензика)
|
||||
@@ -147,25 +147,37 @@ k8sShturval -> create
|
||||
## 8. Карта файлов
|
||||
|
||||
**АКТУАЛЬНО (источник истины):**
|
||||
- `docs/CHAT_RESUME_IAC_2026-09-24.md` ← этот файл
|
||||
- `docs/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md` — анализ, варианты A–E, мнение
|
||||
- `docs/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md` — ответ Opus + поправки (ложные блокеры сняты)
|
||||
- `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md` — проверенные факты по vIPConfigure
|
||||
- `docs/prompts/prompt_for_opus_iac_shturval_modify.md` — промпт (факты исправлены)
|
||||
- `NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md` ← этот файл
|
||||
- `NOTES/30_analysis/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md` — анализ, варианты A–E, мнение
|
||||
- `NOTES/30_analysis/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md` — ответ Opus + поправки (ложные блокеры сняты)
|
||||
- `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md` — проверенные факты по vIPConfigure
|
||||
- `NOTES/20_prompts/prompt_for_opus_iac_shturval_modify.md` — промпт (факты исправлены)
|
||||
- `generated/dev/resources_yaml/19_vc_org.yaml`, `22_vc_nsxt.yaml` — спеки (факты по операциям/параметрам)
|
||||
- `HAR/org_enough_.har`, `HAR/org2.har`, `HAR/edge_.har` — live-семантика modify
|
||||
- `!/` — прецедент Cloud Director (3 файла `vcd_*`), НЕ наш код
|
||||
|
||||
**LEGACY (история, НЕ источник истины):**
|
||||
- `PLAN_modifier_redesign.md` ⛔ (баннер добавлен)
|
||||
- `docs/60_strategy/modifier_resources_ideology_and_specification.md` ⛔ (баннер добавлен)
|
||||
- `docs/inverse_rollback_analysis_2026-09-23.md`
|
||||
- `prompt_for_opus_modifier_global_architecture.md`, `prompt_for_opus_modifier_review_2.md` (корень)
|
||||
- `docs/prompts/prompt_for_opus_modifier_*.md`, `docs/prompts/prompt_for_opus_modifiable_architecture.md`
|
||||
- `HISTORY/OPUS/2026-09-22_modifier_*.md`
|
||||
- `PLAN_regenerate_providers_0.0.1.md` — перекрыт `PLAN_FLASH_reversion_cleanup.md` (0.0.1 объявлен легаси)
|
||||
**LEGACY — с баннерами (НЕ источник истины, файлы сохранены для истории):**
|
||||
|
||||
> Примечание: `docs/ORG_IP_MODIFIER_TEST_2026-09-22.md` — **актуален** (это отчёт по проверке, не план).
|
||||
⛔ «ЛОЖНЫЙ ПУТЬ — ОТМЕНЕНО. ТАК ДЕЛАТЬ НЕЛЬЗЯ» (метки `kind: modifier` в YAML + реестр в `yaml-generator`):
|
||||
- `PLAN_modifier_redesign.md`
|
||||
- `docs/60_strategy/modifier_resources_ideology_and_specification.md`
|
||||
- `NOTES/20_prompts/prompt_for_opus_modifier_architecture_full.md`, `…_architecture_q3.md`, `…_modifier_null_bug.md`, `…_modifier_plan_review.md`, `…_modifiers_review.md`
|
||||
- `NOTES/20_prompts/prompt_for_opus_modifier_review_2.md`
|
||||
- `HISTORY/OPUS/2026-09-22_modifier_architecture_project.md`, `…_modifier_null_reset_bug.md`, `…_modifier_plan_review.md`, `…_modifiers_code_review.md`
|
||||
|
||||
⚠️ «ЧАСТИЧНО УСТАРЕЛО» (модель отменённого механизма; факты внутри верны и переиспользуются):
|
||||
- `NOTES/30_analysis/inverse_rollback_analysis_2026-09-23.md`
|
||||
|
||||
✅ «АКТУАЛЬНОЕ НАПРАВЛЕНИЕ, НО НЕ РЕАЛИЗОВАНО»:
|
||||
- `NOTES/20_prompts/prompt_for_opus_modifier_global_architecture.md` (требования: YAML без доменных меток; модификаторы — не ветка генератора)
|
||||
|
||||
⚠️ «ПЕРЕКРЫТ»:
|
||||
- `PLAN_regenerate_providers_0.0.1.md` — версия `0.0.1` объявлена легаси в `PLAN_FLASH_reversion_cleanup.md`
|
||||
|
||||
**Статус не определён (не трогал):**
|
||||
- `NOTES/20_prompts/prompt_for_opus_modifiable_architecture.md` (тема: CreateOnly vs Modifiable — не относится напрямую к отменённому заходу)
|
||||
|
||||
> Примечание: `NOTES/30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md` — **актуален** (отчёт по проверке, не план).
|
||||
|
||||
**Инфра-контекст:**
|
||||
- `TOOLS/config/<стенд>/profile.env` → `NUBES_API_ENDPOINT`, `TOKEN_FILE`
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
# 40_chat_summaries — выжимки и хендоверы из чатов
|
||||
|
||||
Резюме длинных сессий: чтобы новый чат/человек вошёл в контекст, не перечитывая переписку.
|
||||
Формат — по конвенции репозитория: `CHAT_RESUME_<тема>_<дата>.md`.
|
||||
|
||||
## Файлы
|
||||
|
||||
| Файл | Тема | Статус |
|
||||
|---|---|---|
|
||||
| `CHAT_RESUME_IAC_2026-09-24.md` | **Текущая линия: IaC + `modify` (Штурвал).** Задача, позиции участников (Георгий/Дмитрий/Виталий), 10 подтверждённых фактов, почему не работает простое, каноничное решение, развилка A–E, **исправленные ошибки**, карта файлов, открытые вопросы | ✅ **Актуально — начинать отсюда** |
|
||||
| `CHAT_RESUME_2026-09-22.md` | Предыдущая сессия (дата в имени) | ⚠️ История |
|
||||
| `CHAT_RESUME_2026-09-21.md` | Предыдущая сессия | ⚠️ История |
|
||||
| `CHAT_RESUME_2026-09-20.md` | Предыдущая сессия | ⚠️ История |
|
||||
| `CHAT_RESUME_NEW.md` | Хендовер «для нового чата» (без даты — сложно датировать) | ⚠️ Проверить дату перед использованием |
|
||||
| `CHAT_RESUME.md` | Первый/базовый хендовер (без даты) | ⚠️ Проверить дату |
|
||||
| `CHAT_RESUME_PLAN_VM.md` | Хендовер по плану работ на ВМ | ⚠️ Проверить дату |
|
||||
|
||||
## Как пользоваться
|
||||
|
||||
1. Открыть `CHAT_RESUME_IAC_2026-09-24.md` — это сводка всей линии по IaC.
|
||||
2. Внутри него есть ссылки на детальные документы (`../30_analysis/*`, `../20_prompts/*`).
|
||||
3. Устаревшие рестюме **не удалять** — они фиксируют состояние на свою дату (полезно для хронологии).
|
||||
|
||||
## Важно про даты
|
||||
|
||||
Файлы без даты в имени (`CHAT_RESUME.md`, `_NEW`, `_PLAN_VM`) — потенциальный источник путаницы:
|
||||
перед использованием проверьте содержание (даты/версии внутри) на актуальность.
|
||||
@@ -0,0 +1,24 @@
|
||||
# 60_reference — справочные материалы
|
||||
|
||||
Справочники и внешние факты: состояния инстансов, матрицы переходов, списки API, обзор
|
||||
универсального ядра. Это не планы и не анализы — это «шпаргалки».
|
||||
|
||||
## Файлы
|
||||
|
||||
| Файл | Что внутри | Статус |
|
||||
|---|---|---|
|
||||
| `INSTANCE_STATES.md` | Матрица состояний ресурсов в облаке ngcloud | ✅ Справочник |
|
||||
| `STATE_TRANSITIONS.md` | Матрица переходов состояний инстансов ngcloud | ✅ Справочник |
|
||||
| `apis.txt` | Список API. **В самом файле предупреждение:** старые API закрываются, не использовать для генерации; актуальные — `lk-api-gateway*.ngcloud.ru/api/v1/svc` | ⚠️ Читать с учётом шапки файла |
|
||||
| `ai_universal_provider_gen.md` | Подробный отчёт по универсальному ядру и генератору ресурсов | ⚠️ Проверить актуальность (описывает общее устройство) |
|
||||
|
||||
## Где искать более точные данные
|
||||
|
||||
| Нужно | Где |
|
||||
|---|---|
|
||||
| Endpoint + токен стенда | `../../TOOLS/config/<стенд>/profile.env` → `NUBES_API_ENDPOINT`, `TOKEN_FILE` |
|
||||
| Спеки сервисов (операции/параметры/ID) | `../../generated/<стенд>/resources_yaml/<id>_<svc>.yaml` |
|
||||
| Live-ответы API | `../../HAR/*.har` |
|
||||
| Залитые версии провайдера | `../../VERSIONS.md` |
|
||||
| Схема нумерации стендов | `../10_plans/PLAN_FLASH_reversion_cleanup.md` |
|
||||
| Состояния после `modify` (примеры) | `../30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md` |
|
||||
@@ -0,0 +1,67 @@
|
||||
# NOTES — рабочие материалы по провайдеру Nubes
|
||||
|
||||
Здесь лежат **рабочие материалы**: планы, промпты для LLM, анализы, выжимки из чатов, процессные
|
||||
и справочные заметки. Это НЕ публикуемая документация пользователя (та — в `docs/`, собирается mkdocs).
|
||||
|
||||
> **Главное правило:** файлы с баннером ⛔ в первой строке — **отменённый («ложный») путь**.
|
||||
> Читать можно, опираться нельзя.
|
||||
|
||||
---
|
||||
|
||||
## Карта папок
|
||||
|
||||
| Папка | Что внутри | Когда идти туда |
|
||||
|---|---|---|
|
||||
| [`10_plans/`](10_plans/README.md) | Планы работ: актуальные, перекрытые и отменённые | Понять текущие задачи и их статус |
|
||||
| [`20_prompts/`](20_prompts/README.md) | Промпты для LLM (Opus/Sol/Sonnet/DeepSeek/Codex) | Понять, что и у кого спрашивали; переиспользовать формулировки |
|
||||
| [`30_analysis/`](30_analysis/README.md) | Анализы, форензика, отчёты, ответы LLM-ревью, разборы багов | Найти факты и обоснования решений |
|
||||
| [`40_chat_summaries/`](40_chat_summaries/README.md) | Выжимки-хендоверы из чатов (`CHAT_RESUME_*`) | Быстро войти в контекст прошлых сессий |
|
||||
| [`60_reference/`](60_reference/README.md) | Справочники: состояния, стадии, API, архитектурный обзор | Уточнить терминологию и внешние факты |
|
||||
|
||||
> ❗ **Инструкции (сборка/заливка, добавление сервиса, процессы) вынесены из NOTES в корневую папку
|
||||
> [`HOW_TO/`](../HOW_TO/README.md)** — там индекс «что нужно → какой файл».
|
||||
|
||||
---
|
||||
|
||||
## Что осталось в корне и в других местах (НЕ переносилось)
|
||||
|
||||
| Путь | Что это | Почему оставлено |
|
||||
|---|---|---|
|
||||
| `docs/` | Документация + налоговая структура `00_overview … 90_finance`, `curated/`, `TODO/`, `help/`, `ops/` | Завязана на mkdocs (`mkdocs.yml`, `exclude_docs`) — перенос ломает сборку сайта |
|
||||
| `HISTORY/` | Архив: записи по датам, `HISTORY/OPUS/`, `HISTORY/SONNET/` | Это канонический архив истории; отменённый заход помечен баннерами внутри |
|
||||
| `HAR/` | Сырые HAR-дампы (live-запросы к API стенда) | Исходные данные для анализа, менять нельзя |
|
||||
| `generated/` | Выхлоп генераторов (`resources_yaml`, `go`, `docs`, `provider_build`) | Машинный вывод, не заметки |
|
||||
| `TOOLS/`, `provider/`, `scripts/`, `gateway/`, `apps/`, `charts/`, `tf_examples/`, `secrets/` | Код и артефакты проекта | Не заметки |
|
||||
| `! /` | **Прецедент Cloud Director** (`vmware_org.tf`, `vdc.tf`, `network.tf.tmpl`) — чужой tf-код на официальном vcd-провайдере | Оставлено на месте (папка названа «!» специально, чтобы быть на виду) |
|
||||
| `README.md`, `VERSIONS.md`, `mkdocs.yml` | Точки входа | `README.md` — карта всего проекта; `VERSIONS.md` — источник правды по залитым версиям |
|
||||
| `TMP/`, `test_push.md`, `demo.jpg` | Временное/непонятное | Не трогал (статус не определён) |
|
||||
|
||||
---
|
||||
|
||||
## Актуальное состояние (2026-09-24)
|
||||
|
||||
Если нужен контекст по задаче «IaC + модификаторы (modify)», читать в таком порядке:
|
||||
|
||||
1. [`40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`](40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md) — **начинать отсюда**: полный хендовер (задача, факты, позиции участников, развилка, исправленные ошибки).
|
||||
2. [`30_analysis/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md`](30_analysis/SHTURVAL_IAC_MODIFY_ANALYSIS_2026-09-23.md) — анализ проблемы и варианты.
|
||||
3. [`30_analysis/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md`](30_analysis/OPUS_ANSWER_IAC_SHTURVAL_MODIFY_2026-09-23.md) — ответ Opus **с поправками** (часть его «блокеров» ложная).
|
||||
4. [`30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md`](30_analysis/ORG_IP_MODIFIER_TEST_2026-09-22.md) — единственные проверенные на стенде факты.
|
||||
5. [`20_prompts/prompt_for_opus_iac_shturval_modify.md`](20_prompts/prompt_for_opus_iac_shturval_modify.md) — актуальный промпт.
|
||||
|
||||
---
|
||||
|
||||
## Статусы файлов (что можно использовать)
|
||||
|
||||
- ✅ **Актуально** — можно опираться.
|
||||
- ⚠️ **Перекрыто / частично** — использовать осторожно, есть более новый документ.
|
||||
- ⛔ **Отменённый путь** — только как история (баннер в файле).
|
||||
|
||||
Точные статусы по каждому файлу — в README соответствующей папки.
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ Известная проблема: устаревшие ссылки
|
||||
|
||||
Файлы переносились из корня и `docs/`, поэтому **внутри исторических документов могли остаться
|
||||
старые пути** (например `docs/prompts/...` или `docs/CHAT_RESUME_...`). В актуальных документах
|
||||
ссылки обновлены; в архивных — могли не обновляться: ищите файл по имени, а не по пути.
|
||||
@@ -0,0 +1,130 @@
|
||||
# Terraform Provider Nubes — карта проекта
|
||||
|
||||
Репозиторий содержит **Terraform-провайдер Nubes Cloud** и всю обвязку вокруг него:
|
||||
генераторы (API → YAML → Go), пайплайн сборки/заливки, документацию, стенды и служебные материалы.
|
||||
|
||||
Облачная платформа — **VMware Cloud Director**; сервисы Nubes (`vcOrg`, `vcVdc`, `vcNsxt`, `k8s…`)
|
||||
создают объекты в ней. Провайдер генерируется из спецификаций API, а не пишется руками.
|
||||
|
||||
---
|
||||
|
||||
## 🚦 Быстрая навигация
|
||||
|
||||
| Что нужно | Куда идти |
|
||||
|---|---|
|
||||
| **Инструкции: сборка, заливка, добавление сервиса** | **[`HOW_TO/`](HOW_TO/README.md)** ← начинать отсюда |
|
||||
| Рабочие материалы: планы, промпты, анализы, выжимки чатов | [`NOTES/`](NOTES/README.md) |
|
||||
| Пользовательская документация (mkdocs) | [`docs/`](docs/README.md) |
|
||||
| Архив по датам и разборам | [`HISTORY/`](HISTORY/) |
|
||||
| Пайплайн публикации документации | [`DOCS_PIPELINE/README.md`](DOCS_PIPELINE/README.md) |
|
||||
| Залитые версии провайдера (источник правды) | [`VERSIONS.md`](VERSIONS.md) |
|
||||
| Правила генерации кода (обязательны для генератора) | [`TOOLS/ARCHITECTURE.md`](TOOLS/ARCHITECTURE.md) |
|
||||
| Правила работы для агента | [`.github/copilot-instructions.md`](.github/copilot-instructions.md) |
|
||||
| Текущая задача (IaC + `modify`) | [`NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md`](NOTES/40_chat_summaries/CHAT_RESUME_IAC_2026-09-24.md) |
|
||||
|
||||
---
|
||||
|
||||
## Как собрать и залить провайдер (кратко)
|
||||
|
||||
```bash
|
||||
cd /home/naeel/TF/tf_provider
|
||||
|
||||
# 1) YAML-спеки из API стенда
|
||||
./TOOLS/scripts/01_generate_yamls.sh --profile TOOLS/config/dev
|
||||
# 2) YAML → Go-ресурсы + документация
|
||||
./TOOLS/scripts/02_generate_resources_and_docs_v2.sh --profile TOOLS/config/dev
|
||||
# 3) Сборка (linux/windows/darwin) + GPG-подпись + заливка в S3
|
||||
./TOOLS/scripts/03_build_and_upload_provider.sh --profile TOOLS/config/dev 2.0.18
|
||||
# 4) (опционально) публикация документации
|
||||
./TOOLS/scripts/04_build_and_publish_docs.sh --profile TOOLS/config/dev 2.0.18
|
||||
```
|
||||
|
||||
**Подробные инструкции:**
|
||||
[`HOW_TO/HOWTO-UPLOAD.md`](HOW_TO/HOWTO-UPLOAD.md) (сборка/заливка) ·
|
||||
[`HOW_TO/DEVOPS_BUILD_PIPELINE.md`](HOW_TO/DEVOPS_BUILD_PIPELINE.md) (полный ранбук + GPG-bootstrap) ·
|
||||
[`HOW_TO/HOWTO_ADD_NEW_SERVICE.md`](HOW_TO/HOWTO_ADD_NEW_SERVICE.md) (новый сервис).
|
||||
|
||||
**Схема версий (жёстко):** `prod = 1.*`, `dev = 2.*`, `test = 3.*`.
|
||||
Легаси (`prod=2.*`, `dev=3.*`, `test=5.*`, `0.0.1`) — не использовать.
|
||||
|
||||
---
|
||||
|
||||
## Структура репозитория
|
||||
|
||||
| Путь | Что это |
|
||||
|---|---|
|
||||
| **`HOW_TO/`** | **Все общие инструкции:** сборка/заливка, пайплайн, добавление сервиса, миграция, генерация доков. Индекс: `HOW_TO/README.md` |
|
||||
| **`NOTES/`** | Рабочие материалы: `10_plans`, `20_prompts`, `30_analysis`, `40_chat_summaries`, `60_reference`. Карта: `NOTES/README.md` |
|
||||
| **`docs/`** | Документация: публикуемый сайт (mkdocs) + внутренние разделы (см. ниже) |
|
||||
| **`DOCS_PIPELINE/`** | Пайплайн публикации сайта документации (`publish-docs.sh`) |
|
||||
| **`HISTORY/`** | Архив по датам (`HISTORY/OPUS/`, `HISTORY/SONNET/`) — хроника решений и разборов |
|
||||
| **`TOOLS/`** | Генераторы и скрипты: `yaml-generator` (API→YAML), `resource-generator` (YAML→Go), `docs-generator`, `scripts/`, `config/`, `lib/`. Правила: `TOOLS/ARCHITECTURE.md` |
|
||||
| **`provider/`** | Исходники самого провайдера (ядро, CRUD-хелперы, `main.go`) |
|
||||
| **`generated/`** | Машинный выхлоп: `generated/<стенд>/resources_yaml`, `/go`, `/docs`, `/provider_build` |
|
||||
| **`DEV_STAND/`, `TEST_STAND/`, `PROD_STAND/`** | Terraform-манифесты стендов (проверочные конфигурации, `sync.sh`) |
|
||||
| **`HAR/`** | HAR-дампы live-запросов к API (сырые данные для анализа) |
|
||||
| **`secrets/`** | Токены стендов, GPG-ключи, S3-креды. **Не коммитить** |
|
||||
| **`gateway/`, `apps/`, `charts/`** | Вспомогательный сервис/приложения/чарты (вне ядра провайдера) |
|
||||
| **`tf_examples/`, `tfflaskcrud/`, `tfluceecrud/`, `tfnodejscrud/`** | Примеры конфигураций Terraform |
|
||||
| **`! /`** | Прецедент Cloud Director (чужой tf-код на официальном `terraform-provider-vcd`) — образец «как надо» |
|
||||
| **`TMP/`** | Временное/бэкапы |
|
||||
| `mkdocs.yml`, `site/`, `site_test/` | Конфиг и вывод сборки сайта документации |
|
||||
|
||||
---
|
||||
|
||||
## Документация: `docs/`
|
||||
|
||||
Собирается mkdocs (`mkdocs.yml`, nav → `docs/`). Разделы:
|
||||
|
||||
| Раздел | Что внутри |
|
||||
|---|---|
|
||||
| `docs/index.md`, `docs/30_registry/` | **Публикуется**: главная, справочник ресурсов, руководства, ассеты |
|
||||
| `docs/curated/` | Проверенные примеры (напр. `postgres/pg_user_db.md`) |
|
||||
| `docs/90_finance/` | Финансовые шаблоны (акт) |
|
||||
| `docs/ops/` | Операционные runbook'и: `API_TOKENS.md`, `STANDS.md`, `MONITORING.md`, `ROLLBACK.md`, `RUNBOOK.md`, `TESTING.md` |
|
||||
| `docs/help/` | Внутренние справки: `BUILD.md`, `build-and-publish.md`, `architecture-and-methods.md`, `error-knowledge-base.md`, `dev-reference/` |
|
||||
| `docs/00_overview/`, `docs/20_discovery/`, `docs/40_analysis/`, `docs/50_history/`, `docs/60_strategy/`, `docs/70_api/` | Внутренние разделы (исключены из сайта: `exclude_docs` в `mkdocs.yml`) |
|
||||
| `docs/TODO/` | Технические заметки «что не сделано» |
|
||||
|
||||
---
|
||||
|
||||
## Пайплайн (что происходит под капотом)
|
||||
|
||||
```
|
||||
API стенда ──01──▶ generated/<стенд>/resources_yaml/*.yaml (yaml-generator)
|
||||
│
|
||||
├──02──▶ generated/<стенд>/go/*.go (resource-generator + registry)
|
||||
│ generated/<стенд>/docs/*.md (docs-generator)
|
||||
│
|
||||
├──03──▶ сборка linux/windows/darwin → GPG-подпись → S3-реестр
|
||||
└──04──▶ mkdocs build → публикация документации
|
||||
```
|
||||
|
||||
Ключевое: **схема tf-ресурса строится из операции `create`** в YAML, а ID операций/параметров
|
||||
сохраняются из API. Нюансы и известные ограничения — в `NOTES/30_analysis/` и `NOTES/README.md`.
|
||||
|
||||
---
|
||||
|
||||
## Стенды и реестр
|
||||
|
||||
| Стенд | Namespace | Диапазон версий | Профиль |
|
||||
|---|---|---|---|
|
||||
| PROD | `nubes` | `1.*` | `TOOLS/config/prod` |
|
||||
| DEV | `nubes-dev` | `2.*` | `TOOLS/config/dev` |
|
||||
| TEST | `nubes-test` | `3.*` | `TOOLS/config/test` |
|
||||
|
||||
- Реестр: `tf-registry.containerk8s.services.ngcloud.ru`; бакет бинарников `nubes-terraform-registry`.
|
||||
- Общий конфиг реестра: `TOOLS/config/registry.env`; стенд-специфика: `TOOLS/config/<стенд>/profile.env`
|
||||
(`NUBES_API_ENDPOINT`, `TOKEN_FILE`, `NAMESPACE`, `VERSION`).
|
||||
- Список сервисов для генерации: `TOOLS/config/services_list.txt`.
|
||||
|
||||
---
|
||||
|
||||
## ⛔ Чего не делать
|
||||
|
||||
- **Не использовать** легаси-схемы версий (`prod=2.*`, `dev=3.*`, `test=5.*`, `0.0.1`).
|
||||
- **Не использовать** закрытые API и хосты: `index.cfm`, `registry.kube5s.ru`, `deck-api.ngcloud.ru`.
|
||||
- **Не вызывать** старые бинарники из `TOOLS/*/bin/` — скрипты пересобирают генераторы сами.
|
||||
- **Не перегенерировать GPG-ключ** подписи — сломается `terraform init` у пользователей.
|
||||
- **Не путать бакеты:** бинарники `nubes-terraform-registry`, документация `terraform-registry`.
|
||||
- **Не опираться** на файлы с баннером ⛔ в `NOTES/` и `HISTORY/` — это отменённые («ложные») пути.
|
||||
Reference in New Issue
Block a user