130 lines
8.9 KiB
Markdown
130 lines
8.9 KiB
Markdown
# Отчёт: полный анализ состояния проекта
|
||
|
||
- **Задание:** `../inbox/2026-09-05-full-project-analysis.md`
|
||
- **Дата:** 2026-09-05
|
||
- **Изменения продукта:** отсутствуют
|
||
|
||
## Итог
|
||
|
||
Проект представляет собой функционально насыщенную alpha-версию: Control,
|
||
Agent, Core и restricted Provisioning Helper собираются; основной набор из 158
|
||
тестов проходит. Базовые monitoring, mTLS identities, Links, SQLite, web console,
|
||
release/bootstrap chain и каркас provisioning реализованы. Проект пока нельзя
|
||
считать production-ready: не закрыт Горизонт 0, mutating provisioning ограничен
|
||
сменой timezone, нет физической mesh/reboot-приёмки и доверенной подписи MSIX.
|
||
|
||
В roadmap отмечено 100 выполненных и 79 невыполненных пунктов. Значительная
|
||
часть 79 пунктов относится к будущим горизонтам и не должна начинаться сейчас.
|
||
|
||
## Что реализовано
|
||
|
||
- WinUI Desktop, Control Hub ASP.NET Core, Linux Agent, общий Core и отдельный
|
||
restricted provisioning helper.
|
||
- Мониторинг ресурсов, SSH/WireGuard/latency, локальная история и diagnostics.
|
||
- mTLS enrollment и разделённые Agent/Operator/Automation identities.
|
||
- Directional Links, TTL, kill switch, audit, event stream и reconciliation.
|
||
- SQLite schema/retention/backup, Agent offline buffer и нагрузочный тест 100 Nodes.
|
||
- Bootstrap/install/update/rollback/uninstall, WireGuard/nftables, signed release
|
||
manifest и compatibility checks.
|
||
- Provisioning job state machine, immutable plan, execution grant, audit и один
|
||
фактически исполняемый mutating increment: timezone-only с verification/rollback.
|
||
|
||
## Что осталось: фактический порядок
|
||
|
||
### P0 — закрыть Горизонт 0
|
||
|
||
1. Провести физический acceptance на реальной топологии Hub + source Node + два
|
||
destination Node с `SMM_ACCEPT_RESTORE=1 SMM_ACCEPT_REBOOT=1`. CI это не
|
||
заменяет.
|
||
2. Завершить lifecycle сертификатов: автопродление Agent и документированная,
|
||
проверенная ротация Control CA.
|
||
3. Настроить постоянную доверенную Windows code-signing identity. Сейчас MSIX
|
||
test-signed.
|
||
4. Разобрать дефект версии MSIX: `Package.appxmanifest` всё ещё содержит
|
||
`1.0.0.6`; открыто отдельное непринятое задание.
|
||
5. Синхронизировать release status: корневой README и все 11 переводов говорят
|
||
`alpha.14`, тогда как история релизов дошла до `alpha.20`.
|
||
|
||
### P1 — уже заведённые дефекты текущей alpha
|
||
|
||
- Web console: нет поведенческих JS-тестов; существующие проверки в основном
|
||
доказывают наличие разметки.
|
||
- Web console: каждое `link.*`/`agent.*` событие напрямую вызывает
|
||
`loadDashboardData`, то есть пачка событий усиливает запросы; throttle/debounce
|
||
отсутствует.
|
||
- Web console: нет Operator API и UI для последних метрик/короткой истории узлов.
|
||
- Link reconciliation: маркер читается до проверки `_backoffUntil`, а timer
|
||
жёстко использует `min(configured, 30s)`; непринятое задание подтверждено кодом.
|
||
- Desktop UI для управления Automation identities/tokens отсутствует.
|
||
- Группы/теги/избранное, настраиваемые alert rules и управляемая отдельная
|
||
terminal-key identity отсутствуют.
|
||
|
||
### P2 — довести provisioning до полезного продукта
|
||
|
||
- Полная execution/retry/verification/rollback state machine для остальных
|
||
действий, versioned schemas и desired/factual/drift для всех action types.
|
||
- Полный preflight OS/arch/SSH/firewall/APT/capabilities.
|
||
- Desktop wizard locale/packages/swap/unattended upgrades.
|
||
- Root-only backups и symlink protection.
|
||
- User/SSH key/sudo/block/session/service lifecycle с factual verification и
|
||
rollback.
|
||
- Managed firewall editor и безопасная двухфазная миграция SSH-порта.
|
||
|
||
### P3 — качество и эксплуатация
|
||
|
||
- Настоящие Debian reboot tests, полная VM matrix и physical alpha acceptance.
|
||
- Долговременный soak test и измеримые performance budgets.
|
||
- Устранить предупреждения анализаторов: solution build выдаёт 41 warning;
|
||
наиболее содержательные — незакрываемые `SemaphoreSlim` в `MetricBuffer`,
|
||
непереданный cancellation token в helper и дорогой/неструктурированный logging.
|
||
- Добавить Desktop и Desktop security test project в общий solution либо явно
|
||
документировать раздельную проверку. Сейчас обычный `dotnet build/test` solution
|
||
их не охватывает.
|
||
- Разобрать зависание Desktop security tests: отдельный прогон собрал проект, но
|
||
не завершился более чем за минуту и был остановлен. Причина не определена.
|
||
|
||
### P4 — только после соответствующих гейтов
|
||
|
||
- Горизонт 1: approval policies, alerts/incidents, read-only Telegram,
|
||
Docker/systemd observation/actions, Backup Manager.
|
||
- Горизонт 2: полноценная web authentication model, Secret Vault, centralized
|
||
logs, security posture, multi-Hub phase 1 и один Xray module.
|
||
- Горизонт 3: KAgent integration.
|
||
- Дополнительные Desktop/mobile clients и push notifications.
|
||
|
||
## Несогласованности и организационный долг
|
||
|
||
- `ServerMonitorManager.slnx` не содержит Desktop и Desktop security tests,
|
||
хотя README предлагает `dotnet build ServerMonitorManager.slnx` как сборку
|
||
Windows client.
|
||
- README заявляет текущий релиз `alpha.14`; release policy и tag history — до
|
||
`alpha.20`.
|
||
- В `agents/*/inbox` без одноимённых отчётов остаются 7 ранее выданных задач:
|
||
4 Antigravity и 3 Codex. Наличие задания не доказывает, что работа не велась,
|
||
но по принятой схеме результат не сдан и не принят.
|
||
- Поиск TODO/FIXME/NotImplemented не обнаружил явных продуктовых заглушек;
|
||
совпадения `placeholder` в Desktop относятся к UI placeholder text.
|
||
|
||
## Проверки и фактический результат
|
||
|
||
1. `dotnet restore ServerMonitorManager.slnx --verbosity minimal`
|
||
— exit 0, восстановлены пять проектов solution.
|
||
2. `dotnet build ServerMonitorManager.slnx --configuration Release --no-restore`
|
||
— exit 0, 0 ошибок, 41 предупреждение.
|
||
3. `dotnet test tests/ServerMonitorManager.Control.Tests/... --configuration Release --no-build`
|
||
— вне sandbox: 158 passed, 0 failed, 0 skipped, 17 s.
|
||
4. Тот же test в sandbox — 132 passed, 26 failed из-за denied access к Windows
|
||
certificate storage/Event Log. Повтор вне sandbox доказал, что это ограничение
|
||
среды, а не продуктовый regression.
|
||
5. `dotnet test tests/ServerMonitorManager.Desktop.Security.Tests/...`
|
||
— restore/build успешны с предупреждениями; test run не завершился более чем
|
||
за минуту, остановлен. Зелёный результат не получен.
|
||
6. Статический подсчёт: 67 source `.cs`, 33 test `.cs`, 164 `[Fact]/[Theory]`,
|
||
roadmap 100 checked / 79 unchecked.
|
||
|
||
## Не сделано
|
||
|
||
Физические Linux/mesh/reboot проверки, GitHub Actions/release rehearsal и
|
||
установка MSIX поверх старой версии не запускались: для них нужны внешняя
|
||
топология, GitHub execution и/или установленный пакет. Найденные дефекты не
|
||
исправлялись согласно границам аналитической задачи.
|