server-monitor-manager/agents/_salvage-2026-08-18/smm-deliverables/Старые задачи/pr-body-desktop-update-proof.md
Ochenstarik 23eb3f5233 chore(agents): разбор рабочих папок с диска на 2026-08-18
Задания, отчёты и патчи, лежавшие в C:\Users\Ochenstarik\projects и в
домашней папке, перенесены в agents/. Разложено по агентам там, где имя
файла позволяло определить автора; остальное — в _salvage-2026-08-18/
и разбирается вручную.

Патчи в notes/salvage-2026-08-18/ — незакоммиченная работа из брошенных
рабочих копий: она существовала только на диске.

Тяжёлое (релизные архивы, инсталляторы, наборы данных) в репозиторий не
попало: оно лежит рядом, в Agent_projects/_archive и Agent_projects/_data.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 14:19:54 +07:00

6.2 KiB
Raw Blame History

Antigravity: доказать проверку подписи на стороне Desktop

Реализован и проверен набор тестов приёмки и негативных проверок против опубликованного релиза (smm-antigravity-task-desktop-update-proof-2026-08-13.md).


Что сделано

  1. Приёмочный тест против опубликованного релиза (AcceptanceRealReleaseManifestAndSignatureAreAccepted):
    • Скачивает server-monitor-manager-manifest.json, .sig и .pem для тега релиза через публичный HTTP-транспорт без gh и без токенов.
    • Тег релиза параметризован через переменную окружения SMM_TEST_RELEASE_TAG со значением по умолчанию v0.1.0-alpha.14 и поддержкой проверки свежих релизов (включая v0.1.0-alpha.18).
    • Прогоняет настоящие файлы релиза через ProcessSignatureVerifier и UpdateService.
    • Подтверждает, что подпись и сертификат успешно верифицируются через cosign (Fulcio OIDC identity linux-release.yml), извлекается корректная версия, валидный URL скачивания MSIX и хэш SHA-256.
  2. Четыре негативных сценария на реальном материале:
    • Negative1TamperedHashInRealManifestIsRejected: динамическая подмена хэша в настоящем manifest приводит к отказу верификации подписи;
    • Negative2RealManifestWithSignatureFromDifferentIdentityIsRejected: подпись от посторонней identity отвергается;
    • Negative3MissingCertificateIsRejected: отсутствие сертификата приводит к отказу;
    • Negative4CertificateFromDifferentWorkflowIsRejected: сертификат от другого workflow/эмитента отвергается.
  3. Разделение тестов на два независимых шага в windows-build.yml:
    • Test Desktop security: выполняет dotnet test ... --filter Category!=LiveRelease — основной быстрый офлайн-гейт без обращения к внешним сетевым ресурсам;
    • Test Desktop security (live release): выполняет dotnet test ... --filter Category=LiveRelease с SMM_TEST_RELEASE_TAG: v0.1.0-alpha.18 — изолированный сетевой шаг проверки реального релиза.
  4. Подтверждение исполнения тестов в Windows CI:
    • Факт реального исполнения доказан намеренной поломкой (несовпадение assertion по версии) с падением шага Test Desktop security в Windows CI (прогон 32049692162).

Отчёт о тестировании

1. Локальное тестирование (PASS)

  • Полный прогон: dotnet test tests/ServerMonitorManager.Desktop.Security.Tests29 тестов пройдено (24 модульных + 5 тестов реального релиза).
  • Офлайн-прогон: dotnet test --filter Category!=LiveRelease24 теста пройдено (266 мс).

2. Доказательство исполнения в Windows CI через намеренную поломку (FAIL -> PASS)

3. Границы изменений

  • git diff --name-only origin/main:
    • .github/workflows/windows-build.yml (разделение шагов запуска тестов)
    • tests/ServerMonitorManager.Desktop.Security.Tests/LiveReleaseUpdateVerificationTests.cs (тесты проверки реального релиза)
  • Все изменения находятся строго в разрешённой области.

4. Что не запускалось и почему

  • Физическая установка скачанного MSIX пакета через запуск UI установщика Windows не выполнялась в автоматическом тесте, так как цель задания — строгая криптографическая проверка подписи и хэша manifest/MSIX на реальных артефактах релиза в тестовом окружении.