semantics

This commit is contained in:
2026-03-27 21:27:31 +03:00
parent 7c85552132
commit 2ed66bfebc
182 changed files with 21186 additions and 10254 deletions

View File

@@ -1,10 +1,10 @@
[DEF:specs.023-clean-repo-enterprise.checklists.release-readiness:Module]
@TIER: STANDARD
@SEMANTICS: release-readiness, compliance, evidence, enterprise-clean
@PURPOSE: Checklist template for packaging compliance evidence before release publication.
@LAYER: Domain
@RELATION: BINDS_TO -> specs/023-clean-repo-enterprise/quickstart.md
@INVARIANT: Release is publishable only when compliance status is COMPLIANT.
# [DEF:specs.023-clean-repo-enterprise.checklists.release-readiness:Module]
# @TIER: STANDARD
# @SEMANTICS: release-readiness, compliance, evidence, enterprise-clean
# @PURPOSE: Checklist template for packaging compliance evidence before release publication.
# @LAYER: Domain
# @RELATION: BINDS_TO -> specs/023-clean-repo-enterprise/quickstart.md
# @INVARIANT: Release is publishable only when compliance status is COMPLIANT.
# Release Readiness Checklist: Enterprise Clean Compliance
@@ -42,4 +42,4 @@
- [ ] Ответственный за выпуск подтвердил допуск кандидата к публикации
- [ ] Артефакт чеклиста сохранён вместе с релизной документацией
[/DEF:specs.023-clean-repo-enterprise.checklists.release-readiness:Module]
# [/DEF:specs.023-clean-repo-enterprise.checklists.release-readiness:Module]

View File

