8.9 KiB
Отчёт: полный анализ состояния проекта
- Задание:
../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
- Провести физический acceptance на реальной топологии Hub + source Node + два
destination Node с
SMM_ACCEPT_RESTORE=1 SMM_ACCEPT_REBOOT=1. CI это не заменяет. - Завершить lifecycle сертификатов: автопродление Agent и документированная, проверенная ротация Control CA.
- Настроить постоянную доверенную Windows code-signing identity. Сейчас MSIX test-signed.
- Разобрать дефект версии MSIX:
Package.appxmanifestвсё ещё содержит1.0.0.6; открыто отдельное непринятое задание. - Синхронизировать 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/testsolution их не охватывает. - Разобрать зависание 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.
Проверки и фактический результат
dotnet restore ServerMonitorManager.slnx --verbosity minimal— exit 0, восстановлены пять проектов solution.dotnet build ServerMonitorManager.slnx --configuration Release --no-restore— exit 0, 0 ошибок, 41 предупреждение.dotnet test tests/ServerMonitorManager.Control.Tests/... --configuration Release --no-build— вне sandbox: 158 passed, 0 failed, 0 skipped, 17 s.- Тот же test в sandbox — 132 passed, 26 failed из-за denied access к Windows certificate storage/Event Log. Повтор вне sandbox доказал, что это ограничение среды, а не продуктовый regression.
dotnet test tests/ServerMonitorManager.Desktop.Security.Tests/...— restore/build успешны с предупреждениями; test run не завершился более чем за минуту, остановлен. Зелёный результат не получен.- Статический подсчёт: 67 source
.cs, 33 test.cs, 164[Fact]/[Theory], roadmap 100 checked / 79 unchecked.
Не сделано
Физические Linux/mesh/reboot проверки, GitHub Actions/release rehearsal и установка MSIX поверх старой версии не запускались: для них нужны внешняя топология, GitHub execution и/или установленный пакет. Найденные дефекты не исправлялись согласно границам аналитической задачи.