chore(rest): подтвердить устойчивость повторных параллельных чтений

This commit is contained in:
Denozordec committed 2026-10-15 14:39:29 +07:00
1 parent 3d51bba86d
commit c88d31fa45
9 files changed
+4389 -11

No files matched your search

+11 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-15: 261 — оставшиеся12 default screens проверены; контраст recursive/ECMP исправлен, KPI BGP/GRE/VXLAN/OSPF используют штатную адаптивную сетку.64 unique live states261, вместе с260 —120 состояний30 экранов с явным происхождением;40 локальных E2E приняты. Runtime backend258/frontend261. Следующий262 — оформить десятиминутный REST-протокол, затем263 — итоговая UI-регрессия; этап12.5 открыт.
Актуальное продолжение 2026-10-15: 262 — ten-minute REST soak после shared pool fix прошёл:21 волна×12 GET,252 запросов/504 device observations,200/errornull везде, новые receipts, native writes0. UI260/261 покрывает120 unique default states30 экранов. Runtime backend258/frontend261. Следующий263 — полная актуальная локальная UI-регрессия с изоляцией backend и сохранением screenshots; этап12.5 открыт.
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
@@ -18,6 +18,16 @@ OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/bro
BFD85: Up/Full/own route/Ping,4 live UI и loss/withdrawal/recovery приняты; exact own cleanup8 коллекций×2 passed. Withdrawal5,245ms не подтверждает sub-second BFD timing; этот вопрос открыт. Runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-bfd-loss-2026-10-09.json).
## 12.5.262 — десятиминутная устойчивость REST после ограничения соединений (2026-10-15)
Реальный Portal UI login; JWT только в памяти процесса, не в отчёте/файле. Затем прямой localhost8000 SSH tunnel к backend258, endpoint GET /api/certificates/state:21 волна через30s,12 одновременно инициированных Node fetch запросов в каждой. Первый и последний запросы разделены полноценным окном600916ms. Frontend развёртывался/проверялся в части окна, обычные фоновые коллекторы работали; тест не зависел от frontend restart. [Полный протокол](ux-ui/acceptance/rest262-soak.json).
Все252 HTTP responses200;504 server observations по exact IDs1/2, errornull везде. Server collectedAt валидны и строго новее предыдущей волны: кэш старого receipt не засчитан. Median/p95/max request duration=821/1687/1933ms. Ошибок API/timeout/RouterOS login не обнаружено; автоматических повторов после неопределённого результата нет. Configuration/native writes0; только авторизация Portal и чтение. [Сводка](ux-ui/acceptance/rest262-summary.json).
Проверен один backend, два предоставленных CHR и конкретный HTTP REST путь. Live peak native sockets не измерялся: cap2 подтверждён профильным transport тестом257, здесь проверяется наблюдаемая стабильность под повторяющимися burst. Не заявляются global cap для hostname aliases/внешних WinBox/SSH/других backend, все прочие REST endpoints, максимальная пропускная способность или бессрочная устойчивость. Историческая причинность всех401/500/vendor version hypothesis этим окном не доказана.
Helper syntax/scoped ESLint passed; production код не менялся, Docker build/25 backend profiles не повторялись. Native объектов/настроек/DNS/файлов не создавали; rollback не нужен, пароли не менялись. Датированные документы и текущая матрица обновлены. Следующий263 — один полный локальный UI-набор после shared keyboard260 и responsive261, с недоступным proxy backend и восстановлением исходных screenshots; build/runtime остаются backend258/frontend261.
## 12.5.261 — оставшиеся экраны и читаемые сетевые KPI (2026-10-15)
Baseline12 разделов×2 темы×1440/320px:48 live states, API/JS errors0, overflow0, blocked configuration writes0. Четыре проверенных read-only POST OSPF preview разрешены явно после чтения backend handler; они рассчитывают план, не применяют его. DNS resolution/catalog read POST также имеют точный opt-in allowlist в helper, остальные non-GET блокируются. EvoBGP на стенде disabled, URL/key не настроены: каталоги здесь проверены в состоянии недоступной интеграции, не с реальными внешними данными. [Baseline](ux-ui/acceptance/ui261-baseline.json).