From b3cce5bb708876f98a8adedea7153ac4f61b49ff Mon Sep 17 00:00:00 2001 From: Repinoid Date: Wed, 30 Sep 2026 20:53:41 +0300 Subject: [PATCH] =?UTF-8?q?docs(history):=20=D1=80=D0=B0=D1=83=D0=BD=D0=B4?= =?UTF-8?q?=204=20=E2=80=94=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20Q1-Q5=20=D0=B8=20=D0=B8=D1=85=20=D1=81=D1=82=D0=B0=D1=82?= =?UTF-8?q?=D1=83=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...26-09-30_core_and_modifiers_remediation.md | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/HISTORY/2026-09-30_core_and_modifiers_remediation.md b/HISTORY/2026-09-30_core_and_modifiers_remediation.md index e7f008e..eea1bbc 100644 --- a/HISTORY/2026-09-30_core_and_modifiers_remediation.md +++ b/HISTORY/2026-09-30_core_and_modifiers_remediation.md @@ -81,3 +81,29 @@ Required с пустым `data_type` (все получают `""`; угадыв единственный эффект — тестовый `1_dummy.jsonExample`. То есть правка косметическая (упрощение), а не исправление дефекта. Решение «снимать/оставлять» — за владельцем. +--- + +## Раунд 4 (Opus, новый чат) — решения и правки + +Промпт: `NOTES/20_prompts/prompt_for_opus_remediation_round4.md` (5 вопросов, ответ ≤ 25 строк). +Ответ получен; ниже — что принято и что сделано. + +| Q | Решение | Статус | +|---|---|---| +| Q1 retry POST | Не ретраить. `POST /instanceOperations` не идемпотентен, `Idempotency-Key` у API нет. | Зафиксировано в `TOOLS/ARCHITECTURE.md` (коммит `7a6f665`) | +| Q2 черновик операции | Отмены нет: `DELETE /instanceOperations/{uid}` отсутствует и в коде, и в HAR (проверено: `grep '"method": "DELETE"'` по `HAR/*.har` — ноль совпадений). Оставляем как есть, задокументировано. | `7a6f665` | +| Q3 zero-value по имени | **Закрыт замером**: угадывание не срабатывает (см. выше) — не дефект. | замер `54f036e` | +| Q4 словарь жизненного цикла | Единый контракт: `keep_on_destroy` + `suspend_on_destroy`; `delete_strategy` = маппинг (`noop_warn`→keep, `inverse`→destroy, `error`→валидация). | `7a6f665` | +| Q5 осиротевший инстанс | **Исправлено** (критичный). Ядро возвращает `instanceUid` вместе с ошибкой после создания; шаблон пишет partial state. | `9da9766` | + +**Q5 детали:** `core/instance_create.go` — все ошибки ПОСЛЕ получения `instanceUid` возвращают +`instanceUid` (до создания — `""`); `templates/instance.go` — при `err != nil && id != ""` пишет +`data.ID` + `resp.State.Set` перед `AddError`. Регенерация dev (`02` + `dev-materialize`) → фикс в +40 файлах `resources_gen` (эфемерные, не в git). Тесты: `TestCreateGenericInstance_KeepsUIDWhenOperationCreateFails`, +`TestCreateGenericInstance_EmptyUIDWhenInstanceCreateFails`. + +**Коммиты раунда 4:** `54f036e` (замер), `9da9766` (Q5), `7a6f665` (Q1/Q2/Q4). + +**Осталось:** замер владельцем (`terraform plan` ×2 на `DEV_STAND/FullPipe`); B8 (`modifiers.yaml`). + +