feat(tools): страж имён атрибутов схемы + вызов в 03 (fail-fast до заливки)
Инцидент 2026-09-30 показал: невалидное имя атрибута (s3-inst) проходило генерацию, сборку и заливку, а ломалось только у пользователя (Terraform отвергает схему целиком). - TOOLS/scripts/check_schema_names.sh: проверяет все tfsdk:"..." в сгенерированном Go на [a-z0-9_]; exit 1 при нарушении, с подсказкой про helpers.ToSnake. - 03_build_and_upload_provider.sh: вызов стража после 02 (до сборки и заливки). - ARCHITECTURE.md: страж добавлен в список enforced-скриптов. - HISTORY: пункт 'не закрыто' заменён на 'закрыто' с проверками. Проверено: dev/test/prod -> OK; искусственный пример (tfsdk:"s3-inst") -> exit 1.
This commit is contained in:
@@ -306,6 +306,10 @@ Enforced by scripts (run before build/commit):
|
||||
- `TOOLS/scripts/check_generated_drift.sh <stand>` — generated Go vs provider copy.
|
||||
- `TOOLS/scripts/check_hardcoded_service_ids.sh` — forbids `svc.ID == N` /
|
||||
`ServiceID == N` outside the registries.
|
||||
- `TOOLS/scripts/check_schema_names.sh <generated-go-dir>` — every `tfsdk:"..."`
|
||||
attribute name must match `[a-z0-9_]`. Terraform rejects the WHOLE provider schema on an
|
||||
invalid name (incident 2026-09-30: API codes `s3-inst` / `s3-ref-root`), so this guard
|
||||
runs inside `03_build_and_upload_provider.sh` BEFORE build/upload.
|
||||
|
||||
Build rule: `provider/internal/resources_gen` and `provider/resources_yaml` are
|
||||
ephemeral by design and never a build source. Canonical build is
|
||||
|
||||
Reference in New Issue
Block a user