# Итоговая лабораторная приёмка UX/UI — 2026-10-15 Статус: **основной UX/UI-план, включая этап12.5, завершён в границах предоставленного тестового стенда**. Перечисленные ниже внешние ограничения сохраняются. Документ фиксирует состояние до публикации. Владелец отдельно разрешил публикацию main/2.0.0; [описание релиза](releases/2.0.0.md). Это не изменяет границы лабораторных доказательств. ## Проверенный контур - Debian13/Docker Compose, PostgreSQL18.6, Portal1.3.1; один backend. - Два тестовых CHR RouterOS7.24.5:194.226.121.150 и104.165.244.7. HTTP REST используется по разрешению владельца стенда. - Backend `ux-certificates258`: `sha256:984684709e619972bae8657208e3150d12f1c4f2b5642fecf5286a5d87e9fe71`. - Frontend `ux-accessibility261`: `sha256:eec4410f1109a46e864d695cfb4311fdb9a224247549c8a9e78e44c6c0e455cb`. - Основной ПК и узкий экран320px, обе темы. Android StrongSwan full-tunnel/reconnect подтверждены пользователем227; прочие ОС этим не принимаются. Точные версии активных образов: [deployment261](ux-ui/acceptance/ui261-deployment.json). История решений: [план](ux-ui-plan.md), [журнал](ux-ui-progress.md), [внешняя матрица](ux-ui-remaining-acceptance.md). ## Критерии этапа12 | Критерий | Фактический результат | Граница доказательства | | --- | --- | --- | | Общая оболочка, доступность и адаптивность |260/261:120 уникальных default states30 экранов, обе темы/1440 и320px; профильные клавиатурные проверки и исправленный фокус при смене URL | Результаты разных фаз сохранены; это не полный ручной screen-reader аудит и не все состояния каждой формы | | Достоверность данных и операций | Unknown/partial состояния и подтверждение операций проверены профильными наборами и реальными сценариями журнала; в259 проверены native ID/key/fingerprint, TLS и canonical dates | Успех HTTP сам по себе не принят за применение; произвольные внешние конфигурации не охвачены | | Производительность | Большие списки — локальная12.3.83;260 — synthetic timings с отдельным ожиданием ответов API;262 —10min REST soak/252 запросов | Это измерения конкретного стенда, без заявления field CWV, maximum throughput или бесконечной устойчивости | | Сборки и регрессия | Backend257:25 profiles; certificates258:9 scripts/build/lint; frontend261:production build, source528 matched; профильные E2E260/261 пройдены | UI263:1393 initial +3 targeted =1396 unique passed; отдельный context264:219 initial +2 targeted =221 unique passed;0 skipped/flaky в обоих наборах. Это разные прогоны, без суммирования повторов | | Реальные интеграции | Portal/Telegram195–201, Android227, S3/limited bridge restore/retention228–240, GeoIP mirror242, контейнеры248, ACME250/renewal259 | Успех этих сценариев не подтверждает все сторонние клиенты/провайдеры и многопроцессную установку | | ReUI | Frame/base-nova/установленные компоненты; semantic Badge variants; vendor/theme/motion не изменены; checklist и scoped проверки зафиксированы260/261 | Вне проверенных состояний могут оставаться проблемы; автоматический axe не является полной сертификацией WCAG | Краткие протоколы: [UI260](ux-ui/acceptance/ui260-summary.json), [UI261](ux-ui/acceptance/ui261-summary.json), [REST262](ux-ui/acceptance/rest262-summary.json), [UI263](ux-ui/acceptance/ui263-summary.json), [context264](ux-ui/acceptance/context264-summary.json), [ACME259](ux-ui/acceptance/acme259-native-rotation.json). ## Что остаётся за пределами подтверждённого контура | Группа | Что не подтверждено / чего не хватает | | --- | --- | | Клиентские ОС и доступность | Windows/macOS/iOS VPN; другие Android-конфигурации; ручная проверка screen reader/assistive technology | | Внешняя сеть | Публичного IPv6 на стенде нет; независимые WAN, физическая потеря пути, outer IPv6 и maximum throughput не приняты | | Масштаб и устойчивость | Несколько полноценных backend/worker со всеми writers, длительные rekey/failover/DB disconnect; контролируемые multi-process тесты не заменяют весь этот контур | | PKI и маршрутизация | Произвольные PKI/OID/path-length/политики, все конфигурации IPv6/address pool; CA revocation ACME отдельно не принят | | Внешние сервисы | Публикация Gitea CI не запускалась по правилу no push; прямой licensed MaxMind отсутствует в текущей реализации; EvoBGP на стенде выключен и не настроен | | S3 | Большой native export, произвольная миграция бакетов и работа нескольких экземпляров требуют отдельной приёмки; полный restore конфигурации CHR не выполнялся | Эти строки — ограничения доказательств и возможностей текущей реализации. Они не превращаются автоматически в поручение реализовать новые функции или получить отсутствующее оборудование. ## Состояние стенда и сохранность После ACME259 восстановлены исходные SSL/native certificates/files/export и приватные SQL-настройки; собственные DNS/issue jobs и приватные ACME fixtures удалены. Контрольные проверки обоих CHR успешны; пароли не менялись. Последующие260–264 не изменяли конфигурацию устройств. ECMP261 проверялся как локальный черновик, затем возвращён off. Коммиты только локальные, без push. В полном UI-наборе263 фактический Next dev manifest направляет unmocked proxy на недоступный `127.0.0.1:9`; исходные371 screenshot-файл сохранены перед запуском и сверены:124 перезаписанных восстановлены, SHA-256 всех371 совпал; два исторических JSON также восстановлены. ## Завершение и дальнейшая работа Критерии согласованного этапа12 — production build, тесты, ReUI checklist и перечень оставшихся ограничений — выполнены в указанном контуре. На предоставленном стенде обязательных незавершённых блоков основного плана нет. Для расширения покрытия следует выбрать конкретную группу из таблицы и обеспечить её условия; повторять принятые наборы без изменений не требуется. Публикация и production-развёртывание в текущий объём не входят.