Задания, отчёты и патчи, лежавшие в 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>
105 lines
7.3 KiB
Markdown
105 lines
7.3 KiB
Markdown
# Hermes: независимая приёмка Queue B, merge и релиз alpha.10
|
||
|
||
## Когда начинать
|
||
|
||
Начать review после того, как Antigravity откроет PR из `antigravity/signed-delivery-queue-b` и сообщит о зелёном CI. До этого не редактировать его рабочую ветку и не выпускать новый релиз.
|
||
|
||
Baseline на момент постановки:
|
||
|
||
- `main` и `v0.1.0-alpha.9`: `2ca059f`;
|
||
- PR #32 и #33 смержены;
|
||
- Release pipeline `alpha.9` зелёный;
|
||
- PR #34 repo hygiene открыт отдельно;
|
||
- Queue B PR пока отсутствует.
|
||
|
||
## Часть 1 — независимый review Queue B
|
||
|
||
### Проверить Git и scope
|
||
|
||
- Получить свежие refs и убедиться, что ветка основана на актуальном `main`. Если до review смержен PR #34 или другой PR, потребовать rebase до приёмки.
|
||
- Убедиться, что `.github/workflows/**` не изменены Antigravity, нет `ci_log*.txt`, test keys, скачанных binaries и временных release-файлов.
|
||
- Проверить историю: bootstrap-файл менялся только после merge PR #32/#33; правила single-writer и immutable release сохранены.
|
||
|
||
### Проверить Desktop
|
||
|
||
- Trust identity/issuer вшиты в production-код и соответствуют `linux-release.yml` и `docs/release-policy.md`.
|
||
- Manifest и signature проверяются до показа update action.
|
||
- MSIX hash проверяется после загрузки и до запуска.
|
||
- Все assets связаны с одним tag/release.
|
||
- Alpha/pre-release channel работает явно и тестируемо; stable-only `releases/latest` не используется как недоказанное решение.
|
||
- Отказ fail closed и попадает в штатную диагностику.
|
||
- Нет пользовательского обхода подписи.
|
||
- Unit tests не выполняют скрытых сетевых вызовов и действительно компилируют production updater.
|
||
|
||
### Проверить bootstrap
|
||
|
||
- `verify-manifest` и тесты имеют одинаковую сигнатуру CLI.
|
||
- Production keyless verification соответствует формату signature, реально опубликованному в `alpha.9`.
|
||
- Положительный тест использует эквивалентный production trust flow; тестовый ключ не подменяет production identity незаметно.
|
||
- Manifest hash, missing signature/tool, foreign identity, tampering и version mismatch покрыты отрицательными тестами.
|
||
- `SMM_ALLOW_UNSIGNED=1` остаётся явным developer-only bypass; default path fail closed.
|
||
|
||
### Независимые проверки
|
||
|
||
- Повторить проверку manifest/signature и hashes на неизменяемых assets `v0.1.0-alpha.9`.
|
||
- Сделать mutation proof: временно поменять expected identity или один manifest hash и показать падение точного теста; временную правку не коммитить.
|
||
- Прогнать actionlint, shellcheck/bash syntax, Desktop suite, Control suite и релевантные acceptance/bootstrap suites.
|
||
- Сверить результаты GitHub CI. Зелёный CI без security-сценариев не считать достаточным.
|
||
|
||
Если найден блокер — не чинить молча в ветке Antigravity. Остановить merge, дать точное замечание с воспроизведением и дождаться исправления.
|
||
|
||
## Часть 2 — merge
|
||
|
||
Merge разрешён только если:
|
||
|
||
- все критерии Antigravity-задачи фактически выполнены;
|
||
- branch актуальна относительно `main`;
|
||
- локальные и GitHub gates зелёные;
|
||
- producer/consumer формат cosign доказан на реальном `alpha.9`;
|
||
- нет незаявленного workflow или release scope.
|
||
|
||
После merge повторить обязательные suites на merge commit. Не использовать старый CI head как единственное доказательство.
|
||
|
||
## Часть 3 — immutable release `v0.1.0-alpha.10`
|
||
|
||
- Использовать `linux-release.yml` как единственного публикатора.
|
||
- Если Queue B выявила producer-side gap (certificate/bundle/manifest metadata), исправить его отдельным reviewable PR до тега, с actionlint и тестом producer/consumer contract.
|
||
- Обновить tracked `deploy/smm-setup.sh` и прочие version sources на `v0.1.0-alpha.10` до создания тега.
|
||
- Создать новый tag только на принятом `main`. Не двигать `alpha.8` или `alpha.9`, не заменять их assets.
|
||
- Дождаться полного release pipeline.
|
||
- Проверить наличие и согласованность:
|
||
- Linux x64/arm64 archives и checksums;
|
||
- Windows MSIX и checksum;
|
||
- SBOM для всех платформ;
|
||
- manifest v2;
|
||
- signature и необходимые verification materials;
|
||
- bootstrap и checksum;
|
||
- `smm-setup.sh` и checksum.
|
||
- Проверить, что manifest содержит hashes именно опубликованных assets и версии Control/Agent/helper.
|
||
- Проверить подпись с pinned issuer/identity внешней командой, затем пройти consumer verification Desktop/bootstrap.
|
||
- Выполнить smoke update с предыдущего релиза без реального production-развёртывания: корректный пакет принимается, tampered/foreign/missing signature и несовместимые версии отклоняются до установки.
|
||
|
||
## Критерий завершения
|
||
|
||
- Queue B смержена только после независимой приёмки.
|
||
- Merge commit имеет зелёные Linux/Windows и security/acceptance gates.
|
||
- `v0.1.0-alpha.10` указывает на подтверждённый commit и больше не изменяется.
|
||
- Release pipeline зелёный, полный набор assets опубликован.
|
||
- Desktop и bootstrap проверяют реальные `alpha.10` manifest/signature/hash.
|
||
- Отрицательные сценарии доказаны.
|
||
- Старые теги и assets не изменялись.
|
||
|
||
## Итоговый отчёт
|
||
|
||
Указать:
|
||
|
||
- PR Queue B и merge commit;
|
||
- все review findings и как они закрыты;
|
||
- локальные и CI-команды с результатами и ссылками;
|
||
- release workflow run;
|
||
- tag/commit `alpha.10`;
|
||
- список assets, hashes и результат cosign verification;
|
||
- smoke/negative checks;
|
||
- что не запускалось и почему;
|
||
- известные ограничения и следующий незавершённый этап.
|
||
|