docs(history): раунд 4 — решения Q1-Q5 и их статус

This commit is contained in:
Repinoid
2026-09-30 20:53:41 +03:00
parent 7a6f6650c6
commit b3cce5bb70
@@ -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`).