server-monitor-manager/agents/codex/done/2026-09-05-full-project-analysis.md
Ochenstarik aae4d2dcb3
Some checks are pending
Linux control and agent / build-and-test (push) Waiting to run
Windows build / build (push) Waiting to run
chore(agents): plan project completion and review
2026-09-05 16:18:06 +07:00

8.9 KiB
Raw Permalink Blame History

Отчёт: полный анализ состояния проекта

  • Задание: ../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 и/или установленный пакет. Найденные дефекты не исправлялись согласно границам аналитической задачи.