server-monitor-manager/agents/antigravity/inbox/from-smm-deliverables/Старые задачи/smm-antigravity-task-queue-b-2026-08-10.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

63 lines
5.8 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.

# Antigravity: подписанная поставка, очередь B
## Приёмка очереди A
Queue A принята. В релизе `v0.1.0-alpha.8` присутствуют `server-monitor-manager-manifest.json` и `server-monitor-manager-manifest.sig`, Linux-артефакты и SBOM собираются, пайплайн после трёх починок отрабатывает целиком. Manifest v2 с подписью — это ровно то, чего не хватало для закрытия Горизонта 0 по поставке.
Ветка: `antigravity/signed-delivery-queue-b`.
---
## Часть 1 — проверка подписи на стороне Desktop · начинать сразу
Desktop свободен, ни Hermes, ни вы его сейчас не трогаете.
Сегодня Desktop скачивает и ставит обновления, не проверяя, что артефакт подписан тем, кем должен. Manifest и подпись уже публикуются — осталось их использовать.
1. Вшить в Desktop **константой** ожидаемую identity подписи: при keyless-режиме cosign это issuer и subject (репозиторий и workflow), при `minisign` — публичный ключ. Не скачивать её вместе с релизом: подпись, проверяемая ключом из того же релиза, ничего не доказывает.
2. Перед предложением обновления: скачать manifest и `.sig`, проверить подпись, сверить хэш артефакта с manifest, и только потом показывать пользователю кнопку обновления.
3. Несовпадение подписи или хэша — отказ с внятным текстом и записью в диагностику. Не предупреждение, не «продолжить всё равно».
4. Отсутствие manifest или подписи в релизе — тоже отказ; путь «старый релиз без подписи» допускается только под явным флагом разработчика, как `SMM_ALLOW_UNSIGNED` в bootstrap.
Тесты: валидная подпись принимается; подписанный чужой identity manifest отклоняется; manifest с подменённым хэшем отклоняется; отсутствующая подпись отклоняется.
---
## Часть 2 — проверка в bootstrap · после merge задания Hermes
Hermes сейчас правит `deploy/ochenstarik-server-monitor-manager.sh` — исправляет формат снимка Monitor. **Не заходить в этот файл, пока его PR не смержен.** Момент согласовать.
После merge:
1. `verify_archive` сверяет хэш архива **с manifest**, а не с соседним `.sha256`. Старый путь остаётся только под явным `SMM_ALLOW_UNSIGNED=1` с громким предупреждением.
2. Новое действие `verify-manifest MANIFEST SIGNATURE`.
3. Публичный ключ или OIDC-identity вшиты константой в bootstrap.
4. Отсутствие инструмента проверки подписи — отказ, а не предупреждение.
5. Отказ `update-control` и `update-agent` при несовместимой паре версий Control ↔ Agent ↔ helper. Требование `docs/installer-contract.md` §6, невыполненное с самого начала; manifest v2 уже содержит нужные версии.
---
## Чего опасаться
Release-workflow **не запускаются на pull request** — они триггерятся тегом и `workflow_dispatch`. Зелёный PR про них ничего не доказывает. Вы уже дважды на этом обожглись: `permissions` в #14 всплыли только при первом настоящем релизе, `locked-mode` в #15 — тоже.
Поэтому обязательно: `actionlint` на всех workflow с выводом в отчёт, и прогон через `workflow_dispatch` на своей ветке.
Отдельно: если для части 2 понадобится правка workflow — **не вносить самостоятельно**, описать в `REPORT.md`. Release-пайплайн сейчас ведёт Hermes, и три починки подряд за один день были ровно из-за того, что в него правили с двух сторон.
---
## Критерий приёмки
- Desktop отказывается ставить обновление с неверной, чужой или отсутствующей подписью; четыре теста зелёные;
- identity подписи вшита в Desktop, а не берётся из релиза;
- `verify_archive` работает от manifest, `verify-manifest` существует;
- несовместимые версии блокируют `update-*`;
- `deploy/ochenstarik-server-monitor-manager.sh` не тронут до merge PR Hermes — проверяется историей коммитов;
- `.github/workflows/**` не изменены;
- `actionlint` чист, вывод приложен;
- CI зелёный, PR не смержены.
## Отчёт
Раздельно: локально, в CI со ссылками, не запускалось и почему. Описание PR заполнять после завершения CI.