14 KiB
HY2XS 1.0.0-rc5 — итоговый отчёт о приёмке
Дата прогона: 2026-09-15
Вердикт: PASS / PRODUCTION E2E VALIDATED
Статус выпуска: READY FOR 1.0.0
Этот отчёт фиксирует фактическую финальную приёмку RC5: release build, повторную проверку опубликованного артефакта, установку на чистый Debian 13, проверки после перезагрузки, Admin/UI, диагностику и реальный внешний dataplane официальным клиентом Hysteria 2.12.2.
Проверенный кандидат:
Product: HY2XS
Version: 1.0.0-rc5
Source commit: b7e478f0143846633d1261ca0bcd220736d28f44
Build ID: rc5-final-fi-20260908T003829Z
Artifact: hy2xs-install-1.0.0.tar.gz
Artifact size: 50 785 975 bytes
SHA-256: d35cf469d8e1e3b5c1e79cb94329c1b19d1afbd7ade771498d2fb8caf5cd746a
Target: Debian 13 / amd64
Hysteria: v2.12.2
Публичный IPv4 тестового хоста в отчёте заменён на
198.51.100.20(RFC 5737, документационный диапазон). Домен и порты оставлены: без них конфигурация прогона была бы неоднозначной. Секреты, credentials и клиентские URI в отчёт не перенесены.
1. Build acceptance
Production builder успешно завершил полный release pipeline из чистого рабочего дерева.
Подтверждено:
- тесты оркестратора —
PASS; - frontend contract tests —
PASS; - runtime-тесты RU/EN словарей
vue-i18n—PASS; - frontend typecheck —
PASS; - production build frontend —
PASS; - Go tests —
PASS; - Go race checks —
PASS; govulncheck—PASS;pnpm auditс порогом high+ —PASS;- upstream SHA-256 Hysteria —
PASS; - совместимость Gecko —
PASS; - совместимость Salamander —
PASS; - полные release acceptance gates —
PASS; - внутренние контрольные суммы пакета —
PASS; - рабочее дерево источника после сборки осталось чистым.
2. Приёмка опубликованного артефакта
Для clean-host прогона использован опубликованный release artifact, повторно скачанный из Gitea. На target он не пересобирался.
Повторно проверены:
- имя и размер архива;
- внешний SHA-256 архива;
- package provenance;
- Build ID;
- source commit;
- внутренние контрольные суммы;
- clean-host preflight.
Все проверки идентичности сошлись с release identity в начале отчёта.
3. Чистый хост и установка
RC5 установлен штатным install.sh на чистый Debian 13 amd64. До установки
подтверждены актуальное состояние ОС и kernel, отсутствие ожидающих package
upgrades, SSH на TCP/2323 с key-only root authentication и отключённой password
authentication. Публичный IPv4 хоста и DNS endpoint совпадали.
Admin forwarding был разрешён только к 127.0.0.1:8080.
Результат установки:
install.sh exit code: 0
В ходе штатной установки успешно проверены:
- установка Hysteria 2.12.2;
- upstream SHA-256 Hysteria;
- генерация production-конфигурации;
- systemd units;
- nftables takeover;
- staged firewall apply;
- firewall rollback guard;
- runtime Hysteria;
- runtime HY2XS admin;
- отрицательный Admin login:
invalid_credentials, токен отсутствует; - положительный Admin login: Bearer token получен;
- effective firewall соответствует generated configuration;
- effective Hysteria configuration соответствует production profile.
После успешного smoke rollback guard снят, install state переведён в durable
состояние installed.
4. Admin/UI и управление пирами
Admin UI был доступен только через SSH tunnel на 127.0.0.1:8080.
Фактически подтверждены:
- вход через реальный браузер;
- работа dashboard;
- состояние Hysteria2 отображается как active;
- доступность Traffic Stats API;
- отображение системных журналов;
- отображение журналов Hysteria;
- создание пира;
- изменение состояния пира;
- получение client URI/config.
В runtime отдельно проверены исправления RC5:
- diagnostic
vue-i18n Invalid linked formatотсутствует; - форма пира корректно показывает допустимую пунктуацию;
- Element Plus Radio больше не использует deprecated
labelas value; - выбор диапазона dashboard работает штатно.
5. Состояние после перезагрузки
После reboot подтверждено:
hysteria-server.service enabled / active
hy2xs-admin.service enabled / active
nftables.service enabled / active
runtime_state running
install state installed
firewall state valid
rollback guard quiescent
operation in progress none
doctor PASS
В журналах не обнаружены runtime-сигналы panic, fatal, segfault или HTTP
500.
Runtime listeners:
| Назначение | Адрес |
|---|---|
| Hysteria | публичный UDP endpoint |
| SSH | TCP/2323 |
| HY2XS admin | 127.0.0.1:8080 |
| Traffic Stats API | 127.0.0.1:36712 |
Admin и Traffic Stats API остались loopback-only.
6. Diagnostics acceptance
Diagnostics bundle успешно сформирован в trusted storage.
Подтверждено:
- diagnostics directory принадлежит root;
- режим архива —
0600; - владелец архива —
root:root; - временный workspace удаляется;
- реальные secret values в bundle отсутствуют;
- Admin credentials заменены на
<redacted>; - Hysteria Traffic Stats secret заменён на
<redacted>; - Gecko/obfs password заменён на
<redacted>; HY2XS_FORCE_PASSWORD_CHANGE=falseостаётся видимым как non-secret flag.
Итог diagnostics contract: PASS.
7. Production E2E официальным клиентом
Финальный независимый dataplane E2E выполнен официальным клиентом Hysteria 2.12.2.
Production deployment:
Host: se.api.withen.pro
IPv4: 198.51.100.20 (обезличен)
OS: Debian 13 / amd64
Hysteria: v2.12.2
HY2XS: 1.0.0-rc5
Public Hysteria endpoint: UDP/2053
SSH: TCP/2323
ACME HTTP-01: TCP/80
Admin: 127.0.0.1:8080
Traffic Stats API: 127.0.0.1:36712
Firewall: takeover / policy drop
Obfuscation: Gecko
Созданный в HY2XS пир успешно использован официальным клиентом Hysteria.
Подтверждено:
- соединение с
se.api.withen.pro:2053—PASS; - QUIC/Hysteria handshake —
PASS; udpEnabled=true;- SOCKS5 tunnel —
PASS; - HTTPS через tunnel —
PASS; - внешний IPv4 через tunnel совпал с публичным IPv4 HY2XS-хоста;
- packet capture: 136 packets;
- dropped packets: 0;
- client → server UDP packets: 70;
- server → client UDP packets: 66.
Тем самым подтверждена полная цепочка:
client
→ DNS/TLS/SNI
→ UDP endpoint
→ Gecko
→ Hysteria2
→ HY2XS peer authentication
→ Internet egress
8. Дополнительная downstream-проверка
Отдельный production-прогон через vpn-egressctl 0.2.0 и sing-box 1.14.0 не
является приёмкой этих внешних компонентов в репозитории HY2XS. Он фиксируется
здесь как дополнительное доказательство совместимости HY2XS endpoint с
gateway/TUN-сценарием и реальным клиентом за gateway.
Проверенная конфигурация:
vpn-egressctl: 0.2.0
sing-box: 1.14.0
Server Hysteria: 2.12.2
Obfuscation: Gecko
Endpoint: se.api.withen.pro:2053
Gateway TUN: tun-sb0
TUN address: 172.19.0.1/30
Config SHA-256: 0d888e7793bd979d212b613542070ce9349a625ddace2a0727776072b66c96ae
На чистом first apply успешно прошли check, генерация конфигурации, первый
sync и активация runtime. sing-box.service и
vpn-egress-guard.service были active, tun-sb0 поднят, DNS и HTTPS через
Hysteria outbound работали. Повторный sync завершился no-op с
changed=false, без config/source drift и без изменения SHA-256.
Независимый клиент 10.30.0.20/24 за br_vpn получил DNS и HTTPS через
следующую цепочку:
10.30.0.20
→ br_vpn
→ vpn-egress-gw / eth1
→ tun-sb0
→ sing-box 1.14.0
→ Hysteria2 / Gecko
→ se.api.withen.pro:2053
→ Internet
Внешний IPv4 gateway и клиента совпал с публичным IPv4 HY2XS-хоста.
Fail-closed / anti-leak проверка также прошла: после остановки sing-box сервис
стал inactive, guard остался active, прямой Internet access клиента отсутствовал
(curl завершился с rc=7), обход через обычный WAN/eth0 не появился. После
возврата sing-box доступ восстановился через тот же HY2XS endpoint.
Состояния last_good_available=false и last_good_valid=false после чистого
first apply ожидаемы: предыдущей managed-good generation для rollback ещё не
существовало, а последующий idempotent sync был no-op.
После проверки временные namespace/veth, диагностический бинарник Hysteria, временные configs, logs и pcap-файлы удалены. Production URI, config и runtime state сохранены.
9. Граница вывода по предыдущим endpoint failures
Ранее неуспешные E2E-прогоны через UFO endpoint не доказали дефект
vpn-egressctl 0.2.0, renderer или sing-box 1.14.0. Контрольная приёмка на
текущем endpoint прошла без изменения основного client/gateway stack:
официальный Hysteria client E2E, first apply, gateway HTTPS, idempotent sync,
клиент за br_vpn и fail-closed / anti-leak дали PASS.
Это позволяет относить прежнее наблюдение к конкретному endpoint/environment
path либо к фактору вне доказанного runtime-контракта. Точная первопричина UFO
endpoint в рамках этой приёмки не установлена; приписывать эпизод как
подтверждённый дефект HY2XS, vpn-egressctl, renderer или sing-box нельзя.
10. Итог
BUILD ACCEPTED
PUBLISHED ARTIFACT ACCEPTED
CLEAN INSTALL ACCEPTED
POST-REBOOT ACCEPTED
ADMIN/UI ACCEPTED
PEER MANAGEMENT ACCEPTED
DIAGNOSTICS ACCEPTED
OFFICIAL CLIENT E2E ACCEPTED
DOWNSTREAM GATEWAY E2E ACCEPTED
ANTI-LEAK ACCEPTED
RUNTIME STATUS ACCEPTED
RELEASE STATUS READY FOR 1.0.0
HY2XS 1.0.0-rc5 прошёл production build acceptance, проверку неизменности артефакта, чистую установку, install smoke, runtime Admin/UI, управление пирами, firewall acceptance, reboot persistence, diagnostics security и реальный E2E официальным клиентом Hysteria.
Финальный статус: PASS / PRODUCTION E2E VALIDATED.
11. Требование к stable promotion
Stable 1.0.0 должен продвигать без пересборки ровно тот immutable artifact,
который прошёл этот прогон:
Tag: 1.0.0
Source commit: b7e478f0143846633d1261ca0bcd220736d28f44
Artifact: hy2xs-install-1.0.0.tar.gz
SHA-256: d35cf469d8e1e3b5c1e79cb94329c1b19d1afbd7ade771498d2fb8caf5cd746a
Size: 50 785 975 bytes
Документационный коммит, добавляющий настоящий отчёт в main, намеренно идёт
после source commit кандидата и не меняет release identity. Тег 1.0.0 должен
указывать на source commit выше, а не на последующий docs-only commit.