diff --git a/docs/TODO/resource_generator_refactor_plan.md b/docs/TODO/resource_generator_refactor_plan.md index 400bcad..4f4f18c 100644 --- a/docs/TODO/resource_generator_refactor_plan.md +++ b/docs/TODO/resource_generator_refactor_plan.md @@ -279,3 +279,43 @@ type PostgresClusterConfigurationModel struct { Подполя имеют `value_list` (например `replicas: [1,3,5,7]`, `version: ["17","16"]`). Генерация enum-валидаторов — на этом этапе не делать. Оставить на будущее. + +--- + +## Блок 5. Аудит lifecycle-логики (Соннет, 2026-07-16) + +**Вывод: база корректна, но есть 2 критичных бага.** + +### 5.1 — ПРОБЛЕМА A: нет HasError()-guard в Create (КРИТИЧНО) + +**Где:** `instance.go`, функция Create, строка ~260. + +После вызова `resp.Diagnostics.Append(resources_core.CreateExistingResourceDiagnosticsWithDomainAndServices(...))` +код сразу идёт к `CreateResourceWithTimeout` **без проверки `HasError()`**. + +При hard-error (running без adopt, suspend без adopt, not created) побочный API-вызов +всё равно выполнится — сайд-эффект уже случился. + +**Как должно быть:** после append диагностик — `if resp.Diagnostics.HasError() { return }`. + +### 5.2 — ПРОБЛЕМА B: not created → auto-delete+create (КРИТИЧНО) + +**Где:** `resources_core/crud.go`, `adoptExistingInstanceOnCreate`. + +Философия (раздел 8): `not created → hard error «проверьте ресурс в ЛК», без auto-create`. + +Но `adoptExistingInstanceOnCreate` при статусе `StateNotCreated` **авто-удаляет orphan и создаёт заново**. +В сочетании с Проблемой A этот destructive сайд-эффект может выполниться несмотря на ошибку в диагностиках. + +**Как должно быть:** либо убрать ветку (следовать философии), либо развести `not created` и `orphaned`. + +### 5.3 — Комментарий «returns warnings» (минор) + +`CreateExistingResourceDiagnostics` комментирует «returns warnings», но делает `AddError`. +Это корень путаницы с отсутствующим guard. Исправить комментарий. + +### Рекомендация Соннета: + +**Сначала закрыть A и B, потом продолжать SubParams.** +Строить вложенные параметры поверх Create, который выполняет сайд-эффекты +вопреки собственным диагностикам — рискованно.