docs(release): add readiness v0.1 package

This commit is contained in:
igor04091968
2026-06-03 21:53:23 +03:00
parent 5aab90f27d
commit 8db9f180ab
13 changed files with 403 additions and 0 deletions
+32
View File
@@ -1,5 +1,37 @@
# Журнал изменений # Журнал изменений
## release-readiness-v0.1 - 2026-06-03
Назначение этапа: довести DetMir/AWatch-rus до проверяемого release-readiness
пакета для пилота, экспертной оценки и последующей публикации релиза без
раскрытия приватного коммерческого контура.
### Добавлено
- UI-блок портала `Готовность системы`: статус `OK/WARN/FAIL`, дата bundle,
статус checksum, статус detached signature, fingerprint публичного ключа и
ручная кнопка проверки bundle.
- Prometheus/Grafana alert rules:
`detmir_readiness_ok == 0` и
`detmir_readiness_signature_verified == 0`.
- Подпись readiness bundle через detached signature `sha256sums.txt.sig`.
- Retention для readiness archives и unit-тесты на подпись/retention.
- `docs/RELEASE_READINESS_V0.1_RU.md` - сводный акт готовности релиза v0.1.
- `docs/SBOM_V0.1_RU.md` - human-readable SBOM profile и команды генерации
машинных SBOM artifacts.
- `docs/PORTAL_SCREENSHOTS_RU.md` - перечень обезличенных screenshots портала.
- `docs/diagrams/release-readiness-v0.1.md` - схема release-readiness path.
### Проверено
- `cargo fmt --manifest-path adk-rust/Cargo.toml --all -- --check`.
- `cargo test --manifest-path adk-rust/Cargo.toml -p detmir-readiness -p detmir-portal`.
- `cargo clippy --manifest-path adk-rust/Cargo.toml -p detmir-readiness -p detmir-portal --all-targets -- -D warnings`.
- `node --check adk-rust/crates/detmir-portal/src/static/app.js`.
- Ansible syntax-check для AW server и DetMir portal deploy playbooks.
- Runtime deployment на проектные сервисы DetMir без изменения pfSense или
Proxmox platform layer.
## v1.0.1-public-review - 2026-06-03 ## v1.0.1-public-review - 2026-06-03
Назначение релиза: публичный пакет для экспертной оценки DetMir/AWatch-rus и Назначение релиза: публичный пакет для экспертной оценки DetMir/AWatch-rus и
+1
View File
@@ -152,4 +152,5 @@ DetMir не заявляется как сертифицированная СЗ
- `docs/ADMIN_GUIDE_RU.md` - `docs/ADMIN_GUIDE_RU.md`
- `docs/OPERATOR_GUIDE_RU.md` - `docs/OPERATOR_GUIDE_RU.md`
- `docs/GRAFANA_DASHBOARDS_RU.md` - `docs/GRAFANA_DASHBOARDS_RU.md`
- `docs/diagrams/release-readiness-v0.1.md`
- `adk-rust/RUNBOOK.md` - `adk-rust/RUNBOOK.md`
+24
View File
@@ -0,0 +1,24 @@
# Скриншоты портала release-readiness v0.1
Скриншоты предназначены для публичной демонстрации и экспертной оценки. Они
сняты на обезличенных mock data с реальным frontend-кодом портала.
Правило: screenshots не должны содержать live domains, private IPs,
пользовательские ФИО, live case IDs, runtime evidence paths или реальные
forensic hashes.
## Состав
| Экран | Файл |
|---|---|
| Оператор и готовность системы | `docs/screenshots/release-v0.1/portal-operator-readiness.png` |
| Руководитель и объяснение индекса | `docs/screenshots/release-v0.1/portal-manager-workforce.png` |
| Инциденты ИБ и evidence | `docs/screenshots/release-v0.1/portal-incidents-evidence.png` |
| Отчеты, UEBA/risk и Markdown export | `docs/screenshots/release-v0.1/portal-reports-risk.png` |
| Владелец и summary | `docs/screenshots/release-v0.1/portal-owner-summary.png` |
## Повторная генерация
Скриншоты можно переснимать только на demo/mock данных или на специально
обезличенном стенде. Live commercial DetMir contour не использовать как
источник публичных PNG без отдельной ручной проверки приватности.
+14
View File
@@ -16,6 +16,20 @@ contains sanitized source, documentation, install-kit archives, SBOM inputs and
checksums. It does not contain private runtime configuration, live customer checksums. It does not contain private runtime configuration, live customer
inventory, tokens, passwords, screenshots, runtime databases or evidence. inventory, tokens, passwords, screenshots, runtime databases or evidence.
## Release-readiness v0.1 overlay
Additional readiness artifacts:
- `docs/RELEASE_READINESS_V0.1_RU.md`
- `docs/SBOM_V0.1_RU.md`
- `docs/PORTAL_SCREENSHOTS_RU.md`
- `docs/diagrams/release-readiness-v0.1.md`
- `docs/screenshots/release-v0.1/portal-operator-readiness.png`
- `docs/screenshots/release-v0.1/portal-manager-workforce.png`
- `docs/screenshots/release-v0.1/portal-incidents-evidence.png`
- `docs/screenshots/release-v0.1/portal-reports-risk.png`
- `docs/screenshots/release-v0.1/portal-owner-summary.png`
## Artifacts ## Artifacts
```text ```text
+12
View File
@@ -4,6 +4,18 @@ Release tag: `v1.0.1-public-review`
Release type: public expert-review/source package. Release type: public expert-review/source package.
## Release-readiness v0.1 addendum
Добавлен отдельный слой готовности поставки:
- portal UI блок `Готовность системы`;
- signed readiness bundle с `sha256sums.txt.sig`;
- Prometheus/Grafana alerts по readiness и signature verification;
- SBOM profile `docs/SBOM_V0.1_RU.md`;
- release readiness акт `docs/RELEASE_READINESS_V0.1_RU.md`;
- architecture схема `docs/diagrams/release-readiness-v0.1.md`;
- обезличенные screenshots портала в `docs/screenshots/release-v0.1/`.
## Что входит ## Что входит
- Обезличенный public source package DetMir/AWatch-rus. - Обезличенный public source package DetMir/AWatch-rus.
+141
View File
@@ -0,0 +1,141 @@
# Release readiness v0.1
Документ фиксирует готовность DetMir/AWatch-rus к первому управляемому release
readiness циклу: проверяемость сборки, SBOM, installation/runbook, архитектура,
портал, readiness bundle и публичная гигиена.
Дата фиксации: `2026-06-03`.
## 1. Назначение
`release-readiness-v0.1` не является отдельным коммерческим SKU и не заменяет
GitHub release tag. Это контрольная точка готовности поставки перед пилотом,
экспертной оценкой и публикацией release assets.
Цели:
- показать, что контур проверяется одной readiness-командой;
- подтвердить подпись и checksum readiness bundle;
- зафиксировать SBOM/third-party inventory;
- дать эксперту повторяемую установку и ручной сценарий проверки;
- приложить обезличенные screenshots портала;
- сохранить разделение public source и live commercial DetMir runtime.
## 2. Состав release-readiness пакета
| Блок | Файл/артефакт | Статус |
|---|---|---|
| Changelog | `CHANGELOG_RU.md` | готов |
| Release notes | `docs/RELEASE_NOTES_2026-06.md` | готов |
| Manifest | `docs/RELEASE_MANIFEST_2026-06.md` | готов |
| SBOM profile | `docs/SBOM_V0.1_RU.md` | готов |
| SBOM checklist | `docs/SBOM_RELEASE_CHECKLIST_RU.md` | готов |
| Installation | `docs/INSTALL_FOR_EXPERT_RU.md`, `docs/INSTALL_RU.md` | готов |
| Runbook | `adk-rust/RUNBOOK.md`, `docs/runbook.md` | готов |
| Architecture | `docs/ARCHITECTURE_RU.md`, `docs/diagrams/release-readiness-v0.1.md` | готов |
| Portal screenshots | `docs/PORTAL_SCREENSHOTS_RU.md`, `docs/screenshots/release-v0.1/*.png` | готов |
| Readiness docs | `docs/PRODUCTION_READINESS_RU.md` | готов |
| Public audit | `docs/RELEASE_AUDIT_2026-06.md` | готов |
## 3. Readiness bundle
Минимальный состав latest bundle:
- `detmir-readiness-latest.json`;
- `detmir-readiness-act.md`;
- `detmir-readiness-act.html`;
- `sha256sums.txt`;
- `sha256sums.txt.sig`;
- `public-key.pem`;
- `detmir-readiness-status.json`;
- `detmir-readiness.prom`.
Критерии приемки:
- `detmir_readiness_ok 1`;
- `detmir_readiness_signature_verified 1`;
- `checksum_verified=true`;
- `signature.verified=true`;
- `signature.public_key_fingerprint_sha256` совпадает с публично
зафиксированным fingerprint в `adk-rust/RUNBOOK.md`.
## 4. Portal readiness UI
В портале должен быть виден блок `Готовность системы`:
- статус `OK/WARN/FAIL`;
- дата генерации readiness bundle;
- статус подписи;
- статус checksum;
- короткий fingerprint публичного ключа;
- кнопка `Проверить bundle`.
Проверяемые API:
```text
GET /api/readiness/bundle
GET /api/readiness/verify
```
Через внешний gateway эти endpoints должны оставаться под действующей схемой
аутентификации портала.
## 5. Prometheus/Grafana alerts
Alert rules:
```promql
detmir_readiness_ok == 0
detmir_readiness_signature_verified == 0
```
Поставочный файл:
```text
aw-server/detmir-readiness-alerts.yml
```
Цель: оператор должен увидеть не только падение health-check, но и нарушение
доказуемости readiness bundle.
## 6. Проверки перед публикацией
```bash
node --check adk-rust/crates/detmir-portal/src/static/app.js
cargo fmt --manifest-path adk-rust/Cargo.toml --all -- --check
CARGO_TARGET_DIR=/tmp/detmir-release-target \
cargo test --manifest-path adk-rust/Cargo.toml -p detmir-readiness -p detmir-portal
CARGO_TARGET_DIR=/tmp/detmir-release-target \
cargo clippy --manifest-path adk-rust/Cargo.toml -p detmir-readiness -p detmir-portal --all-targets -- -D warnings
ansible-playbook -i ansible/inventory.ini ansible/deploy_aw_server.yml --syntax-check
ansible-playbook -i ansible/inventory.ini ansible/deploy_detmir_portal.yml --syntax-check
git diff --check
```
Public hygiene gate:
```bash
PRIVATE_MARKERS_REGEX='<PRIVATE_HOSTNAME>|<PRIVATE_NETWORK>|<PRIVATE_DOMAIN>|<LOCAL_OPERATOR_HOME>|<ROOT_PRIVATE_PATH>'
git grep -n -E "$PRIVATE_MARKERS_REGEX" -- \
':!docs/RELEASE_AUDIT_2026-06.md' ':!*.zip' ':!*.tar.gz' ':!adk-rust/target/**' || true
git ls-files | grep -E '(^|/)secrets(/|$)|\.env$|inventory\.ini$' || true
```
## 7. Ограничения
- Screenshots для публичной поставки должны быть обезличены и сняты на mock
data или demo contour.
- Live inventory, live domains, private IPs, case IDs, forensic paths,
screenshots с реальными пользователями и runtime evidence не входят в Git.
- Telegram runtime остается Python.
- pfSense/network layer не входит в этот release-readiness этап.
## 8. Следующий уровень
Для `release-readiness-v0.2` нужны:
- машинный CycloneDX/SPDX SBOM как release asset;
- подписанный Git tag;
- release asset checksum verification в CI;
- smoke screenshots как CI artifact;
- отдельный customer pilot acceptance акт.
+118
View File
@@ -0,0 +1,118 @@
# SBOM v0.1
Этот документ является human-readable SBOM profile для
`release-readiness-v0.1`. Машинные SBOM artifacts должны формироваться из
проверенного commit и публиковаться как release assets.
## 1. Идентификатор
| Поле | Значение |
|---|---|
| Product | DetMir, программный комплекс AWatch-rus |
| SBOM profile | v0.1 |
| Date | 2026-06-03 |
| Scope | Source + Rust workspace + Python exceptions + Node/Playwright tooling + OS/service dependencies |
## 2. Основные компоненты
| Компонент | Роль | Тип зависимости |
|---|---|---|
| ActivityWatch | Сбор и хранение активности | upstream application |
| aw-server-rust | ActivityWatch server runtime | upstream/Rust |
| DetMir Rust crates | status, checks, portal, readiness, DLP/worktime helpers | собственный код |
| Grafana | Dashboards и визуализация | third-party application |
| Prometheus | Metrics и alert rules | third-party application |
| Hayabusa | Offline forensic/security analytics | third-party tool |
| Ansible | Deployment automation | third-party tool |
| Telegram bot runtime | Оповещения и operator workflow | Python exception |
| Playwright | Browser smoke/screenshots | test/release tooling |
## 3. Rust SBOM input
Команды генерации:
```bash
mkdir -p dist/sbom
cargo metadata --manifest-path adk-rust/Cargo.toml --format-version 1 \
> dist/sbom/cargo-metadata-v0.1.json
(cd adk-rust && cargo tree --workspace) \
> dist/sbom/cargo-tree-v0.1.txt
```
Рекомендуемый CycloneDX:
```bash
cargo install cargo-cyclonedx --locked
cargo cyclonedx --manifest-path adk-rust/Cargo.toml \
--format json --output-cdx dist/sbom/cyclonedx-rust-v0.1.json
```
## 4. Python SBOM input
Python остается как исключение, а не ядро продукта:
- Telegram runtime;
- legacy fallbacks;
- MCP/AI/ETL helpers;
- installer/release utilities.
Команды:
```bash
find aw-server clickhouse-1c detmir-mcp scripts -maxdepth 4 -type f \
\( -name 'requirements.txt' -o -name 'pyproject.toml' -o -name 'setup.py' \) \
-print -exec sha256sum {} \; > dist/sbom/python-inputs-v0.1.txt
```
Если используется virtualenv:
```bash
python3 -m pip freeze > dist/sbom/python-freeze-v0.1.txt
```
## 5. Node/Playwright SBOM input
Node используется для browser smoke и release screenshots.
```bash
npm ls --all --json > dist/sbom/npm-tree-v0.1.json
```
Если проект не содержит production Node runtime, этот artifact помечается как
`test/release tooling only`.
## 6. OS/service inventory
Для эталонной Debian/Ubuntu VM:
```bash
dpkg-query -W -f='${Package}\t${Version}\n' \
> dist/sbom/debian-packages-v0.1.tsv
systemctl list-unit-files 'detmir-*' 'aw-*' --no-pager \
> dist/sbom/systemd-units-v0.1.txt
```
## 7. License inventory
Основной документ:
```text
THIRD_PARTY_LICENSES_RU.md
```
Дополнительные checks:
```bash
cargo install cargo-deny --locked
(cd adk-rust && cargo deny check licenses)
```
## 8. Критерии приемки SBOM v0.1
- SBOM artifacts сформированы из того же commit, что и release package.
- SBOM не содержит secrets, live IPs, live domains, user home paths или
runtime evidence.
- Для каждого крупного компонента понятны роль, upstream и license source.
- Python обозначен как исключение/интеграционный слой, не как ядро продукта.
- Машинные SBOM JSON/TXT публикуются в GitHub Release assets, а не обязательно
хранятся в tracked source.
+61
View File
@@ -0,0 +1,61 @@
# Release-readiness v0.1 architecture
```mermaid
flowchart LR
subgraph Runtime["DetMir runtime"]
AW["ActivityWatch / Worktime / DLP telemetry"]
Portal["detmir-portal"]
Readiness["detmir-readiness"]
Metrics["Prometheus metrics"]
Grafana["Grafana alerts"]
end
subgraph Bundle["Readiness bundle"]
JSON["detmir-readiness-latest.json"]
Act["act.md / act.html"]
Sums["sha256sums.txt"]
Sig["sha256sums.txt.sig"]
Pub["public-key.pem"]
Prom["detmir-readiness.prom"]
end
subgraph Release["Release readiness package"]
Change["CHANGELOG_RU.md"]
SBOM["docs/SBOM_V0.1_RU.md"]
Install["docs/INSTALL_FOR_EXPERT_RU.md"]
Runbook["adk-rust/RUNBOOK.md"]
Arch["docs/ARCHITECTURE_RU.md"]
Shots["docs/screenshots/release-v0.1"]
end
AW --> Readiness
Readiness --> JSON
Readiness --> Act
Readiness --> Sums
Sums --> Sig
Pub --> Sig
Readiness --> Prom
Prom --> Metrics
Metrics --> Grafana
JSON --> Portal
Sums --> Portal
Sig --> Portal
Pub --> Portal
Portal --> Shots
Bundle --> Release
Change --> Release
SBOM --> Release
Install --> Release
Runbook --> Release
Arch --> Release
```
## Контрольные точки
1. `detmir-readiness` формирует bundle и Prometheus metrics.
2. Bundle имеет SHA-256 checksums и detached signature.
3. Portal показывает статус readiness и ручную проверку bundle.
4. Prometheus/Grafana поднимают alert при `detmir_readiness_ok == 0` или
`detmir_readiness_signature_verified == 0`.
5. Release package содержит changelog, SBOM profile, install/runbook,
architecture и обезличенные screenshots.
Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 261 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 336 KiB