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:
@@ -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-историю. Нужен файл вне списка → вопрос.
|
||||
Reference in New Issue
Block a user