Задания, отчёты и патчи, лежавшие в 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>
6.2 KiB
6.2 KiB
Antigravity: доказать проверку подписи на стороне Desktop
Реализован и проверен набор тестов приёмки и негативных проверок против опубликованного релиза (smm-antigravity-task-desktop-update-proof-2026-08-13.md).
Что сделано
- Приёмочный тест против опубликованного релиза (
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 identitylinux-release.yml), извлекается корректная версия, валидный URL скачивания MSIX и хэш SHA-256.
- Скачивает
- Четыре негативных сценария на реальном материале:
Negative1TamperedHashInRealManifestIsRejected: динамическая подмена хэша в настоящем manifest приводит к отказу верификации подписи;Negative2RealManifestWithSignatureFromDifferentIdentityIsRejected: подпись от посторонней identity отвергается;Negative3MissingCertificateIsRejected: отсутствие сертификата приводит к отказу;Negative4CertificateFromDifferentWorkflowIsRejected: сертификат от другого workflow/эмитента отвергается.
- Разделение тестов на два независимых шага в
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— изолированный сетевой шаг проверки реального релиза.
- Подтверждение исполнения тестов в Windows CI:
- Факт реального исполнения доказан намеренной поломкой (несовпадение assertion по версии) с падением шага
Test Desktop securityв Windows CI (прогон 32049692162).
- Факт реального исполнения доказан намеренной поломкой (несовпадение assertion по версии) с падением шага
Отчёт о тестировании
1. Локальное тестирование (PASS)
- Полный прогон:
dotnet test tests/ServerMonitorManager.Desktop.Security.Tests— 29 тестов пройдено (24 модульных + 5 тестов реального релиза). - Офлайн-прогон:
dotnet test --filter Category!=LiveRelease— 24 теста пройдено (266 мс).
2. Доказательство исполнения в Windows CI через намеренную поломку (FAIL -> PASS)
- Красный прогон (намеренная поломка):
- Workflow run: https://github.com/ochenstarik-ui/server-monitor-manager/actions/runs/32049692162
- Job
build(stepTest Desktop security): https://github.com/ochenstarik-ui/server-monitor-manager/actions/runs/32049692162/job/95445812073 - Ошибка в логе CI:
[xUnit.net 00:00:35.62] ServerMonitorManager.Desktop.Security.Tests.LiveReleaseUpdateVerificationTests.Acceptance_RealReleaseManifestAndSignatureAreAccepted [FAIL] Failed ServerMonitorManager.Desktop.Security.Tests.LiveReleaseUpdateVerificationTests.Acceptance_RealReleaseManifestAndSignatureAreAccepted [7 s] Error Message: Assert.Equal() Failure: Strings differ ↓ (pos 1) Expected: "v999.999.999-intentional-failure" Actual: "v0.1.0-alpha.14" Failed! - Failed: 1, Passed: 28, Skipped: 0, Total: 29, Duration: 34 s
- Зелёные прогоны (с раздельными шагами в
windows-build.yml):- Windows build (PR #55): Run 32053732808 / Job 95458998098 — PASS
Test Desktop security(offline) — PASSTest Desktop security (live release)(alpha.18) — PASS
- Linux control and agent (PR #55): Run 32053732805 / Job 95458997999 — PASS
- Windows build (PR #55): Run 32053732808 / Job 95458998098 — 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 на реальных артефактах релиза в тестовом окружении.