diff --git a/NOTES/20_prompts/prompt_for_opus_code_review_round5.md b/NOTES/20_prompts/prompt_for_opus_code_review_round5.md new file mode 100644 index 0000000..09a610f --- /dev/null +++ b/NOTES/20_prompts/prompt_for_opus_code_review_round5.md @@ -0,0 +1,43 @@ +# Opus — код-ревью правок (раунд 5, 2026-09-30) + +**Репо:** `/home/naeel/TF/tf_provider` (Go, Terraform Plugin Framework). Правки уже влиты в `master`, +`go build ./...` и `go test ./internal/... -short` — зелёные. Нужно только ревью. + +## Формат ответа (ЖЁСТКО) + +- **Только дефекты.** По 1 строке: `файл:строка` → что не так → чем грозит. +- **Весь ответ ≤ 10 строк.** Дефектов нет — ответ «ок». +- Без похвал, пересказа, «а ещё можно», без предложений рефакторинга. + +## Что ревьюить (ровно эти коммиты) + +``` +git --no-pager show 383f8ea c5a4499 ea75cac 8519ba0 9da9766 +# или сразу: +git --no-pager diff 047d53a^..9da9766 -- provider/ TOOLS/ +``` + +Файлы: +- `provider/internal/core/http.go` — 401 в `isRetryable` +- `provider/internal/core/modifier_compare.go` — `modifierDesiredEqualsLive`, `modifierValuesEqual`, `modifierCodeMap` +- `provider/internal/core/operation_run_bycode.go` — idempotency pre-check по live +- `provider/internal/core/instance_create.go` — `instanceUid` возвращается вместе с ошибкой +- `provider/internal/resources_core/nsxt_snat_resource.go`, `org_ip_allocation_resource.go` — `ImportState`, `ByIdempotent` +- `TOOLS/resource-generator/internal/templates/instance.go` — partial state в `Create` +- `TOOLS/scripts/check_hardcoded_service_ids.sh` — расширение области/паттернов + +## Вопросы (ответ — по 1 строке на каждый, дефект или «ок») + +1. **Q5 partial state.** `Create`: при `err != nil && id != ""` вызывается `resp.State.Set` с планом, + затем `AddError`. Не нарушает ли это контракт framework (допустим ли partial state при ошибке)? +2. **Live pre-check.** `modifierDesiredEqualsLive` ищет live-значение через `lookupLiveParam` + (ключи `Code`/`SvcOperationCfsParam`/`Name`/`Label`). Достаточно ли этого, чтобы не пропустить + нужный `modify`? +3. **`isRetryable` + 401.** Не создаёт ли ретрай 401 ложных повторов там, где это опасно (GET-пути)? +4. **`ImportState`.** Запись Required-атрибутов в `ImportState` не конфликтует ли с последующим `Read`? +5. Что-то ещё критичное в этих диффах — 1 строка. + +## Границы доступа + +Разрешено: `provider/internal/**`, `TOOLS/**`, `git show`/`git diff` по перечисленным коммитам. +Запрещено: `HISTORY/**`, `NOTES/**`, `docs/**`, `HAR/**`, стенды. Нужен файл вне списка → вопрос.