# 05 — Доставка пакета и итоговая приёмка **What to build:** Поставка `xray-proxy` проверена целиком: корневой обзор соответствует готовым возможностям, автоматические проверки воспроизводимы, а ручная приёмка на доступных системах подготовлена для пользователя. **Blocked by:** 03 — безопасный жизненный цикл; 04 — проверяемая установка. **Status:** ready-for-human ## Границы задачи Тикеты 03/04/06 уже доставили CLI, Bash-модуль, установку и жизненный цикл. Задача 05 их проверяет, но не переписывает. Источники истины: - [`xray-proxy/README.md`](../../../xray-proxy/README.md) — пользовательские команды, настройка и ограничения; - [исходный дизайн](../../../docs/specs/2026-07-15-headless-xray-proxy-design.md) — границы и принятые решения. - [x] Корневой `README.md` кратко описывает внешний Hiddify и управляемый Xray, показывает `stow xray-proxy` и ссылается на полную инструкцию. - [x] Пакет подключается через stow, ручные ссылки или копирование; общий установщик использует тот же пакет. - [x] Инструкция покрывает две семьи VLESS, Xray 26.3.27, отсутствие systemd, автозапуска и автоматического перехода между прокси. - [x] Тест `ManagedXrayCliTest.test_exact_boolean_version_alpn_and_extra_branches` подтверждает, что устаревшие `allowInsecure`/`insecure` не попадают в TLS-конфиг, а истинное значение даёт предупреждение. ## Секретные данные - [x] В отслеживаемых файлах, тестовых данных, аргументах, выводе и отчёте нет настоящих VLESS-ссылок, UUID, ключей, `shortId` и `path`. Автоматические тесты используют только вымышленные контрольные значения. Настоящий профиль и сгенерированный JSON остаются в закрытых пользовательских файлах и не копируются в отчёт. ## Автоматическая проверка - [x] `tests/test_xray_proxy_full.sh` запускает весь Python-набор под системным `python3` и CPython 3.8 через `uv`, затем Bash-тесты и проверку установки. - [x] Тестовый Xray остаётся отдельным исполняемым файлом и получает доступ к библиотекам исходного Python. Это устраняет ложные падения переносимой сборки `uv`, не ослабляя проверки личности процесса. - [x] `tests/test_install.sh` собирает небольшие тестовые деревья только из отслеживаемых Git-файлов и удаляет общий временный каталог при выходе. ## Приёмка пользователем Исполнитель готовит команды и останавливается. Результат отмечает пользователь; недоступная система остаётся неподтверждённой. - [ ] Ubuntu с Python 3.10: установка, жизненный цикл, `xray run -test`, HTTP и SOCKS через один локальный вход Xray 26.3.27. - [ ] РЕД ОС, Astra Linux или Alt Linux по доступности: тот же сценарий после проверки фактической версии Python. ## После приёмки - [ ] Статус исходного дизайна и заявления о поддержке приведены в соответствие только с фактически выполненными прогонами. ## Comments ### 2026-07-21 — автоматическая проверка `bash tests/test_xray_proxy_full.sh` завершился с кодом 0: - системный Python 3.14: 79 тестов, `OK`, 57,276 с; - Bash-интеграция: 8 проверок, `PASS`; `shellcheck` отсутствует и явно пропущен; - установка: `All install tests passed`; в `/tmp` не осталось каталогов `dotfiles-install-test.*`; - CPython 3.8.20 через `uv`: 79 тестов, `OK`, 51,412 с. ### 2026-07-21 — команды ручной приёмки В первой панели tmux, после подготовки закрытого `default.url` и машинного конфига с `type = xray`: ```bash python3 --version cd ~/dotfiles stow xray-proxy source ~/.config/xray-proxy/shell.bash xray-proxy install xray-proxy start ``` Во второй панели, пока `start` работает: ```bash xray-proxy status xray run -test -c "${XDG_STATE_HOME:-$HOME/.local/state}/xray-proxy/client.json" curl --proxy http://127.0.0.1:12334 https://api.ipify.org curl --proxy socks5h://127.0.0.1:12334 https://api.ipify.org xray-proxy stop ``` Если настроен другой локальный адрес или порт, те же значения подставляются в обе команды `curl`. В отчёт записываются только версии, коды возврата и итог проверки HTTP/SOCKS.