This commit is contained in:
2026-03-04 19:33:47 +03:00
parent 42def69dcc
commit 2820e491d5
28 changed files with 972 additions and 365 deletions

View File

@@ -126,6 +126,48 @@
---
## Decision 7: Вся конфигурация валидации определяется через `.clean-release.yaml` в корне репозитория
**Decision**
Ввести единый конфигурационный файл `.clean-release.yaml` в корне репозитория, определяющий:
- `profile` и `scan_mode` (repo | build | docker);
- `prohibited_categories` и `prohibited_paths` — классификация запрещённых артефактов;
- `allowed_sources` — список допустимых внутренних endpoint'ов (glob-паттерны);
- `ignore_paths` — исключения из сканирования;
- `database_cleanup` (tables + preserve) — правила очистки БД от тестовых данных.
**Rationale**
Централизация конфигурации в одном файле обеспечивает прозрачность и версионируемость правил. Владелец проекта явно контролирует политику clean-поставки через декларативный конфиг, что снижает операционные ошибки.
**Alternatives considered**
- Хранение правил в БД: отклонено — усложняет версионирование и аудит policy drift.
- Отдельные файлы для каждой секции: отклонено — фрагментация ухудшает обзорность и повышает вероятность рассинхронизации.
- Hardcode в коде: отклонено — нарушает принцип конфигурируемости и делает проект-специфичные правила невозможными.
---
## Decision 8: Очистка БД от тестовых пользователей и демо-данных — обязательная стадия
**Decision**
Добавить стадию `database_cleanup` в compliance pipeline. Правила очистки задаются в секции `database_cleanup` файла `.clean-release.yaml`:
- `tables` — список таблиц с SQL-условиями для удаления тестовых записей;
- `preserve` — whitelist записей, которые MUST быть сохранены (напр. системный admin).
**Rationale**
Одной файловой очистки недостаточно: тестовые пользователи (`test_user`, `sample_analyst`) и демо-дашборды в БД являются таким же нарушением enterprise clean-профиля, как наличие тестовых файлов в дистрибутиве.
**Alternatives considered**
- Только предупреждение без очистки: отклонено — не обеспечивает SC-001 (100% отсутствие тестовых данных).
- Автоматическая очистка по паттернам имён: отклонено — высокий риск ложных удалений без явного whitelist.
---
## Open Clarifications Status
По итогам Phase 0 `NEEDS CLARIFICATION` не осталось: все критичные решения по scope, security/policy и UX зафиксированы.
По итогам Phase 0 + speckit.clarify (2026-03-04) все `NEEDS CLARIFICATION` сняты:
- Режимы ввода: 3 режима (папка, репозиторий, Docker-образ) — FR-015;
- Классификация артефактов: `.clean-release.yaml` — FR-016;
- Определение внутренних источников: `allowed_sources` в конфиге — FR-017;
- Область сканирования NO_EXTERNAL_ENDPOINTS: все текстовые файлы — FR-018;
- Очистка БД: секция `database_cleanup` — FR-019;
- Структура конфига: полная схема зафиксирована — FR-020.