Files
AWatch-rus/docs/RELEASE_READINESS_V0.2_RU.md
T

138 lines
4.8 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.
# Release readiness v0.2
`release-readiness-v0.2` усиливает v0.1 в части коммерческого релиза и
подготовки к реестру российского ПО.
Дата фиксации: `2026-06-03`.
## 1. Что добавлено
| Блок | Файл |
|---|---|
| Machine SBOM generation | `scripts/generate_release_sbom_v0_2.sh` |
| Release asset verification | `scripts/verify_release_assets.sh` |
| CI checksum/signature self-test | `.github/workflows/release-assets.yml` |
| Pilot acceptance act | `docs/CUSTOMER_PILOT_ACCEPTANCE_RU.md` |
| pfSense perimeter positioning | `docs/NETWORK_PERIMETER_PFSENSE_RU.md` |
| Pilot freeze gate | `docs/PILOT_FREEZE_READINESS_RU.md` |
## 2. Machine SBOM as GitHub Release asset
Сгенерировать assets:
```bash
bash scripts/generate_release_sbom_v0_2.sh dist/release-v0.2
```
Ожидаемые файлы:
```text
dist/release-v0.2/sbom/cyclonedx-rust-v0.2.json
dist/release-v0.2/sbom/spdx-rust-v0.2.json
dist/release-v0.2/sbom/cargo-metadata-v0.2.json
dist/release-v0.2/sbom/cargo-tree-v0.2.txt
dist/release-v0.2/sbom/python-inputs-v0.2.txt
dist/release-v0.2/RELEASE_ASSETS_MANIFEST-v0.2.json
dist/release-v0.2/SHA256SUMS-v0.2.txt
```
Эти файлы публикуются как GitHub Release assets. Они не хранятся в tracked
source, потому что `dist/` является generated output.
## 3. Подпись release assets
Release manager подписывает checksum file detached signature:
```bash
openssl dgst -sha256 -sign <RELEASE_PRIVATE_KEY.pem> \
-out dist/release-v0.2/SHA256SUMS-v0.2.txt.sig \
dist/release-v0.2/SHA256SUMS-v0.2.txt
```
Проверка:
```bash
RELEASE_VERIFY_PUBLIC_KEY=<RELEASE_PUBLIC_KEY.pem> \
bash scripts/verify_release_assets.sh dist/release-v0.2
```
## 4. Подписанный Git tag
Требование для финального релиза:
```bash
git tag -s release-readiness-v0.2 -m "release-readiness-v0.2"
git tag -v release-readiness-v0.2
git push origin release-readiness-v0.2
```
Tag должен быть подписан пользовательским ключом правообладателя/maintainer, а
не сторонним системным ключом пакетов ОС.
## 5. CI gate
Workflow:
```text
.github/workflows/release-assets.yml
```
Проверяет:
- генерацию CycloneDX/SPDX JSON;
- валидность JSON;
- self-test checksum/signature verifier;
- отрицательные сценарии checksum mismatch и missing signature.
## 6. Pilot acceptance
Шаблон:
```text
docs/CUSTOMER_PILOT_ACCEPTANCE_RU.md
```
Использовать для коммерческого пилота после установки и первичной настройки.
Публичная версия должна оставаться обезличенной.
Перед фиксацией pilot freeze candidate использовать:
```text
docs/PILOT_FREEZE_READINESS_RU.md
```
Этот gate не добавляет функциональность. Он проверяет, что текущий main
остается в границах Pilot v1: Rust Backend, Rust Agent, HTML/HTMX Portal,
role-based views, rule-based UEBA v1, pfSense только как
contract/readiness/optional integration layer и сохраненный PowerShell
runtime/fallback до burn-in/canary/rollback gate.
Полное удаление PowerShell не входит в `release-readiness-v0.2` или текущий
pilot freeze: оставшиеся runtime/fallback/installer/repair scripts считаются
документированным слоем отката, установки и поддержки.
## 7. pfSense perimeter
Документ:
```text
docs/NETWORK_PERIMETER_PFSENSE_RU.md
```
Ключевая позиция: pfSense является опциональным интеграционным слоем, а не
обязательной частью продукта AWatch-rus.
## 8. Acceptance checklist
- SBOM assets сгенерированы.
- `SHA256SUMS-v0.2.txt` создан.
- `SHA256SUMS-v0.2.txt.sig` создан release private key.
- `scripts/verify_release_assets.sh` проходит с public key.
- Git tag подписан ключом maintainer.
- GitHub release содержит SBOM JSON/TXT, manifest, checksum и signature.
- `CUSTOMER_PILOT_ACCEPTANCE_RU.md` заполнен для пилотного заказчика.
- pfSense не описан как обязательный компонент продукта.
- `PILOT_FREEZE_READINESS_RU.md` заполнен для pilot freeze candidate.
- PowerShell retirement не заявлен как выполненный без отдельного
burn-in/canary/rollback/acceptance gate.