Skip to content

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. Повторный запуск обновляет ту же установку; при смене схемы требуется обслуживание.

Доверие к выпуску ​

  1. Build job с contents:read выполняет release gate, затем один раз собирает candidate.
  2. Candidate передаётся неизменяемым Actions artifact текущего workflow. Приёмка четырёх ОС проверяет именно переданные байты; контейнерный install/update также принимает этот candidate.
  3. Только publish job получает contents:write. В нём нет npm install, сборки или запуска кода из candidate. Проверяются полный перечень assets, SHA-256, версия и commit; затем создаётся draft. Обязателен успешный основной CI на том же commit.
  4. Владелец публикует 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.

Arkvory · ProAnimaStudio