ADR 0032: проверяемая поставка и запускные комплекты
Статус: accepted. Owner: Ian Panaev. Дата: 2026-09-25.
Решение
Релиз состоит из переносимого runtime и комплектов запуска для Windows и Linux. Комплект содержит тот же runtime/bootstrap/manifest, локальный установщик и маленькие платформенные запускные файлы. Сценарии установки, проверки архива, переключения и восстановления остаются в apps/deploy; GUI/ярлыки не вводят вторую реализацию обновления. Shell glue отвечает за UAC/sudo, предпосылки и сообщения оператору.
Windows запускается через cmd → PowerShell → UAC; Linux desktop через desktop entry → Bash → sudo, headless через одну Bash-команду. Разрешение запуска скачанного файла, системные зависимости, внешнюю PostgreSQL и HTTPS нельзя универсально устранить «одним кликом». Установщик не обходит защиту ОС и не меняет гипервизор. Arkvory находится в комплекте, Node.js/WinSW требуют сети и проверяются по закреплённым SHA-256. Повторный запуск обновляет ту же установку; при смене схемы требуется обслуживание.
Доверие к выпуску
- Build job с contents:read выполняет release gate, затем один раз собирает candidate.
- Candidate передаётся неизменяемым Actions artifact текущего workflow. Приёмка четырёх ОС проверяет именно переданные байты; контейнерный install/update также принимает этот candidate.
- Только publish job получает contents:write. В нём нет npm install, сборки или запуска кода из candidate. Проверяются полный перечень assets, SHA-256, версия и commit; затем создаётся draft. Обязателен успешный основной CI на том же commit.
- Владелец публикует draft после проверки release notes. Публикация делает его доступным автоматическим обновлениям.
Отсутствие artifact, квоты, любого обязательного гейта или несогласованные хеши блокируют выпуск. Нельзя пересобрать runtime после приёмки в привилегированном job. Checksum manifest не заменяет криптографическую подпись независимым ключом: доверенная граница остаётся GitHub и права публикации.
CI
Quality выполняется на Ubuntu 22.04/24.04 и Windows Server 2022/2025. Один вызов gate внутри lane сохраняет общий отчёт и не повторяет компиляцию. PostgreSQL, браузер, audit и контейнеры — отдельные обязательные lanes. Большие передачи обязательны для main push, merge queue, tags и еженедельного расписания; доступны вручную. Обычный PR сохраняет быстрый набор без 5 GiB.
Изменения деклараций workflow проверяются policy-гейтом и регрессионными мутациями. Это не заменяет branch protection: ограничение GitHub-тарифа описано в ENGINEERING_GATES. Настройки серверного запрета merge не подменяются обещанием, что YAML сам запрещает прямой push.