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

130 lines
8.9 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.

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