docs: промпт Opus раунд 4 + журнал правок ядра/модификаторов

- NOTES/20_prompts/prompt_for_opus_remediation_round4.md — 5 коротких вопросов
  (retry POST, осиротевшая операция, zero-value по подстроке, единый словарь
  жизненного цикла, что упущено в ядре); ответ ≤ 25 строк.
- HISTORY/2026-09-30_core_and_modifiers_remediation.md — журнал: 6 коммитов,
  что отклонено (A3/A4/A5) и почему, что отложено (A2/B8/B9).
This commit is contained in:
Repinoid
2026-09-30 20:42:30 +03:00
parent 0e26e98384
commit 5a0bb432ab
2 changed files with 102 additions and 0 deletions
@@ -0,0 +1,43 @@
# Opus — раунд 4: короткие решения (2026-09-30)
**Репо:** `/home/naeel/TF/tf_provider` — `terraform-provider-nubes` (Go, Terraform Plugin Framework).
## Формат ответа (ЖЁСТКО)
- На каждый вопрос — **1–3 строки**, с `файл:строка`.
- **Весь ответ ≤ 25 строк.** Без вступлений, пересказа, «а ещё могу», без повторения вопросов.
- Не хватает данных — одна короткая строка-вопрос, не догадка.
## Уже сделано — не обсуждать
401 в `isRetryable`; страж хардкодов покрыл `provider/`; idempotency pre-check переведён на live
(`core/modifier_compare.go`); `ImportState` модификаторов заполняет Required.
## Вопросы
**Q1. Retry POST.** `core/http.go:87-108` ретраит только GET. Слепой retry создающего
`POST /instanceOperations` рискует дубликатом операции. Как правильно: (а) не ретраить +
задокументировать; (б) ретраить только безопасный POST (`validate-cfs`); (в) иное?
**Q2. Осиротевшая операция.** `core/operation_run.go:150`, `core/operation_run_bycode.go:108`: при
сбое `instanceLiveParams` уже созданная операция остаётся невыполненной. Продолжение с fallback
вернёт reset-баг (защита поставлена сознательно). Есть ли безопасный третий путь (cancel/delete
операции через API) или оставить как есть? Нужен API-метод — назови его.
**Q3. Zero-value по подстроке имени.** `core/params.go:47-59`: при пустом `dataType` тип угадывается
по `name/code/label`. Пути применения: `instance_create.go:105-113` (required без значения), досылка
modify. Менять (убрать угадывание) или оставить?
**Q4. Словарь жизненного цикла.** Три несогласованных контракта: `suspend_on_destroy`/`keep_on_destroy`
(генерируемые ресурсы), `delete_strategy` (генерируемые модификаторы), `keep_on_destroy` (ручные).
Какой единый контракт зафиксировать в `TOOLS/ARCHITECTURE.md`?
**Q5. Что упущено.** Назови **один** самый критичный для устойчивости/корректности **ядра** дефект,
не упомянутый выше: 1 строка — суть → `файл:строка`.
## Границы доступа
Читать: `provider/internal/**`, `TOOLS/ARCHITECTURE.md`,
`TOOLS/resource-generator/internal/{templates,loader,params,helpers}/**`.
Не читать: `HISTORY/**`, `NOTES/**`, `docs/**`, `HAR/**`, стенды, git-историю. Нужен файл вне списка → вопрос.