server-monitor-manager/agents/antigravity/inbox/2026-09-05-agent-certificate-lifecycle.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

6.8 KiB
Raw Blame History

Автопродление Agent-сертификата и ротация Control CA

  • Кому: antigravity
  • Дата: 2026-09-05
  • От кого: владелец проекта через проверяющего codex
  • Ветка: antigravity/agent-certificate-lifecycle
  • Файл отчёта: ../done/2026-09-05-agent-certificate-lifecycle.md

Что нужно сделать

Закрыть оставшийся программный критерий certificate lifecycle Горизонта 0:

  1. Реализовать автоматическое продление сертификата Agent до истечения срока без потери накопленных метрик и без повторного использования отозванной identity.
  2. Сделать замену сертификата атомарной: сбой после получения нового материала не должен уничтожать рабочий старый сертификат; после успешной замены старый не должен продолжать использоваться.
  3. Определить и зафиксировать порог продления, retry/backoff, поведение при недоступном Control, при clock skew и при отзыве сертификата.
  4. Документировать операционную ротацию Control CA с rollback/recovery: подготовка, распространение trust, переключение, проверка Agent/Operator/Desktop, завершение старой CA и действия при частично обновлённом флоте.
  5. Обновить roadmap/horizon status только для критериев, доказанных тестами и воспроизводимой процедурой. Не объявлять Горизонт 0 закрытым: физический mesh acceptance проверяется отдельным заданием.

Порядок выполнения

Это задание начинается после закрытия уже находящихся в твоём inbox задач:

  1. 2026-08-19-console-behaviour-tests.md;
  2. 2026-08-19-console-events-throttle.md;
  3. 2026-08-20-console-node-metrics.md;
  4. 2026-08-20-reconciliation-poll-interval.md.

По каждой из них нужен отдельный отчёт; объединять их изменения с certificate lifecycle в один PR запрещено.

Обязательное обновление локального репозитория перед началом

Не начинать certificate lifecycle из текущей рабочей ветки или поверх чужих незакоммиченных изменений. Сначала завершить и сдать предыдущую задачу, убедиться, что рабочее дерево чистое, затем выполнить:

git fetch --all --prune
git switch main
git pull --ff-only gitea main
git switch -c antigravity/agent-certificate-lifecycle
git status --short --branch

Если git pull --ff-only не проходит, локальный main содержит собственные коммиты либо рабочее дерево не чистое — не использовать reset/rebase и не терять изменения. Остановиться, записать фактический вывод в отчёт и передать ситуацию проверяющему. В отчёте обязательно привести commit SHA актуального gitea/main, от которого создана рабочая ветка.

Границы

Допустимы Agent, Control, Core, относящиеся к lifecycle тесты и документация ротации CA. Не менять web console, Links, provisioning actions, deploy/**, release workflows, MSIX version и release-status переводы. Доверенная подпись MSIX и физическая three-server приёмка — отдельные работы.

Не ослаблять mTLS, revocation, CSR ownership, срок одноразовых token или проверки привязки Node identity. Не добавлять silent fallback на недоверенный сертификат.

Как проверить результат

Обязательные доказательства в отчёте:

  • dotnet build ServerMonitorManager.slnx --configuration Release — фактический вывод, ошибок 0;
  • полный dotnet test Control-набора — все тесты зелёные;
  • тесты: продление при остатке менее порога; отсутствие продления выше порога; Control недоступен — старый валидный сертификат продолжает работать и метрики сохраняются; revoked certificate не продлевается; mismatch node_id отвергается; прерванная атомарная замена сохраняет рабочий сертификат; повтор запроса идемпотентен либо явно безопасен;
  • каждый новый тест показать зелёным на исправном коде и красным на намеренно сломанном соответствующем поведении;
  • отдельная репетиция процедуры CA rotation на disposable Control + минимум одном Agent: команды, фактические fingerprints/chain results до и после, reconnect и rollback. Если полноценная dual-trust схема ещё не реализуема, не отмечать критерий выполненным, а вернуть точный блокер и минимальное следующее задание;
  • ссылки на зелёные CI-прогоны PR.

Контекст и ограничения

Источник требований: docs/product-horizons.md, Горизонт 0, и docs/roadmap.md, этап 14. В репозитории уже есть CertificateLifecycleTests; существование тестов не доказывает наличие полного runtime lifecycle — необходимо проследить фактический Agent path от определения срока до атомарного переключения сохранённого PFX.

Приёмку выполняет codex. Не пушить в main и не смешивать с соседними исправлениями.