@@ -183,9 +183,9 @@ module CleanReleaseRouter:
# @SEMANTICS: clean-release, config, yaml, policy-source, declarative
# @PURPOSE: Load and validate .clean-release.yaml from repository root, providing typed config to all pipeline stages.
# @LAYER: Infrastructure
# @RELATION: CONSUMED_BY -> backend.src.services.clean_release.policy_engine
# @RELATION: CONSUMED_BY -> backend.src.services.clean_release.compliance_orchestrator
# @INVARIANT: Config load must fail fast on invalid/missing required fields for enterprise-clean profile.
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.policy_engine
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.compliance_orchestrator
# @TEST_CONTRACT: YamlFilePath -> CleanReleaseConfig
# @TEST_FIXTURE: valid_enterprise_config -> {"profile":"enterprise-clean","scan_mode":"repo","prohibited_categories":["test-data"],"allowed_sources":["*.corp.local"]}
# @TEST_EDGE: missing_yaml -> repo without .clean-release.yaml must raise ConfigNotFoundError
@@ -212,8 +212,8 @@ class CleanReleaseConfigLoader:
# @PURPOSE: Scan filesystem (repo/build/docker) for prohibited artifacts and external URLs in text files.
# @LAYER: Domain
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.config_loader
# @RELATION: CONSUMED_BY -> backend.src.services.clean_release.compliance_orchestrator
# @INVARIANT: Scanner must respect ignore_paths and never modify scanned files.
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.compliance_orchestrator
# @TEST_CONTRACT: ScanTarget + CleanReleaseConfig -> ScanResult
# @TEST_FIXTURE: repo_with_test_data -> {"path":"test/data.csv","category":"test-data","classification":"excluded-prohibited"}
# @TEST_EDGE: binary_file_skip -> binary files must be skipped during URL extraction
@@ -240,8 +240,8 @@ class FilesystemScanner:
# @PURPOSE: Execute database cleanup rules from .clean-release.yaml to remove test users and demo data.
# @LAYER: Domain
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.config_loader
# @RELATION: CONSUMED_BY -> backend.src.services.clean_release.compliance_orchestrator
# @INVARIANT: Preserve-listed records must never be deleted regardless of condition match.
# @RELATION: DEPENDS_ON -> backend.src.services.clean_release.compliance_orchestrator
# @TEST_CONTRACT: DatabaseCleanupConfig -> CleanupResult
# @TEST_FIXTURE: cleanup_test_users -> {"table":"ab_user","condition":"username IN ('test_user')","preserve":["admin"]}
# @TEST_EDGE: preserve_overrides_condition -> preserved record matching condition must survive cleanup
@@ -271,4 +271,4 @@ class DatabaseCleanupExecutor:
3. [`policy_engine`](#defbackendsrcservicesclean_releasepolicy_enginemodule) обнаруживает `external-source` нарушение и возвращает fail stage + violation.
4. [`compliance_orchestrator`](#defbackendsrcservicesclean_releasecompliance_orchestratormodule) завершает run статусом BLOCKED.
5. [`report_builder`](#defbackendsrcservicesclean_releasereport_buildermodule) формирует отчёт с remediation.
6. [`clean_release_tui`](#defbackendsrcscriptsclean_release_tuimodule) отображает BLOCKED + таблицу нарушений + путь восстановления.
6. [`clean_release_tui`](#defbackendsrcscriptsclean_release_tuimodule) отображает BLOCKED + таблицу нарушений + путь восстановления.

View File

@@ -164,7 +164,7 @@ frontend/
**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).
**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) и тестовым маршрутом [`backend/src/api/routes/__tests__/test_clean_release_api.py`](../../backend/src/api/routes/__tests__/test_clean_release_api.py).
## Implementation Traceability & Final Notes
@@ -172,7 +172,7 @@ frontend/
- Новое расширение (post-release hardening, 2026-03-13): добавлен scope на управляемый bootstrap администратора через `.env.enterprise-clean` и docker startup flow.
- Ключевые подтверждения 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).
- T040: контрактная проверка API подтверждена тестом [`backend/src/api/routes/__tests__/test_clean_release_api.py`](../../backend/src/api/routes/__tests__/test_clean_release_api.py).
- T041: создан чеклист evidence package [`checklists/release-readiness.md`](./checklists/release-readiness.md).
- T042: governance conflict по префиксу закрыт и задокументирован.
- T043: добавлена итоговая traceability-нотация в текущем плане.

View File

@@ -142,8 +142,8 @@ cd /home/busya/dev/ss-tools
- `cd backend && .venv/bin/python3 -m src.scripts.clean_release_tui`
- Результат: `PASS` (exit code 0, состояние `READY`, панель внутренних источников отображается).
- API contract smoke command:
- `cd backend && .venv/bin/python3 -m pytest tests/api/routes/test_clean_release_api.py -q`
- `cd backend && .venv/bin/python3 -m pytest src/api/routes/__tests__/test_clean_release_api.py -q`
- Результат: `PASS` (`2 passed`), shape контрактов `/api/clean-release/checks*` и `/api/clean-release/reports/{id}` подтверждён.
Примечание:
- В тестовом прогоне есть существующие проектные предупреждения (Pydantic/FastAPI deprecations), но блокирующих ошибок для feature smoke-проверки не обнаружено.
- В тестовом прогоне есть существующие проектные предупреждения (Pydantic/FastAPI deprecations), но блокирующих ошибок для feature smoke-проверки не обнаружено.

View File

@@ -96,7 +96,7 @@
- [X] T026 [P] [US3] Add orchestrator state machine tests for stage pass/fail transitions in `backend/tests/services/clean_release/test_compliance_orchestrator.py`
- [X] T027 [P] [US3] Add report builder validation tests for counters and blocking violations in `backend/tests/services/clean_release/test_report_builder.py`
- [X] T028 [P] [US3] Add API contract tests for `/api/clean-release/checks*` and `/api/clean-release/reports/{id}` in `backend/tests/api/routes/test_clean_release_api.py`
- [X] T028 [P] [US3] Add API contract tests for `/api/clean-release/checks*` and `/api/clean-release/reports/{id}` in `backend/src/api/routes/__tests__/test_clean_release_api.py`
### Implementation for User Story 3
@@ -133,7 +133,7 @@
**Purpose**: Финализация, smoke-проверки и governance-замыкание.
- [X] T039 [P] Run end-to-end smoke validation of TUI scenario from `quickstart.md` and record results in `specs/023-clean-repo-enterprise/quickstart.md`
- [X] T040 [P] Validate OpenAPI contract consistency against implemented routes in `backend/tests/api/routes/test_clean_release_api.py`
- [X] T040 [P] Validate OpenAPI contract consistency against implemented routes in `backend/src/api/routes/__tests__/test_clean_release_api.py`
- [X] T041 Add release checklist artifact template for compliance evidence packaging in `specs/023-clean-repo-enterprise/checklists/release-readiness.md`
- [X] T042 Resolve numeric-prefix governance conflict note (`020-*`) and document decision in `specs/023-clean-repo-enterprise/plan.md`
- [X] T043 Update feature status traceability and final notes in `specs/023-clean-repo-enterprise/plan.md`
@@ -220,4 +220,4 @@ Task: "T024 [US2] Update TUI view model for Allowed Internal Sources and blockin
- Tasks explicitly preserve TUI/ncurses interaction model from [`ux_reference.md`](./ux_reference.md).
- No task introduces web UI replacement for the primary operator flow.
- Each user story phase contains a mandatory UX conformance verification task.
- Each user story phase contains a mandatory UX conformance verification task.

View File

@@ -1,3 +1,8 @@
# [DEF:specs.023-clean-repo-enterprise.tests.README:Module]
# @COMPLEXITY: 1
# @PURPOSE: Test Strategy and coverage matrices for Clean Repository Enterprise Profile.
# [/DEF:specs.023-clean-repo-enterprise.tests.README:Module]
# Test Strategy: Clean Repository Enterprise Profile
## Overview
@@ -17,5 +22,5 @@ This directory contains strategy, coverage matrices, and execution reports for t
## Execution
Run testing via Pytest targeting backend test modules:
```bash
cd backend && .venv/bin/python3 -m pytest tests/services/clean_release tests/api/routes/test_clean_release_api.py tests/api/routes/test_clean_release_source_policy.py -v
cd backend && .venv/bin/python3 -m pytest tests/services/clean_release src/api/routes/__tests__/test_clean_release_api.py src/api/routes/__tests__/test_clean_release_source_policy.py -v
```