diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 51f0fbb1..be205fbe 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -343,3 +343,15 @@ Retry POST0, Telegram calls0, JS errors0, SQL fixture counts сохраняли Контроль основной БД до/после совпадает: servers2, speedHistory9, retention14. Дополнительный SELECT подтвердил роли home-router. Эфемерный контейнер завершён/удалён, pool закрыт; остались только три основные Compose-службы. Пароли, адресация и правила устройств не менялись. Эта инвентаризация не закрывает ROS4/5/6 или остальные внешние ограничения. Следующий12.5.51 — проверить реальные пустые состояния, выбор устройства/URL-контекст и доступность форм сетевых экранов на production frontend, без изменения RouterOS. После этого конкретный план создания изолированных тестовых объектов должен сохранять административный доступ и существующую конфигурацию. План/паспорт/протокол синхронизированы; локальный коммит без push. + +## 12.5.51 — реальная GRE пара, связность и lifecycle (2026-10-08) + +По прямому поручению пользователя VPN-приёмка продолжается с созданием реальных тестовых туннелей, особенно GRE. [Lifecycle](ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json): production backend8782054, два CHR7.24.5, собственные имена mm-acceptance-gre-* и комментарий владения. Перед записью проверены локальные внешние адреса и отсутствие пересечения198.18.255.248/30 с существующей адресацией/недефолтными маршрутами. POST application API создал обе GRE стороны и /ip/address:201/201. Внешние endpoints194.226.121.150 ↔104.165.244.7, внутренние198.18.255.249/30 ↔198.18.255.250/30, MTU1400,keepalive2s/3. Дополнительных static/default routes и Firewall правил не создавалось. + +После running=true независимый RouterOS Ping через указанный GRE интерфейс:3/3 в каждом направлении,0%loss,~54ms. Это реальная point-to-point связность, не benchmark и не шифрованный IPsec. PATCH MTU первого конца1360, disable и enable дали200 и подтверждены отдельным чтением RouterOS. [Browser](ux-ui/acceptance/browser-gre-real-2026-10-08.json): настоящие созданные объекты, формы обоих устройств, local IP и server/tunnel URL-контекст/reload/320px, JS errors0; browser проход читает/отменяет формы, создание/изменение выполнял production API. [ФормаCHR1](ux-ui/screens/gre-real-form-server1-320-2026-10-08.png) просмотрена, [CHR2](ux-ui/screens/gre-real-form-server2-320-2026-10-08.png) сохранена. + +Первый запуск Ping до готовности получил timeout; [повтор после running](ux-ui/acceptance/gre-ready-ping-2026-10-08.json) подтвердил3/3. Первый harness остановил свою очистку на слишком строгом сравнении baseline, включавшем runtime IDs; причина конкретного несовпадения не была сохранена полностью. [Независимая очистка](ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json) удалила оставшуюся собственную сторону и подтвердила отсутствие интерфейсов/IP/connected route, исходные количества0GRE/1–2addresses/4–5routes. Harness исправлен: сначала очистить обе стороны, сравнивать конфигурационные поля без runtime IDs, сохранить evidence до assertion. Повторный полный lifecycle прошёл с exitCode0: DELETE200/200, все выбранные поля GRE/IP/route/IPv4 Firewall совпали с baseline. Прямое административное восстановление чужих объектов не выполнялось. + +Обнаружен настоящий дефект: принятый remoteInnerIp возвращается пустым, затем теряется в форме редактирования. Связность обеспечивается настройкой обоих реальных /ip/address, но сохранение формы этим не считается исправленным. Следующий12.5.52 — исправить metadata persistence/restore peer IP и профильные тесты, затем развернуть и повторить настоящий GRE цикл. Ограничения ROS6 для остальных VPN/прав/частичных отказов остаются. Control main2servers/9speed/retention14 сохранён; application GRE revisions намеренно остаются журналом выполненных действий. Временный контейнер/туннель8018 удалены; RouterOS тестовые объекты очищены. Локальный коммит без push. + +Официальная схема пары и keepalive: [MikroTik GRE](https://manual.mikrotik.com/docs/virtual-private-networks/gre/). Документация текущей версии проверена, реальные команды/ответы — RouterOS7.24.5. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 37dabdea..53350dac 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-08: 12.5.50 GET-only инвентаризация двух CHR прошла:78 чтений, RouterOS7.24.5, выбранные поля конфигурации при повторном чтении совпали. VPN/BGP/OSPF и IPv4 Firewall не настроены, IPsec содержит только стандартный template. Оба app типа home-router; ROS4/5/6 действия и связность этим не подтверждены. Main controls2servers/9speed/retention14 сохранены. Runtime backend8782054/frontendb55588f прежний. Следующий12.5.51 — реальные пустые состояния и контекст сетевых экранов без изменения RouterOS. +Актуальное продолжение 2026-10-08: 12.5.51 создал реальную GRE пару через production API, проверил MTU/enable/disable, двусторонний Ping3/3 и реальные UI формы/URL/320px. Обе стороны удалены, выбранная конфигурация восстановлена. Подтверждён дефект: remoteInnerIp теряется в receipt и форме. Следующий12.5.52 — исправить сохранение peer IP; runtime backend8782054/frontendb55588f прежний. При VPN приёмке создавать собственные реальные тестовые объекты, особенно GRE, и удалять их после проверки. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-08 -Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backend8782054/frontendb55588f и два CHR. Внешние проверки подтвердили PG backup/restore/rollback, остановку фоновой работы для одного экземпляра, API JWT/RBAC и браузерные состояния восстановления. Native TCP/UDP speed, история и UI проверены в границах журнала; доступ ко второму CHR восстановлен пользователем. Очередь Telegram проверена на реальном PG: dedupe, конкурентный claim, retry/version, ошибки сохранения и неопределённый исход; ответы отправителя подменялись, реальной доставки это не доказывает. Блоки12.5.43–45 подтвердили browser retry/checkpoint и развернули понятное пояснение HTTP500. 12.5.46 подтвердил browser JWT/RBAC очереди на реальном HTTP/PG; 12.5.47 подтвердил изоляцию checkpoint при смене двух реальных HTTP/PG источников в конфигурации local; 12.5.48 подтвердил scoped axe/клавиатуру в обеих темах и320px; 12.5.49 собрал Q-матрицу и подтвердил отсутствие настройки Telegram; 12.5.50 подтвердил GET-only инвентаризацию: VPN/BGP/OSPF пусты, роли home-router/home-router; следующий12.5.51 — production UI пустых сетевых состояний и контекста устройства. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения. +Этапы0–11 завершены в описанных локальных границах. Этап12 открыт. На тестовом сервере161.104.46.222 работают backend8782054/frontendb55588f и два CHR. Внешние проверки подтвердили PG backup/restore/rollback, остановку фоновой работы для одного экземпляра, API JWT/RBAC и браузерные состояния восстановления. Native TCP/UDP speed, история и UI проверены в границах журнала; доступ ко второму CHR восстановлен пользователем. Очередь Telegram проверена на реальном PG: dedupe, конкурентный claim, retry/version, ошибки сохранения и неопределённый исход; ответы отправителя подменялись, реальной доставки это не доказывает. Блоки12.5.43–45 подтвердили browser retry/checkpoint и развернули понятное пояснение HTTP500. 12.5.46 подтвердил browser JWT/RBAC очереди на реальном HTTP/PG; 12.5.47 подтвердил изоляцию checkpoint при смене двух реальных HTTP/PG источников в конфигурации local; 12.5.48 подтвердил scoped axe/клавиатуру в обеих темах и320px; 12.5.49 собрал Q-матрицу и подтвердил отсутствие настройки Telegram; 12.5.50 подтвердил GET-only инвентаризацию: VPN/BGP/OSPF пусты, роли home-router/home-router; По уточнению пользователя12.5.51 создал реальные GRE туннели и подтвердил lifecycle/связность; обнаружена потеря peer IP, следующий12.5.52 — исправление сохранения metadata. Реальная Telegram доставка, Portal SSO, физический TCP disconnect, multi-instance и остальные профильные сетевые сценарии остаются открытыми. [Протокол](ux-ui-external-acceptance.md) и [журнал](ux-ui-stage-12.md) содержат доказательства и ограничения. Выполненные внешние сценарии не заменяют приёмку оставшихся интеграций и условий эксплуатации. Датированные продолжения ниже — история; точный следующий шаг указан в начале [журнала](ux-ui-progress.md). @@ -320,3 +320,15 @@ REST запрос → ожидание → подтверждённый output / 2026-10-03: 11Б.4.3.1.1 — live Alerts без первоначальных demo/0, strict primary reader/known/time, 3 E2E/lint/typecheck/build прошли. Далее independent secondary readers/source 11Б.4.3.1.2. 2026-10-03: 11Б.4.3.1.2.1 — strict secondary API (GRE partial failures/unknown status), 4 unit/typecheck/lint прошли. Module не подключён. Далее 11Б.4.3.1.2.2 independent UI/source. + +## 12.5.51 — реальная GRE пара, связность и lifecycle (2026-10-08) + +По прямому поручению пользователя VPN-приёмка продолжается с созданием реальных тестовых туннелей, особенно GRE. [Lifecycle](ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json): production backend8782054, два CHR7.24.5, собственные имена mm-acceptance-gre-* и комментарий владения. Перед записью проверены локальные внешние адреса и отсутствие пересечения198.18.255.248/30 с существующей адресацией/недефолтными маршрутами. POST application API создал обе GRE стороны и /ip/address:201/201. Внешние endpoints194.226.121.150 ↔104.165.244.7, внутренние198.18.255.249/30 ↔198.18.255.250/30, MTU1400,keepalive2s/3. Дополнительных static/default routes и Firewall правил не создавалось. + +После running=true независимый RouterOS Ping через указанный GRE интерфейс:3/3 в каждом направлении,0%loss,~54ms. Это реальная point-to-point связность, не benchmark и не шифрованный IPsec. PATCH MTU первого конца1360, disable и enable дали200 и подтверждены отдельным чтением RouterOS. [Browser](ux-ui/acceptance/browser-gre-real-2026-10-08.json): настоящие созданные объекты, формы обоих устройств, local IP и server/tunnel URL-контекст/reload/320px, JS errors0; browser проход читает/отменяет формы, создание/изменение выполнял production API. [ФормаCHR1](ux-ui/screens/gre-real-form-server1-320-2026-10-08.png) просмотрена, [CHR2](ux-ui/screens/gre-real-form-server2-320-2026-10-08.png) сохранена. + +Первый запуск Ping до готовности получил timeout; [повтор после running](ux-ui/acceptance/gre-ready-ping-2026-10-08.json) подтвердил3/3. Первый harness остановил свою очистку на слишком строгом сравнении baseline, включавшем runtime IDs; причина конкретного несовпадения не была сохранена полностью. [Независимая очистка](ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json) удалила оставшуюся собственную сторону и подтвердила отсутствие интерфейсов/IP/connected route, исходные количества0GRE/1–2addresses/4–5routes. Harness исправлен: сначала очистить обе стороны, сравнивать конфигурационные поля без runtime IDs, сохранить evidence до assertion. Повторный полный lifecycle прошёл с exitCode0: DELETE200/200, все выбранные поля GRE/IP/route/IPv4 Firewall совпали с baseline. Прямое административное восстановление чужих объектов не выполнялось. + +Обнаружен настоящий дефект: принятый remoteInnerIp возвращается пустым, затем теряется в форме редактирования. Связность обеспечивается настройкой обоих реальных /ip/address, но сохранение формы этим не считается исправленным. Следующий12.5.52 — исправить metadata persistence/restore peer IP и профильные тесты, затем развернуть и повторить настоящий GRE цикл. Ограничения ROS6 для остальных VPN/прав/частичных отказов остаются. Control main2servers/9speed/retention14 сохранён; application GRE revisions намеренно остаются журналом выполненных действий. Временный контейнер/туннель8018 удалены; RouterOS тестовые объекты очищены. Локальный коммит без push. + +Официальная схема пары и keepalive: [MikroTik GRE](https://manual.mikrotik.com/docs/virtual-private-networks/gre/). Документация текущей версии проверена, реальные команды/ответы — RouterOS7.24.5. diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 758eb5f9..1e4f4dfd 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,11 +1,13 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-08: 12.5.50 GET-only инвентаризация двух CHR прошла:78 чтений, RouterOS7.24.5, выбранные поля конфигурации при повторном чтении совпали. VPN/BGP/OSPF и IPv4 Firewall не настроены, IPsec содержит только стандартный template. Оба app типа home-router; ROS4/5/6 действия и связность этим не подтверждены. Main controls2servers/9speed/retention14 сохранены. Runtime backend8782054/frontendb55588f прежний. Следующий12.5.51 — реальные пустые состояния и контекст сетевых экранов без изменения RouterOS. +Актуальное продолжение 2026-10-08: 12.5.51 создал реальную GRE пару через production API, проверил MTU/enable/disable, двусторонний Ping3/3 и реальные UI формы/URL/320px. Обе стороны удалены, выбранная конфигурация восстановлена. Подтверждён дефект: remoteInnerIp теряется в receipt и форме. Следующий12.5.52 — исправить сохранение peer IP; runtime backend8782054/frontendb55588f прежний. При VPN приёмке создавать собственные реальные тестовые объекты, особенно GRE, и удалять их после проверки. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). ## Правила продолжения +- По поручению2026-10-08 при внешнем тестировании VPN создавать реальные собственные тестовые туннели, особенно GRE; проверять API/RouterOS/связность и очищать только созданные объекты, сохраняя исходную конфигурацию. + - План: ReUI PRO, Frame, base-nova; KpiStatGrid, ServerTileRail и CodeExportSheet остаются источниками общих композиционных решений. - Работа последовательно, без субагентов. После каждого завершённого этапа — локальный коммит на русском, без push. - В начале этапа и после значимых проверок читать пятичасовой лимит. Базовый резерв 25%; по текущему прямому поручению пользователя продолжать до конца лимитов, сохраняя проверенные блоки локальными коммитами. @@ -32,7 +34,19 @@ | 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 | | 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 | | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | -| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–50 и ограничения ниже. Runtime backend8782054/frontendb55588f. | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–51 и ограничения ниже. Runtime backend8782054/frontendb55588f. | + +## 12.5.51 — реальная GRE пара, связность и lifecycle (2026-10-08) + +По прямому поручению пользователя VPN-приёмка продолжается с созданием реальных тестовых туннелей, особенно GRE. [Lifecycle](ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json): production backend8782054, два CHR7.24.5, собственные имена mm-acceptance-gre-* и комментарий владения. Перед записью проверены локальные внешние адреса и отсутствие пересечения198.18.255.248/30 с существующей адресацией/недефолтными маршрутами. POST application API создал обе GRE стороны и /ip/address:201/201. Внешние endpoints194.226.121.150 ↔104.165.244.7, внутренние198.18.255.249/30 ↔198.18.255.250/30, MTU1400,keepalive2s/3. Дополнительных static/default routes и Firewall правил не создавалось. + +После running=true независимый RouterOS Ping через указанный GRE интерфейс:3/3 в каждом направлении,0%loss,~54ms. Это реальная point-to-point связность, не benchmark и не шифрованный IPsec. PATCH MTU первого конца1360, disable и enable дали200 и подтверждены отдельным чтением RouterOS. [Browser](ux-ui/acceptance/browser-gre-real-2026-10-08.json): настоящие созданные объекты, формы обоих устройств, local IP и server/tunnel URL-контекст/reload/320px, JS errors0; browser проход читает/отменяет формы, создание/изменение выполнял production API. [ФормаCHR1](ux-ui/screens/gre-real-form-server1-320-2026-10-08.png) просмотрена, [CHR2](ux-ui/screens/gre-real-form-server2-320-2026-10-08.png) сохранена. + +Первый запуск Ping до готовности получил timeout; [повтор после running](ux-ui/acceptance/gre-ready-ping-2026-10-08.json) подтвердил3/3. Первый harness остановил свою очистку на слишком строгом сравнении baseline, включавшем runtime IDs; причина конкретного несовпадения не была сохранена полностью. [Независимая очистка](ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json) удалила оставшуюся собственную сторону и подтвердила отсутствие интерфейсов/IP/connected route, исходные количества0GRE/1–2addresses/4–5routes. Harness исправлен: сначала очистить обе стороны, сравнивать конфигурационные поля без runtime IDs, сохранить evidence до assertion. Повторный полный lifecycle прошёл с exitCode0: DELETE200/200, все выбранные поля GRE/IP/route/IPv4 Firewall совпали с baseline. Прямое административное восстановление чужих объектов не выполнялось. + +Обнаружен настоящий дефект: принятый remoteInnerIp возвращается пустым, затем теряется в форме редактирования. Связность обеспечивается настройкой обоих реальных /ip/address, но сохранение формы этим не считается исправленным. Следующий12.5.52 — исправить metadata persistence/restore peer IP и профильные тесты, затем развернуть и повторить настоящий GRE цикл. Ограничения ROS6 для остальных VPN/прав/частичных отказов остаются. Control main2servers/9speed/retention14 сохранён; application GRE revisions намеренно остаются журналом выполненных действий. Временный контейнер/туннель8018 удалены; RouterOS тестовые объекты очищены. Локальный коммит без push. + +Официальная схема пары и keepalive: [MikroTik GRE](https://manual.mikrotik.com/docs/virtual-private-networks/gre/). Документация текущей версии проверена, реальные команды/ответы — RouterOS7.24.5. ## 12.5.50 — инвентаризация двух CHR без изменения конфигурации (2026-10-08) diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 77cbe033..a3a984a6 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-08: 12.5.50 GET-only инвентаризация двух CHR прошла:78 чтений, RouterOS7.24.5, выбранные поля конфигурации при повторном чтении совпали. VPN/BGP/OSPF и IPv4 Firewall не настроены, IPsec содержит только стандартный template. Оба app типа home-router; ROS4/5/6 действия и связность этим не подтверждены. Main controls2servers/9speed/retention14 сохранены. Runtime backend8782054/frontendb55588f прежний. Следующий12.5.51 — реальные пустые состояния и контекст сетевых экранов без изменения RouterOS. +Актуальное продолжение 2026-10-08: 12.5.51 создал реальную GRE пару через production API, проверил MTU/enable/disable, двусторонний Ping3/3 и реальные UI формы/URL/320px. Обе стороны удалены, выбранная конфигурация восстановлена. Подтверждён дефект: remoteInnerIp теряется в receipt и форме. Следующий12.5.52 — исправить сохранение peer IP; runtime backend8782054/frontendb55588f прежний. При VPN приёмке создавать собственные реальные тестовые объекты, особенно GRE, и удалять их после проверки. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -1508,3 +1508,15 @@ Retry POST0, Telegram calls0, JS errors0, SQL fixture counts сохраняли Контроль основной БД до/после совпадает: servers2, speedHistory9, retention14. Дополнительный SELECT подтвердил роли home-router. Эфемерный контейнер завершён/удалён, pool закрыт; остались только три основные Compose-службы. Пароли, адресация и правила устройств не менялись. Эта инвентаризация не закрывает ROS4/5/6 или остальные внешние ограничения. Следующий12.5.51 — проверить реальные пустые состояния, выбор устройства/URL-контекст и доступность форм сетевых экранов на production frontend, без изменения RouterOS. После этого конкретный план создания изолированных тестовых объектов должен сохранять административный доступ и существующую конфигурацию. План/паспорт/протокол синхронизированы; локальный коммит без push. + +## 12.5.51 — реальная GRE пара, связность и lifecycle (2026-10-08) + +По прямому поручению пользователя VPN-приёмка продолжается с созданием реальных тестовых туннелей, особенно GRE. [Lifecycle](ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json): production backend8782054, два CHR7.24.5, собственные имена mm-acceptance-gre-* и комментарий владения. Перед записью проверены локальные внешние адреса и отсутствие пересечения198.18.255.248/30 с существующей адресацией/недефолтными маршрутами. POST application API создал обе GRE стороны и /ip/address:201/201. Внешние endpoints194.226.121.150 ↔104.165.244.7, внутренние198.18.255.249/30 ↔198.18.255.250/30, MTU1400,keepalive2s/3. Дополнительных static/default routes и Firewall правил не создавалось. + +После running=true независимый RouterOS Ping через указанный GRE интерфейс:3/3 в каждом направлении,0%loss,~54ms. Это реальная point-to-point связность, не benchmark и не шифрованный IPsec. PATCH MTU первого конца1360, disable и enable дали200 и подтверждены отдельным чтением RouterOS. [Browser](ux-ui/acceptance/browser-gre-real-2026-10-08.json): настоящие созданные объекты, формы обоих устройств, local IP и server/tunnel URL-контекст/reload/320px, JS errors0; browser проход читает/отменяет формы, создание/изменение выполнял production API. [ФормаCHR1](ux-ui/screens/gre-real-form-server1-320-2026-10-08.png) просмотрена, [CHR2](ux-ui/screens/gre-real-form-server2-320-2026-10-08.png) сохранена. + +Первый запуск Ping до готовности получил timeout; [повтор после running](ux-ui/acceptance/gre-ready-ping-2026-10-08.json) подтвердил3/3. Первый harness остановил свою очистку на слишком строгом сравнении baseline, включавшем runtime IDs; причина конкретного несовпадения не была сохранена полностью. [Независимая очистка](ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json) удалила оставшуюся собственную сторону и подтвердила отсутствие интерфейсов/IP/connected route, исходные количества0GRE/1–2addresses/4–5routes. Harness исправлен: сначала очистить обе стороны, сравнивать конфигурационные поля без runtime IDs, сохранить evidence до assertion. Повторный полный lifecycle прошёл с exitCode0: DELETE200/200, все выбранные поля GRE/IP/route/IPv4 Firewall совпали с baseline. Прямое административное восстановление чужих объектов не выполнялось. + +Обнаружен настоящий дефект: принятый remoteInnerIp возвращается пустым, затем теряется в форме редактирования. Связность обеспечивается настройкой обоих реальных /ip/address, но сохранение формы этим не считается исправленным. Следующий12.5.52 — исправить metadata persistence/restore peer IP и профильные тесты, затем развернуть и повторить настоящий GRE цикл. Ограничения ROS6 для остальных VPN/прав/частичных отказов остаются. Control main2servers/9speed/retention14 сохранён; application GRE revisions намеренно остаются журналом выполненных действий. Временный контейнер/туннель8018 удалены; RouterOS тестовые объекты очищены. Локальный коммит без push. + +Официальная схема пары и keepalive: [MikroTik GRE](https://manual.mikrotik.com/docs/virtual-private-networks/gre/). Документация текущей версии проверена, реальные команды/ответы — RouterOS7.24.5. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 195a5adc..e5958c4c 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -351,3 +351,15 @@ Retry POST0, Telegram calls0, JS errors0, SQL fixture counts сохраняли Контроль основной БД до/после совпадает: servers2, speedHistory9, retention14. Дополнительный SELECT подтвердил роли home-router. Эфемерный контейнер завершён/удалён, pool закрыт; остались только три основные Compose-службы. Пароли, адресация и правила устройств не менялись. Эта инвентаризация не закрывает ROS4/5/6 или остальные внешние ограничения. Следующий12.5.51 — проверить реальные пустые состояния, выбор устройства/URL-контекст и доступность форм сетевых экранов на production frontend, без изменения RouterOS. После этого конкретный план создания изолированных тестовых объектов должен сохранять административный доступ и существующую конфигурацию. План/паспорт/протокол синхронизированы; локальный коммит без push. + +## 12.5.51 — реальная GRE пара, связность и lifecycle (2026-10-08) + +По прямому поручению пользователя VPN-приёмка продолжается с созданием реальных тестовых туннелей, особенно GRE. [Lifecycle](ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json): production backend8782054, два CHR7.24.5, собственные имена mm-acceptance-gre-* и комментарий владения. Перед записью проверены локальные внешние адреса и отсутствие пересечения198.18.255.248/30 с существующей адресацией/недефолтными маршрутами. POST application API создал обе GRE стороны и /ip/address:201/201. Внешние endpoints194.226.121.150 ↔104.165.244.7, внутренние198.18.255.249/30 ↔198.18.255.250/30, MTU1400,keepalive2s/3. Дополнительных static/default routes и Firewall правил не создавалось. + +После running=true независимый RouterOS Ping через указанный GRE интерфейс:3/3 в каждом направлении,0%loss,~54ms. Это реальная point-to-point связность, не benchmark и не шифрованный IPsec. PATCH MTU первого конца1360, disable и enable дали200 и подтверждены отдельным чтением RouterOS. [Browser](ux-ui/acceptance/browser-gre-real-2026-10-08.json): настоящие созданные объекты, формы обоих устройств, local IP и server/tunnel URL-контекст/reload/320px, JS errors0; browser проход читает/отменяет формы, создание/изменение выполнял production API. [ФормаCHR1](ux-ui/screens/gre-real-form-server1-320-2026-10-08.png) просмотрена, [CHR2](ux-ui/screens/gre-real-form-server2-320-2026-10-08.png) сохранена. + +Первый запуск Ping до готовности получил timeout; [повтор после running](ux-ui/acceptance/gre-ready-ping-2026-10-08.json) подтвердил3/3. Первый harness остановил свою очистку на слишком строгом сравнении baseline, включавшем runtime IDs; причина конкретного несовпадения не была сохранена полностью. [Независимая очистка](ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json) удалила оставшуюся собственную сторону и подтвердила отсутствие интерфейсов/IP/connected route, исходные количества0GRE/1–2addresses/4–5routes. Harness исправлен: сначала очистить обе стороны, сравнивать конфигурационные поля без runtime IDs, сохранить evidence до assertion. Повторный полный lifecycle прошёл с exitCode0: DELETE200/200, все выбранные поля GRE/IP/route/IPv4 Firewall совпали с baseline. Прямое административное восстановление чужих объектов не выполнялось. + +Обнаружен настоящий дефект: принятый remoteInnerIp возвращается пустым, затем теряется в форме редактирования. Связность обеспечивается настройкой обоих реальных /ip/address, но сохранение формы этим не считается исправленным. Следующий12.5.52 — исправить metadata persistence/restore peer IP и профильные тесты, затем развернуть и повторить настоящий GRE цикл. Ограничения ROS6 для остальных VPN/прав/частичных отказов остаются. Control main2servers/9speed/retention14 сохранён; application GRE revisions намеренно остаются журналом выполненных действий. Временный контейнер/туннель8018 удалены; RouterOS тестовые объекты очищены. Локальный коммит без push. + +Официальная схема пары и keepalive: [MikroTik GRE](https://manual.mikrotik.com/docs/virtual-private-networks/gre/). Документация текущей версии проверена, реальные команды/ответы — RouterOS7.24.5. diff --git a/docs/ux-ui/acceptance/browser-gre-real-2026-10-08.json b/docs/ux-ui/acceptance/browser-gre-real-2026-10-08.json new file mode 100644 index 00000000..902f47b7 --- /dev/null +++ b/docs/ux-ui/acceptance/browser-gre-real-2026-10-08.json @@ -0,0 +1,34 @@ +{ + "date": "2026-10-08", + "frontendSource": "b55588f", + "backendSource": "8782054", + "name": "mm-acceptance-gre-1791448301390", + "httpMocks": false, + "actualCreatedGre": true, + "cases": [ + { + "serverId": 1, + "urlContextPreserved": true, + "localInnerIp": "198.18.255.249/30", + "remoteInnerIp": "", + "remoteInnerIpLost": true, + "formMatchesDevice": true, + "mobileFits": true + }, + { + "serverId": 2, + "urlContextPreserved": true, + "localInnerIp": "198.18.255.250/30", + "remoteInnerIp": "", + "remoteInnerIpLost": true, + "formMatchesDevice": true, + "mobileFits": true + } + ], + "pageErrors": [], + "limits": [ + "GRE objects created/changed through real application API; this browser pass reads/cancels forms only", + "Remote inner IP field is lost after persistence; defect confirmed in receipt and form", + "No browser write or deletion in this pass; server harness performs bounded cleanup" + ] +} diff --git a/docs/ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json b/docs/ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json new file mode 100644 index 00000000..8f928df5 --- /dev/null +++ b/docs/ux-ui/acceptance/gre-cleanup-recovery-2026-10-08.json @@ -0,0 +1,26 @@ +{ + "date": "2026-10-08", + "name": "mm-acceptance-gre-1791447724873", + "states": [ + { + "serverId": 1, + "deletedInRecovery": false, + "greCount": 0, + "addressCount": 1, + "routeCount": 4, + "noOwnTunnelOrAddressOrConnectedRoute": true + }, + { + "serverId": 2, + "deletedInRecovery": true, + "greCount": 0, + "addressCount": 2, + "routeCount": 5, + "noOwnTunnelOrAddressOrConnectedRoute": true + } + ], + "limits": [ + "Independent verification of own-object removal and counts; first harness lost its detailed in-memory comparison after assertion", + "Application audit revisions remain intentionally" + ] +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/gre-ready-ping-2026-10-08.json b/docs/ux-ui/acceptance/gre-ready-ping-2026-10-08.json new file mode 100644 index 00000000..1bcb5add --- /dev/null +++ b/docs/ux-ui/acceptance/gre-ready-ping-2026-10-08.json @@ -0,0 +1,29 @@ +{ + "date": "2026-10-08", + "name": "mm-acceptance-gre-1791447724873", + "results": [ + { + "serverId": 1, + "target": "198.18.255.250", + "runningBeforePing": true, + "sent": 3, + "received": 3, + "packetLoss": 0, + "avgRtt": "54ms302us" + }, + { + "serverId": 2, + "target": "198.18.255.249", + "runningBeforePing": true, + "sent": 3, + "received": 3, + "packetLoss": 0, + "avgRtt": "54ms250us" + } + ], + "bidirectionalPingPassed": true, + "limits": [ + "Repeated 3 packets per direction after running=true; initial pre-readiness timeout recorded separately", + "Point-to-point ICMP, no throughput or encryption claim" + ] +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json b/docs/ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json new file mode 100644 index 00000000..68644943 --- /dev/null +++ b/docs/ux-ui/acceptance/gre-real-lifecycle-2026-10-08.json @@ -0,0 +1,217 @@ +{ + "date": "2026-10-08", + "backendSource": "8782054", + "frontendSource": "b55588f", + "name": "mm-acceptance-gre-1791448301390", + "subnet": "198.18.255.248/30", + "changes": [ + { + "method": "POST", + "path": "/api/gre/tunnels", + "status": 201 + }, + { + "method": "POST", + "path": "/api/gre/tunnels", + "status": 201 + }, + { + "method": "PATCH", + "path": "/api/gre/tunnels", + "status": 200 + }, + { + "method": "PATCH", + "path": "/api/gre/tunnels", + "status": 200 + }, + { + "method": "PATCH", + "path": "/api/gre/tunnels", + "status": 200 + }, + { + "method": "DELETE", + "path": "/api/gre/tunnels", + "status": 200 + }, + { + "method": "DELETE", + "path": "/api/gre/tunnels", + "status": 200 + } + ], + "pings": [ + { + "serverId": 1, + "target": "198.18.255.250", + "interface": "mm-acceptance-gre-1791448301390", + "rows": [ + { + "sent": "1", + "received": "1", + "packet-loss": "0", + "time": "54ms365us", + "avg-rtt": "54ms365us" + }, + { + "sent": "2", + "received": "2", + "packet-loss": "0", + "time": "54ms164us", + "avg-rtt": "54ms264us" + }, + { + "sent": "3", + "received": "3", + "packet-loss": "0", + "time": "54ms482us", + "avg-rtt": "54ms337us" + } + ], + "received": 3 + }, + { + "serverId": 2, + "target": "198.18.255.249", + "interface": "mm-acceptance-gre-1791448301390", + "rows": [ + { + "sent": "1", + "received": "1", + "packet-loss": "0", + "time": "54ms258us", + "avg-rtt": "54ms258us" + }, + { + "sent": "2", + "received": "2", + "packet-loss": "0", + "time": "54ms386us", + "avg-rtt": "54ms322us" + }, + { + "sent": "3", + "received": "3", + "packet-loss": "0", + "time": "54ms285us", + "avg-rtt": "54ms309us" + } + ], + "received": 3 + } + ], + "realRouterOs": true, + "creates": [ + { + "serverId": 1, + "status": 201, + "name": "mm-acceptance-gre-1791448301390", + "returnedRemoteInnerIp": "", + "requestedRemoteInnerIp": "198.18.255.250/30" + }, + { + "serverId": 2, + "status": 201, + "name": "mm-acceptance-gre-1791448301390", + "returnedRemoteInnerIp": "", + "requestedRemoteInnerIp": "198.18.255.249/30" + } + ], + "createdState": [ + { + "serverId": 1, + "interface": { + "rosId": "*4", + "name": "mm-acceptance-gre-1791448301390", + "localAddress": "194.226.121.150", + "remoteAddress": "104.165.244.7", + "mtu": "1400", + "keepalive": "2s,3", + "running": "false", + "disabled": "false" + }, + "addresses": [ + "198.18.255.249/30" + ] + }, + { + "serverId": 2, + "interface": { + "rosId": "*4", + "name": "mm-acceptance-gre-1791448301390", + "localAddress": "104.165.244.7", + "remoteAddress": "194.226.121.150", + "mtu": "1400", + "keepalive": "2s,3", + "running": "false", + "disabled": "false" + }, + "addresses": [ + "198.18.255.250/30" + ] + } + ], + "runningBeforePing": true, + "bidirectionalPingPassed": true, + "updatedState": [ + { + "serverId": 1, + "interface": { + "rosId": "*4", + "name": "mm-acceptance-gre-1791448301390", + "localAddress": "194.226.121.150", + "remoteAddress": "104.165.244.7", + "mtu": "1360", + "keepalive": "2s,3", + "running": "true", + "disabled": "false" + }, + "addresses": [ + "198.18.255.249/30" + ] + }, + { + "serverId": 2, + "interface": { + "rosId": "*4", + "name": "mm-acceptance-gre-1791448301390", + "localAddress": "104.165.244.7", + "remoteAddress": "194.226.121.150", + "mtu": "1400", + "keepalive": "2s,3", + "running": "true", + "disabled": "false" + }, + "addresses": [ + "198.18.255.250/30" + ] + } + ], + "cleanup": [ + { + "serverId": 1, + "/interface/gre": true, + "/ip/address": true, + "/ip/route": true, + "/ip/firewall/filter": true, + "/ip/firewall/nat": true, + "/ip/firewall/mangle": true + }, + { + "serverId": 2, + "/interface/gre": true, + "/ip/address": true, + "/ip/route": true, + "/ip/firewall/filter": true, + "/ip/firewall/nat": true, + "/ip/firewall/mangle": true + } + ], + "limits": [ + "Plain GRE, not encrypted IPsec; no throughput test", + "Only own interface/IPs and generated connected route changed; no default routes or firewall changes", + "Application GRE revisions intentionally remain as audit history", + "Ping success establishes tested point-to-point traffic only" + ] +} \ No newline at end of file diff --git a/docs/ux-ui/screens/gre-real-form-server1-320-2026-10-08.png b/docs/ux-ui/screens/gre-real-form-server1-320-2026-10-08.png new file mode 100644 index 00000000..0a56161b Binary files /dev/null and b/docs/ux-ui/screens/gre-real-form-server1-320-2026-10-08.png differ diff --git a/docs/ux-ui/screens/gre-real-form-server2-320-2026-10-08.png b/docs/ux-ui/screens/gre-real-form-server2-320-2026-10-08.png new file mode 100644 index 00000000..ae622acc Binary files /dev/null and b/docs/ux-ui/screens/gre-real-form-server2-320-2026-10-08.png differ