Files
ss-tools/specs/023-clean-repo-enterprise/plan.md

183 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Implementation Plan: Clean Repository Enterprise Preparation
**Branch**: `023-clean-repo-enterprise` | **Date**: 2026-03-03 | **Spec**: [`spec.md`](./spec.md)
**Input**: Feature specification from [`/specs/023-clean-repo-enterprise/spec.md`](./spec.md)
## Summary
Подготовить enterprise clean-профиль поставки, который:
1) исключает тестовые/демо-данные из дистрибутива,
2) блокирует любые внешние интернет-источники ресурсов,
3) допускает загрузку ресурсов только с внутренних серверов компании,
4) предоставляет обязательную проверку compliance и аудитный отчёт перед выпуском.
Ключевой UX фиксируется как интерактивный TUI сценарий на основе [`ux_reference.md`](./ux_reference.md): оператор в одном консольном интерфейсе запускает проверку, видит прогресс по этапам, нарушения и итоговый статус (`COMPLIANT`/`BLOCKED`).
## Technical Context
**Language/Version**: Python 3.9+ (backend scripts/services), Shell (release tooling)
**Primary Dependencies**: FastAPI stack (existing backend), ConfigManager, TaskManager, файловые утилиты, internal artifact registries
**Storage**: PostgreSQL (конфигурации/метаданные), filesystem (артефакты дистрибутива, отчёты проверки)
**Testing**: pytest (backend), contract checks для release compliance, smoke checks для TUI flow
**Target Platform**: Linux server в изолированной корпоративной сети
**Project Type**: web-service + operational CLI/TUI tooling
**Performance Goals**:
- стандартный запуск проверки clean/compliance ≤ 15 минут на типовой релиз-кандидат;
- формирование человекочитаемого отчёта сразу после завершения проверки.
**Constraints**:
- Полный запрет на внешние интернет-загрузки в enterprise clean-профиле;
- все ресурсы только с внутренних серверов компании;
- выпуск блокируется при любом нарушении data purity или source isolation.
**Scale/Scope**:
- 1 enterprise release flow;
- 1 TUI сценарий подготовки/проверки;
- 36 новых/обновлённых модулей проверки и отчётности;
- документация и контракты в пределах feature-папки.
## Constitution Check
*GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.*
- **I. Semantic Protocol Compliance**: PASS
План предусматривает формальные контракты в [`contracts/modules.md`](./contracts/modules.md) с `[DEF]`/`@TAG` и закрывающими якорями.
- **II. Modular Plugin Architecture**: PASS
Логика будет интегрирована через существующие сервисы/плагины и централизованную конфигурацию через `ConfigManager`; hardcode-источники запрещаются политикой clean-profile.
- **III. Unified Frontend Experience**: PASS (N/A for web UI changes)
Для фичи primary UX — TUI (`ncurses`-совместимый). Изменений веб-компонентов, нарушающих правила `requestApi/fetchApi`, не планируется.
- **IV. Security & RBAC**: PASS
Проверка соответствия и выпускные действия остаются под существующей auth/RBAC моделью и аудитом.
- **V. Independent Testability**: PASS
В спецификации определены независимые пользовательские сценарии с отдельной проверяемостью.
- **VI. Asynchronous Execution**: PASS
Длительная проверка может быть оформлена как task-flow с отчётом; блокировок API на долгих операциях не планируется.
**Gate Result (pre-research)**: PASS
## Project Structure
### Documentation (this feature)
```text
specs/023-clean-repo-enterprise/
├── plan.md
├── research.md
├── data-model.md
├── quickstart.md
├── contracts/
│ ├── modules.md
│ └── api.yaml
└── tasks.md
```
### Source Code (repository root)
```text
backend/
├── src/
│ ├── api/
│ ├── core/
│ ├── services/
│ └── scripts/
└── tests/
frontend/
└── src/ # Без изменений в рамках этой фичи (primary UX = TUI script)
```
**Structure Decision**: Выбрана структура web application с упором на backend + operational TUI tooling; изменения фронтенда не требуются для MVP enterprise clean-подготовки.
## Phase 0 — Outline & Research Plan
Цель: снять неопределённости и принять архитектурные решения до контрактов.
Исследовательские направления:
1. Политика классификации артефактов (что считать test/demo/load data и как исключать без повреждения system-init).
2. Политика source isolation (детекция и запрет внешних internet endpoints, allowlist внутренних серверов).
3. Формат compliance-отчёта для релизного аудита (минимальный обязательный набор полей).
4. Паттерн интеграции TUI-проверки в существующий release workflow (ручной запуск + CI gate).
Выход Phase 0: заполненный [`research.md`](./research.md) без `NEEDS CLARIFICATION`.
## Phase 1 — Design & Contracts Plan
Цель: спроектировать сущности, контракты и API/интерфейсы для реализации.
1. Проверка соответствия UX из [`ux_reference.md`](./ux_reference.md):
- состояния `READY/RUNNING/COMPLIANT/BLOCKED` должны быть отражены в контракте TUI-модуля (`@UX_STATE`);
- ошибки `Data Purity`, `External Source`, `Internal Source Unavailable` должны иметь контракт восстановления.
2. Модель данных:
- ReleaseCandidate, CleanProfilePolicy, ResourceSourceRegistry, ComplianceCheckReport, DistributionManifest.
3. Семантические контракты:
- модуль orchestration проверки;
- модуль policy engine;
- модуль source isolation validator;
- модуль report generator;
- TUI module (CRITICAL UX-contract).
4. API/контракты:
- схема запуска проверки и получения результата;
- контракт структуры violation entries.
5. Quickstart:
- изолированный запуск в корпоративной сети без внешнего интернета.
Выход Phase 1:
- [`data-model.md`](./data-model.md)
- [`contracts/modules.md`](./contracts/modules.md)
- [`contracts/api.yaml`](./contracts/api.yaml)
- [`quickstart.md`](./quickstart.md)
## Phase 2 — Task Planning Approach
На этапе `/speckit.tasks` задачи будут разбиты на независимые user-story инкременты:
- US1 (P1): формирование clean-дистрибутива без test/demo-data.
- US2 (P1): source isolation и internal-only resource policy.
- US3 (P2): release compliance gate + отчётность.
- US4 (P3): операционный runbook + onboarding сценарий.
Для каждой истории будут определены:
- независимый тест;
- набор backend задач;
- проверка контракта;
- критерии готовности.
## Post-Design Constitution Re-Check
Проверка после подготовки артефактов Phase 1 ([`research.md`](./research.md), [`data-model.md`](./data-model.md), [`contracts/modules.md`](./contracts/modules.md), [`contracts/api.yaml`](./contracts/api.yaml), [`quickstart.md`](./quickstart.md)):
- **I. Semantic Protocol Compliance**: PASS
Контракты оформлены через `[DEF:...:Module]` и закрывающие `[/DEF:...:Module]` в [`contracts/modules.md`](./contracts/modules.md).
- **II. Modular Plugin Architecture**: PASS
Дизайн опирается на существующие модульные сервисы и централизованную конфигурацию, без hardcode-конфигураций clean-политики.
- **III. Unified Frontend Experience**: PASS (N/A for web UI changes)
Целевой UX реализуется как TUI (`ncurses`-совместимый), что согласовано со [`ux_reference.md`](./ux_reference.md).
- **IV. Security & RBAC**: PASS
Введён блокирующий compliance-gate при внешних источниках и запрещённых данных, отчётность предусмотрена для аудита.
- **V. Independent Testability**: PASS
Зафиксированы независимые сценарии проверки clean/compliance и recovery flow в [`quickstart.md`](./quickstart.md).
- **VI. Asynchronous Execution**: PASS
Длительная проверка проектируется как orchestrated run с поэтапным статусом и финальным отчётом, без требований к блокирующим long-running API вызовам.
**Gate Result (post-design)**: PASS
**Operational Note (resolved)**: конфликт numeric prefix `020` устранён governance-решением: enterprise clean feature закреплён под уникальным префиксом `023` (ветка и feature-directory: `023-clean-repo-enterprise`). Проверка prereqs и speckit-поток выполняются с `FEATURE_DIR=specs/023-clean-repo-enterprise` без неоднозначности с [`specs/020-task-reports-design`](../020-task-reports-design).
## Implementation Traceability & Final Notes
- Статус реализации: Phase 17 завершены (T001T043).
- Ключевые подтверждения polish-фазы:
- T039: smoke TUI сценария зафиксирован в [`quickstart.md`](./quickstart.md).
- T040: контрактная проверка API подтверждена тестом [`backend/tests/api/routes/test_clean_release_api.py`](../../backend/tests/api/routes/test_clean_release_api.py).
- T041: создан чеклист evidence package [`checklists/release-readiness.md`](./checklists/release-readiness.md).
- T042: governance conflict по префиксу закрыт и задокументирован.
- T043: добавлена итоговая traceability-нотация в текущем плане.
Итог: feature готова к финальному релизному циклу с обязательным CI gate (`COMPLIANT` only) и операционной доказательной базой для аудита.
## Complexity Tracking
> Fill ONLY if Constitution Check has violations that must be justified
| Violation | Why Needed | Simpler Alternative Rejected Because |
|-----------|------------|-------------------------------------|
| None at planning stage | N/A | N/A |