# Дополнение к заданию «подписанная поставка, очередь B» Основное задание — `smm-antigravity-task-queue-b-2026-08-10.md`, оно в силе. Здесь только то, что изменилось, пока вы работали. ## Что сделано правильно - `UpdateService.cs` и `UpdateServiceTests.cs` — часть 1 на месте; - `verify_manifest` в bootstrap через `cosign verify-blob` в keyless-режиме, issuer и identity-regexp вынесены константами, `SMM_ALLOW_UNSIGNED` как аварийный выход — ровно как требовалось; - пин identity на `linux-release.yml` совпал с новой политикой релизов, см. ниже. ## Обязательно перед коммитом ### 1. Ребейз на текущий `main` Ветка стоит на `ad180e9` и отстаёт на четыре коммита. За это время Hermes слил два PR: - **#32** — правит `deploy/ochenstarik-server-monitor-manager.sh`, тот же файл, где вы добавляете `verify_manifest`; - **#33** — вводит политику релизов и переносит `smm-setup.sh` в репозиторий. Ребейзиться до коммита, а не после: конфликт в одном файле разбирать проще, пока изменения не зафиксированы. ### 2. Убрать мусор из корня `ci_log.txt` и `ci_log2.txt` лежат неотслеживаемыми в корне репозитория. Удалить либо занести в `.git/info/exclude`. В коммит они попасть не должны. ## Что учесть после ребейза `docs/release-policy.md`, появившийся в #33, меняет часть условий вашей задачи: - **`linux-release.yml` — единственный публикатор релизов.** `windows-release.yml` переведён в manual-only и ассеты больше не публикует. Ваш `COSIGN_IDENTITY_REGEXP` пинит именно `linux-release.yml`, так что он верен — но теперь это не совпадение, а зафиксированное правило, и в комментарии рядом с константой стоит сослаться на `docs/release-policy.md`. - **Опубликованный тег неизменяем.** Исправления после публикации требуют нового тега. Ваша проверка в Desktop и в bootstrap должна исходить из этого: несовпадение хэша или подписи — это повод отказаться, а не перекачать «на всякий случай». - **`smm-setup.sh` теперь отслеживается как `deploy/smm-setup.sh`**, его SHA-256 записывается в подписанный manifest, а release-workflow копирует в релиз именно этот файл. Установщик обязан брать ассеты **только того же тега** и проверять контрольную сумму bootstrap до запуска. Если ваши изменения в `deploy/smm-setup.sh` понадобятся — это теперь обычный файл репозитория, правится как код, но с оглядкой на то, что его хэш попадает в manifest. - Временный обход бага `validate_control_url` из `smm-setup.sh` уже удалён Hermes'ом — возвращать его не нужно. ## Уточнение к критерию приёмки К списку из основного задания добавляется: - ветка ребейзнута на `main`, содержащий #32 и #33; - `ci_log*.txt` отсутствуют в коммитах и в рабочем дереве; - константа `COSIGN_IDENTITY_REGEXP` сопровождена ссылкой на `docs/release-policy.md`; - проверка в Desktop и в bootstrap отказывает, а не пытается обойти, при любом несовпадении подписи или хэша.