# Дополнение к заданию «подписанная поставка, очередь 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 отказывает, а не пытается обойти, при любом несовпадении подписи или хэша.
