docs(release): зафиксировать финальную приёмку rc5
This commit is contained in:
@@ -8,6 +8,23 @@
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Документация — итоговая приёмка v1.0.0
|
||||||
|
|
||||||
|
- Зафиксирован финальный production-прогон `1.0.0-rc5`: build, повторная
|
||||||
|
проверка опубликованного артефакта, чистая установка на Debian 13, reboot,
|
||||||
|
Admin/UI, управление пирами, diagnostics и внешний E2E официальным клиентом
|
||||||
|
Hysteria 2.12.2 дали `PASS`.
|
||||||
|
- Отдельно записан downstream gateway/TUN-прогон через `vpn-egressctl 0.2.0`
|
||||||
|
и sing-box 1.14.0, включая реального клиента за `br_vpn`, idempotent sync и
|
||||||
|
fail-closed / anti-leak проверку.
|
||||||
|
- Release identity привязана к source commit `b7e478f0143846633d1261ca0bcd220736d28f44`,
|
||||||
|
Build ID `rc5-final-fi-20260908T003829Z` и SHA-256 артефакта
|
||||||
|
`d35cf469d8e1e3b5c1e79cb94329c1b19d1afbd7ade771498d2fb8caf5cd746a`.
|
||||||
|
Stable promotion должен использовать эти же байты без пересборки; docs-only
|
||||||
|
коммит не меняет идентичность проверенного кандидата.
|
||||||
|
- Полный протокол опубликован в
|
||||||
|
[итоговом отчёте о приёмке RC5](docs/acceptance/2026-09-15-v1.0.0-rc5-final-acceptance.md).
|
||||||
|
|
||||||
Runtime-разбор RC4 закрыл три дефекта панели и один связанный риск
|
Runtime-разбор RC4 закрыл три дефекта панели и один связанный риск
|
||||||
сопровождения. Набор знаков имени пира больше не хранится как сырой `@` внутри
|
сопровождения. Набор знаков имени пира больше не хранится как сырой `@` внутри
|
||||||
message format: общий frontend-контракт передаёт его в RU/EN-подсказку через
|
message format: общий frontend-контракт передаёт его в RU/EN-подсказку через
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="#что-это">Что это</a> ·
|
<a href="#что-это">Что это</a> ·
|
||||||
|
<a href="#статус-приёмки-v100">Приёмка v1.0.0</a> ·
|
||||||
<a href="#возможности">Возможности</a> ·
|
<a href="#возможности">Возможности</a> ·
|
||||||
<a href="#быстрый-старт-для-нового-сервера">Быстрый старт</a> ·
|
<a href="#быстрый-старт-для-нового-сервера">Быстрый старт</a> ·
|
||||||
<a href="#конфигурация-hy2xsenv">Конфигурация</a> ·
|
<a href="#конфигурация-hy2xsenv">Конфигурация</a> ·
|
||||||
@@ -37,6 +38,18 @@ HY2XS подходит для сценария, где нужен один produ
|
|||||||
|
|
||||||
Ключевая идея: на target‑сервере выполняется только установка готового пакета. Вся тяжёлая сборочная часть остаётся на build‑машине.
|
Ключевая идея: на target‑сервере выполняется только установка готового пакета. Вся тяжёлая сборочная часть остаётся на build‑машине.
|
||||||
|
|
||||||
|
## Статус приёмки v1.0.0
|
||||||
|
|
||||||
|
Кандидат `1.0.0-rc5` прошёл финальную production-приёмку на чистом Debian 13:
|
||||||
|
сборку и проверку опубликованного артефакта, установку, reboot persistence,
|
||||||
|
Admin/UI, управление пирами, diagnostics, реальный E2E официальным клиентом
|
||||||
|
Hysteria 2.12.2 и дополнительный gateway/TUN anti-leak прогон.
|
||||||
|
|
||||||
|
Вердикт: **`PASS / PRODUCTION E2E VALIDATED`**, кандидат готов к выпуску
|
||||||
|
`1.0.0`. Канонические release identity, контрольная сумма и полный протокол — в
|
||||||
|
[итоговом отчёте о приёмке RC5](docs/acceptance/2026-09-15-v1.0.0-rc5-final-acceptance.md).
|
||||||
|
Stable должен продвигать проверенный RC5 artifact без пересборки.
|
||||||
|
|
||||||
## Возможности
|
## Возможности
|
||||||
|
|
||||||
HY2XS release‑пакет разворачивает и настраивает:
|
HY2XS release‑пакет разворачивает и настраивает:
|
||||||
|
|||||||
@@ -0,0 +1,338 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
Проверенный кандидат:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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`.
|
||||||
|
|
||||||
|
Результат установки:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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 `label` as value;
|
||||||
|
- выбор диапазона dashboard работает штатно.
|
||||||
|
|
||||||
|
## 5. Состояние после перезагрузки
|
||||||
|
|
||||||
|
После reboot подтверждено:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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.
|
||||||
|
|
||||||
|
Тем самым подтверждена полная цепочка:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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.
|
||||||
|
|
||||||
|
Проверенная конфигурация:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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 через
|
||||||
|
следующую цепочку:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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. Итог
|
||||||
|
|
||||||
|
```text
|
||||||
|
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,
|
||||||
|
который прошёл этот прогон:
|
||||||
|
|
||||||
|
```text
|
||||||
|
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.
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
| 2026-09-01 | `1.0.0-rc1` | `a1f0db22` | build + host acceptance, Debian 13 | [RC ACCEPTED WITH RELEASE-REQUIRED UX FIXES](2026-09-01-v1.0.0-rc1-host-acceptance.md) |
|
| 2026-09-01 | `1.0.0-rc1` | `a1f0db22` | build + host acceptance, Debian 13 | [RC ACCEPTED WITH RELEASE-REQUIRED UX FIXES](2026-09-01-v1.0.0-rc1-host-acceptance.md) |
|
||||||
| 2026-09-04 | `1.0.0-rc2` | `82e5ca40` | clean install + runtime, Debian 13 | [RUNTIME REJECTED — вход в панель недоступен](2026-09-04-v1.0.0-rc2-runtime-findings.md) |
|
| 2026-09-04 | `1.0.0-rc2` | `82e5ca40` | clean install + runtime, Debian 13 | [RUNTIME REJECTED — вход в панель недоступен](2026-09-04-v1.0.0-rc2-runtime-findings.md) |
|
||||||
| 2026-09-07 | `1.0.0-rc3` | `bf10810c` | clean install + failure rollback, Debian 13 | [RUNTIME REJECTED — installer smoke блокируется middleware](2026-09-07-v1.0.0-rc3-runtime-findings.md) |
|
| 2026-09-07 | `1.0.0-rc3` | `bf10810c` | clean install + failure rollback, Debian 13 | [RUNTIME REJECTED — installer smoke блокируется middleware](2026-09-07-v1.0.0-rc3-runtime-findings.md) |
|
||||||
|
| 2026-09-15 | `1.0.0-rc5` | `b7e478f0` | build + clean install + production E2E, Debian 13 | [PASS / PRODUCTION E2E VALIDATED — READY FOR 1.0.0](2026-09-15-v1.0.0-rc5-final-acceptance.md) |
|
||||||
|
|
||||||
## Открытые дефекты приёмки
|
## Открытые дефекты приёмки
|
||||||
|
|
||||||
@@ -36,6 +37,9 @@
|
|||||||
| 2026-09-04, `1.0.0-rc2` | [LOGIN-01…LOGIN-08](2026-09-04-v1.0.0-rc2-runtime-findings.md) — все закрыты |
|
| 2026-09-04, `1.0.0-rc2` | [LOGIN-01…LOGIN-08](2026-09-04-v1.0.0-rc2-runtime-findings.md) — все закрыты |
|
||||||
| 2026-09-07, `1.0.0-rc3` | [RC3-LOGIN-01…04, RC3-ROLLBACK-01](2026-09-07-v1.0.0-rc3-runtime-findings.md) — исправления подготовлены для RC4 |
|
| 2026-09-07, `1.0.0-rc3` | [RC3-LOGIN-01…04, RC3-ROLLBACK-01](2026-09-07-v1.0.0-rc3-runtime-findings.md) — исправления подготовлены для RC4 |
|
||||||
|
|
||||||
|
Итоговая приёмка RC5 не выявила открытых release blockers; исправления
|
||||||
|
предыдущих кандидатов подтверждены фактическим runtime-прогоном и внешним E2E.
|
||||||
|
|
||||||
## Разборы кода между прогонами
|
## Разборы кода между прогонами
|
||||||
|
|
||||||
Отдельно от отчётов о прогонах: дефекты, найденные чтением дерева и сверкой с
|
Отдельно от отчётов о прогонах: дефекты, найденные чтением дерева и сверкой с
|
||||||
|
|||||||
Reference in New Issue
Block a user