200 lines
9.3 KiB
Markdown
200 lines
9.3 KiB
Markdown
# Pilot freeze readiness AWatch-rus
|
||
|
||
Статус: pilot freeze candidate.
|
||
|
||
Документ фиксирует gate перед заморозкой текущего `main` для пилота. Freeze не
|
||
добавляет новую функциональность, не меняет архитектуру и не упрощает
|
||
существующие контуры. Цель gate - подтвердить, что текущий main можно
|
||
демонстрировать и донастраивать в пилоте без расширения заявлений о продукте.
|
||
|
||
## 1. Границы продукта
|
||
|
||
AWatch-rus Pilot v1 позиционируется как Workforce-first платформа с отдельными
|
||
ролями Security и Forensics.
|
||
|
||
В рамках pilot freeze запрещено заявлять AWatch-rus как:
|
||
|
||
- SIEM;
|
||
- enterprise DLP;
|
||
- EDR/XDR;
|
||
- сертифицированное СЗИ;
|
||
- ML/LLM UEBA;
|
||
- готовый pfSense production ingestion или SIEM ingestion.
|
||
|
||
UEBA v1 является rule-based risk scoring для ручной проверки. Риск не является
|
||
автоматическим вердиктом и не доказывает нарушение без анализа человеком.
|
||
|
||
pfSense в текущем пилоте допускается только как
|
||
contract/readiness/optional integration layer. Его статус в demo/pilot
|
||
материалах: `contract_only` или `readiness`, если отдельный production
|
||
ingestion не включен и не принят отдельным gate.
|
||
|
||
## 2. Архитектурная фиксация
|
||
|
||
Pilot freeze candidate сохраняет текущую архитектуру:
|
||
|
||
- Rust Backend;
|
||
- Rust Agent;
|
||
- Rust-first operational CLIs and services;
|
||
- HTML/HTMX Portal;
|
||
- role-based Pilot v1;
|
||
- documented PowerShell runtime/fallback/installer/repair layer до отдельного
|
||
retirement gate;
|
||
- future React/TypeScript UI только как future direction;
|
||
- Tauri только как future desktop Forensics;
|
||
- Dioxus не рассматривается.
|
||
|
||
Breaking changes, architecture changes и simplifications в рамках freeze gate
|
||
запрещены.
|
||
|
||
## 3. Роли Pilot v1
|
||
|
||
Ожидаемая видимость ролей:
|
||
|
||
| Роль | Видимость |
|
||
|---|---|
|
||
| `executive` | Только executive-level: главный вывод, агрегированные риски, итоговые управленческие действия без сырых технических очередей. |
|
||
| `manager` | Workforce/department/owner/activity: загрузка, подразделения, ответственные, тренды и управленческие отчеты. |
|
||
| `security` | Security/UEBA/pfSense readiness: candidates, severity, rule-based UEBA, security context и `contract_only` readiness. |
|
||
| `forensics` | Investigation/evidence/reporting: карточки расследований, timeline, evidence package и Markdown export. |
|
||
| `admin` | Административные и технические функции: полнота данных, качество сбора, источники, fallback, service/readiness status. |
|
||
|
||
Если документация или тесты расходятся с этой матрицей, исправлять нужно
|
||
документацию или тестовые ожидания. Бизнес-логику менять только при отдельном
|
||
подтвержденном дефекте.
|
||
|
||
## 4. Обязательные проверки
|
||
|
||
Перед фиксацией pilot freeze candidate выполнить:
|
||
|
||
```bash
|
||
cd adk-rust
|
||
cargo fmt --all -- --check
|
||
cargo test --workspace
|
||
cargo clippy --workspace --all-targets -- -D warnings
|
||
cargo build --workspace --release
|
||
```
|
||
|
||
Из корня репозитория выполнить:
|
||
|
||
```bash
|
||
bash scripts/verify_release_assets.sh dist/release-v0.2
|
||
bash scripts/check_private_config_guard.sh
|
||
bash scripts/check_production_inventory_placeholders.sh
|
||
bash scripts/check_demo_safety.sh
|
||
node scripts/pilot-validation-smoke.mjs
|
||
node scripts/detmir-pilot-demo-smoke.mjs
|
||
node scripts/detmir-portal-tabs-smoke.mjs
|
||
```
|
||
|
||
Для Windows/PowerShell слоя выполнить синтаксические и policy-safe проверки на
|
||
Windows-хосте или в CI-среде, где доступен PowerShell:
|
||
|
||
```powershell
|
||
Get-ChildItem .\windows -Filter *.ps1 -Recurse | ForEach-Object {
|
||
$tokens = $null
|
||
$errors = $null
|
||
$null = [System.Management.Automation.Language.Parser]::ParseFile(
|
||
$_.FullName,
|
||
[ref]$tokens,
|
||
[ref]$errors
|
||
)
|
||
if ($errors.Count -gt 0) { throw "$($_.FullName): $($errors[0].Message)" }
|
||
}
|
||
```
|
||
|
||
Также проверить release/demo artifacts:
|
||
|
||
```bash
|
||
git diff --check
|
||
bash scripts/check_demo_safety.sh
|
||
```
|
||
|
||
Ожидаемый результат для публичных tracked docs: нет live IP, hostnames, ФИО,
|
||
логинов сотрудников заказчика, названий подразделений заказчика, live case IDs,
|
||
runtime evidence paths, токенов и паролей. Допустимы только placeholders,
|
||
TEST-NET адреса, `.example` файлы и явно обезличенные demo fixtures.
|
||
|
||
## 5. PowerShell/Rust migration gate
|
||
|
||
Rust-primary направление сохраняется.
|
||
|
||
Это не заявление о полном удалении PowerShell. В текущем pilot freeze часть
|
||
PowerShell допустима как documented fallback/installer/support layer.
|
||
|
||
PowerShell scripts не удалять автоматически. Оставшиеся runtime/fallback пути
|
||
нельзя удалять до выполнения всех условий:
|
||
|
||
- Rust replacement имеет parity по данным и ошибкам;
|
||
- прошел burn-in на пилотном контуре;
|
||
- выполнен canary/rollback gate;
|
||
- rollback path документирован и проверен;
|
||
- Scheduled Tasks/Services больше не ссылаются на удаляемый script;
|
||
- acceptance gate явно разрешает удаление.
|
||
|
||
Installer/repair PowerShell layer можно заменять постепенно: Rust dry-run,
|
||
structured report, apply mode, затем удаление старого слоя только после
|
||
проверки ссылок и отката.
|
||
|
||
Полное удаление PowerShell не входит в текущий pilot freeze.
|
||
|
||
## 6. Demo data hygiene
|
||
|
||
Demo data, screenshots, evidence pack и отчеты не должны содержать:
|
||
|
||
- реальные IP-адреса;
|
||
- реальные hostnames;
|
||
- ФИО сотрудников заказчика;
|
||
- логины сотрудников заказчика;
|
||
- названия подразделений заказчика;
|
||
- реальные security events;
|
||
- live case IDs;
|
||
- runtime evidence paths.
|
||
|
||
Для сетевых примеров использовать только RFC 5737 TEST-NET адреса:
|
||
`192.0.2.0/24`, `198.51.100.0/24`, `203.0.113.0/24`.
|
||
|
||
Автоматический gate:
|
||
|
||
```bash
|
||
bash scripts/check_demo_safety.sh
|
||
```
|
||
|
||
Gate проверяет корневой `README.md`, demo/pilot/customer-facing документы,
|
||
`docs/demo/`, `docs/fixtures/`, evidence-pack и screenshots metadata. Перед
|
||
публикацией demo-pack дополнительно нужен ручной визуальный просмотр PNG:
|
||
скрипт проверяет PNG-сигнатуру, размер и текстовые метаданные, но не выполняет
|
||
OCR содержимого изображения.
|
||
|
||
## 7. Known limitations
|
||
|
||
- Pilot v1 не является сертифицированным средством защиты информации.
|
||
- UEBA v1 rule-based и не использует ML/LLM claims.
|
||
- pfSense находится в `contract_only/readiness` контуре, если ingestion не
|
||
включен отдельным production gate.
|
||
- Некоторые PowerShell runtime/fallback пути сохраняются до завершения
|
||
burn-in/canary/rollback gate.
|
||
- Demo fixtures не являются production ingestion и не доказывают полноту
|
||
production-интеграций.
|
||
- Security candidates и derived cases являются сигналами для ручной проверки,
|
||
а не подтвержденными инцидентами.
|
||
|
||
## 8. Follow-up после freeze
|
||
|
||
- Update GitHub Actions versions / Node runtime deprecation cleanup.
|
||
|
||
Этот пункт является техническим долгом и не блокирует pilot freeze. Менять
|
||
workflow в рамках freeze можно только минимально, без изменения release
|
||
semantics и только при сохранении зеленого CI.
|
||
|
||
## 9. Freeze decision
|
||
|
||
Pilot freeze candidate можно фиксировать только если:
|
||
|
||
- обязательные проверки выполнены или documented exception внесен в release
|
||
notes;
|
||
- границы продукта в README, pilot docs и acceptance docs согласованы;
|
||
- demo data hygiene подтверждена;
|
||
- PowerShell fallback не удален без gate;
|
||
- known limitations включены в материалы пилота.
|