HY2XS: builder layer plan Цель builder layer На Debian 12 amd64 build host собрать один чистый install package, который можно перенести на чистый Debian 12 без target-side build. Технологический выбор Baseline packaging: shell-first. - Основной packaging pipeline: sh/bash. - Оркестратор при этом пишется на Bun + TypeScript. - Builder на Debian 12 amd64 собирает install-артефакт оркестратора. - На target не должно быть обязательного JS/TS toolchain шага. Задачи builder layer 1. Проверка структуры репозитория. 2. Проверка наличия обязательных файлов пакета. 3. Подготовка HY2XS admin fork к поставке. 4. Локальная сборка оркестратора из Bun/TypeScript. 5. Копирование UI-артефактов в package staging. 6. Копирование templates, systemd units, docs и examples. 7. Генерация metadata: version, build_id, checksums. 8. Упаковка итогового архива. Порядок реализации builder Этап 1. - Создать tools/build/build.sh. - Создать tools/build/lib/common.sh. - Создать tools/build/lib/verify.sh. - Создать tools/build/lib/package.sh. - Создать tools/build/lib/deps.sh. - Создать tools/build/README.ru.md. Production-дополнение. - Проверять Debian 12 amd64. - Самостоятельно доставлять apt build-зависимости. - Проверять и фиксировать версии Go/Bun/Node.js/pnpm. - Использовать локальный управляемый toolchain при несовпадении версий. Этап 2. - Реализовать очистку package staging directory. - Реализовать копирование package/ skeleton. - Реализовать сборку `orchestrator/` и копирование артефакта в `package/orchestrator/`. - Реализовать копирование ui/hy2xs-admin-fork в package/ui/hy2xs-admin. Этап 3. - Реализовать запись package.version и package.build_id. - Реализовать checksums.txt. - Реализовать создание dist/hy2xs-install-.tar.gz. Этап 4. - Добавить builder smoke-проверку: архив собрался, в нём есть install.sh, оркестратор, UI, unit-файлы, templates. Что builder не делает - Не качает Hysteria2. - Не выполняет серверные действия. - Не меняет production state. - Не содержит uninstall/update логики. - Не включает access/bot backend в baseline package. Acceptance criteria - Одна команда локально создаёт переносимый install package. - В package нет builder scripts. - В package есть встроенный HY2XS admin. - В package есть собранный Bun/TypeScript orchestrator. - package можно передать на сервер без дополнительной сборки.