chore(test): проверить отказ записи ревизии на стенде
This commit is contained in:
1 parent
8eaf78b686
commit
0067c2eeff
9 files changed
+682
-7
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Статус на2026-10-09: backend e01454b/frontend479f2ad, backend healthy. В12.5.67 исправленный Peer .conf принят как клиентский шаблон: API6/6, browser4/4, server endpoint и placeholders; настоящий RSC roundtrip через UI/native/handshake/Ping принят в12.5.68, .conf с явнымName/отказы400/409/сохранение формы приняты в70; поздний native rejection/подтверждённая компенсация/retry приняты в72; неизвестные исходы и audit failure открыты. Мобильная ширина WireGuard Sheets принята в12.5.64. Мобильная GRE форма и native сохранение на обоих CHR приняты в12.5.57. WireGuard handshake/короткий Ping/native API/read-only UI приняты в границах12.5.58; 12.5.59 воспроизвёл оставшиеся peers/IP; 12.5.60 развернул исправление и принял обычное удаление own WG интерфейса с peer/IPv4 адресом на обоих CHR. 12.5.62 принял полный WireGuard UI create/peer/disable/enable/Ping/delete на обоих CHR; устойчивое меню развёрнуто. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md).
|
||||
Статус на2026-10-09: backend8eaf78b/frontend479f2ad, backend healthy. В12.5.67 исправленный Peer .conf принят как клиентский шаблон: API6/6, browser4/4, server endpoint и placeholders; настоящий RSC roundtrip через UI/native/handshake/Ping принят в12.5.68, .conf с явнымName/отказы400/409/сохранение формы приняты в70; поздний native rejection/подтверждённая компенсация/retry приняты в72; изолированный audit INSERT permission denial принят в74; остальные неизвестные исходы/DB faults открыты. Мобильная ширина WireGuard Sheets принята в12.5.64. Мобильная GRE форма и native сохранение на обоих CHR приняты в12.5.57. WireGuard handshake/короткий Ping/native API/read-only UI приняты в границах12.5.58; 12.5.59 воспроизвёл оставшиеся peers/IP; 12.5.60 развернул исправление и принял обычное удаление own WG интерфейса с peer/IPv4 адресом на обоих CHR. 12.5.62 принял полный WireGuard UI create/peer/disable/enable/Ping/delete на обоих CHR; устойчивое меню развёрнуто. Устойчивость меню GRE при live refresh на обоих CHR принята в12.5.55. GRE peer metadata и реальный lifecycle/API/UI/двусторонний Ping подтверждены в12.5.53. Browser retry/checkpoint на реальном HTTP/PG принят в границах12.5.43–45; Telegram sender responses подменены, реальная доставка не проверена. PG-1/2/3/4/5 приняты в описанных границах, PG-6 integrated для одного isolated instance, PG-7 real JWT/processcounts и browser restore passed. PG-8 real PG/native и browser unknown→history done приняты с fault injection после настоящего COMMIT. ROS-8/9 real API/SQL/native приняты в границах12.5.23; browser pair/duration change и delete приняты в12.5.24. ROS-2 authentication failure принят в12.5.25. PortalSSO, физический TCP disconnect, мультиэкземпляры и остальные ROS/Q/интеграции остаются открытыми. [Паспорт](ux-ui-test-server.md), [журнал](ux-ui-progress.md).
|
||||
|
||||
## Паспорт стенда
|
||||
|
||||
@@ -621,3 +621,17 @@ recordWireguard теперь возвращает результат helper. Н
|
||||
Новый wireguard-import-revision.test.ts4/4: created/unchanged receipt, null/undefined, exception и настоящий captureAndAppendRevision с падающим capture callback. Последний воспроизводит именно контракт swallowing→null, DB запрос не выполняется; это не реальный отказ PostgreSQL. Новые tests включены в backend test:wireguard:42/42 (22 preflight+16 apply+4 revision), codec и Fastify4 invalid cases passed. Backend TypeScript/ESLint passed. Browser applied1/1 с подменённым502/точным новым message сохраняет textarea/server/error и не повторяет POST автоматически; это UI boundary, не native/DB интеграция. Diff check passed. Production UI/ReUI primitives не менялись.
|
||||
|
||||
Исправление локальное, runtime backend e01454b/frontend479f2ad не менялся; RouterOS объекты/пароли и DB schema в73 не менялись. Следующий12.5.74 — production build/deploy backend и изолированный реальный audit persistence failure после настоящего apply на собственных WG объектах: подтвердить applied/native/связность, предупреждение HTTP/UI, отсутствие повторной мутации и cleanup/baseline. Нельзя считать73 доказательством сбоев DB/процесса/transport/concurrency/RBAC/IPv6/интеграций; они и прочие внешние ограничения остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.74 — настоящий PostgreSQL audit отказ после успешного WireGuard apply (2026-10-09)
|
||||
|
||||
Backend source8eaf78b68631d774bf18ae049d0e11f90fe098d8 production build/deploy passed; frontend479f2ad иего container сохранены. Archive SHA256a685c56eff695beb8d30eaaf49c6ca03d97011e9a306679e2173d7485df7540a; backend src staging совпал с source. Image inspect IDsha256:2f94d4d52f8c2a23806ac7795af3d2346f9dd3114e2fcda4237b3be3c6513f69,OCI revision8eaf78b,version1.0.0-test.8eaf78b. Network-none revision helper: null false,unchanged receipt true. Backend healthy. Private backup pre-8eaf78b.dump2382377bytes,0600,pg_restore --list passed; previous.env/images сохранены на сервере. SSH и RouterOS REST обоих CHR доступны, пароли не менялись.
|
||||
|
||||
Подготовлена собственная WG пара с уникальным name/comment,51879/1420 и198.18.255.241/30↔198.18.255.242/30. Seed handshake/Ping/export private conf только в памяти/explicit Name и обычный DELETE выполнены. Изолированный контейнер из нового backend образа поднял настоящий Fastify HTTP endpoint с production wireguardRoutes на8082 (host127.0.0.1:8020). Scheduler/обычный main backend не запускались в worker. Endpoint ограничен POST import и точным content/serverId собственной fixture.
|
||||
|
||||
В PostgreSQL создана уникальная temporary NOLOGIN/NOSUPERUSER роль с USAGE schema иSELECT; write privileges не выдавались. Только worker pool запросы выполнялись через SET ROLE на выделенном соединении с обязательным RESET ROLE/release; queries делегировались настоящему pg driver, ответ SQL не подменялся. Production main pool/его права не менялись. Native RouterOS apply выполнился, snapshot успешно дошёл до БД, INSERT config_revisions получил настоящий SQLSTATE42501 на обоих устройствах. Counter реальных denied revision writes2; captureAndAppendRevision вернулnull, новый helper не объявил audit success.
|
||||
|
||||
Production frontend наCHR1 при1280px/CHR2 при320px направил POST на реальный изолированный HTTP endpoint через Playwright route.continue URL override; response fulfillment/HTTP fixtures/SQL/RouterOS mocks не использовались. Это отдельный backend process/HTTP port, не fault основного backend. Оба запроса вернули502,state applied; UI показал «Конфигурация применена, но сохранение ревизии не подтверждено», сохранил textarea/server selection, автоматического повторного POST нет. Native observer подтвердил interface/IP/peer после warning. Пара сохранила network parameters/public identity/private scalar и выполнила handshake/Ping3/3 в обе стороны; audit error не откатил рабочую конфигурацию. Keys/configs не сохранялись в отчёты/screenshots/traces/файлы.
|
||||
|
||||
[Native/PG evidence](ux-ui/acceptance/wg-import-audit-native-2026-10-09.json), [реальный HTTP/UI](ux-ui/acceptance/browser-wg-audit-8eaf78b-2026-10-09.json), [deploy/DB controls](ux-ui/acceptance/wg-import-audit-deploy-controls-2026-10-09.json), [smoke6 страниц](ux-ui/acceptance/deploy-browser-8eaf78b-backend-2026-10-09.json). Fixture exit0. Fault HTTP listener закрыт, pool восстановлен, DROP OWNED/DROP ROLE применены только к подтверждённо созданной NOLOGIN роли без owned business objects; temporaryAuditRoles0. Все собственные WG/peer/IP/connected routes удалены, selected WG/peers/IP/routes/IPv4 filter/nat/mangle baseline совпал на обоих CHR. Остались3 основные службы, backend healthy; frontend не перезапускался. Business DB controls servers2/speedHistory9/retentionDays14/migrations9 до/после совпали; штатные seed/cleanup audit revisions намеренно сохранены. Smoke /dashboard,/servers,/uptime?tab=speed,/settings,/filters,/wireguard200,320px fits,0 page/API errors. Публичные JSON проверены на отсутствие keys/config/password values.
|
||||
|
||||
Граница результата — изолированный реальный permission denial при INSERT после настоящего apply и truthful HTTP/UI. Не проверены физический DB disconnect,ошибка после COMMIT/prune/read,потеря процесса/transport/concurrency/multi-instance/RBAC/IPv6/throughput; warning73 остаётся осторожным и не утверждает отсутствие строки БД. Остаточные WireGuard ограничения открыты. Следующий12.5.75 — перейти к VXLAN: сверить route/model/context, создать только собственные реальные интерфейсы на двух CHR, проверить native/API/связность и cleanup с сохранением baseline. Product source после73 не менялся, общая локальная регрессия не повторялась; production build и scoped реальные сценарии выполнены. Локальный коммит без push.
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.73 локально исправил ложный успех audit: captureAndAppendRevision возвращает null при ошибке, теперь импорт проверяет этот результат. Применённая конфигурация при неподтверждённой ревизии →502,state applied с точным сообщением. Unit42/42, HTTP invalid cases, browser applied1/1, backend TypeScript/ESLint passed. Runtime остаётся backend e01454b/frontend479f2ad. Следующий12.5.74 — build/deploy исправления и изолированный реальный PostgreSQL audit failure после native apply на собственной WG паре, HTTP/UI/native проверка и cleanup. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.74 развернул backend8eaf78b, frontend479f2ad сохранён. Изолированный реальный HTTP/PG audit INSERT denial после native apply на обоих CHR дал502,state applied, понятное предупреждение и сохранённую форму; network/native/handshake/Ping3/3 подтверждены. Temporary role/process/own WG objects удалены, baseline/DB controls/smoke6 страниц passed. Все три сервера доступны. Следующий12.5.75 — VXLAN: карта API/состояний и безопасная собственная реальная пара с независимой проверкой и cleanup; остаточные WireGuard faults сохранить открытыми. Этап12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-08. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
|
||||
+16
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.73 локально исправил ложный успех audit: captureAndAppendRevision возвращает null при ошибке, теперь импорт проверяет этот результат. Применённая конфигурация при неподтверждённой ревизии →502,state applied с точным сообщением. Unit42/42, HTTP invalid cases, browser applied1/1, backend TypeScript/ESLint passed. Runtime остаётся backend e01454b/frontend479f2ad. Следующий12.5.74 — build/deploy исправления и изолированный реальный PostgreSQL audit failure после native apply на собственной WG паре, HTTP/UI/native проверка и cleanup. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.74 развернул backend8eaf78b, frontend479f2ad сохранён. Изолированный реальный HTTP/PG audit INSERT denial после native apply на обоих CHR дал502,state applied, понятное предупреждение и сохранённую форму; network/native/handshake/Ping3/3 подтверждены. Temporary role/process/own WG objects удалены, baseline/DB controls/smoke6 страниц passed. Все три сервера доступны. Следующий12.5.75 — VXLAN: карта API/состояний и безопасная собственная реальная пара с независимой проверкой и cleanup; остаточные WireGuard faults сохранить открытыми. Этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -34,7 +34,21 @@
|
||||
| 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–73 и ограничения ниже. Runtime backend e01454b/frontend479f2ad. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–74 и ограничения ниже. Runtime backend8eaf78b/frontend479f2ad. |
|
||||
|
||||
## 12.5.74 — настоящий PostgreSQL audit отказ после успешного WireGuard apply (2026-10-09)
|
||||
|
||||
Backend source8eaf78b68631d774bf18ae049d0e11f90fe098d8 production build/deploy passed; frontend479f2ad иего container сохранены. Archive SHA256a685c56eff695beb8d30eaaf49c6ca03d97011e9a306679e2173d7485df7540a; backend src staging совпал с source. Image inspect IDsha256:2f94d4d52f8c2a23806ac7795af3d2346f9dd3114e2fcda4237b3be3c6513f69,OCI revision8eaf78b,version1.0.0-test.8eaf78b. Network-none revision helper: null false,unchanged receipt true. Backend healthy. Private backup pre-8eaf78b.dump2382377bytes,0600,pg_restore --list passed; previous.env/images сохранены на сервере. SSH и RouterOS REST обоих CHR доступны, пароли не менялись.
|
||||
|
||||
Подготовлена собственная WG пара с уникальным name/comment,51879/1420 и198.18.255.241/30↔198.18.255.242/30. Seed handshake/Ping/export private conf только в памяти/explicit Name и обычный DELETE выполнены. Изолированный контейнер из нового backend образа поднял настоящий Fastify HTTP endpoint с production wireguardRoutes на8082 (host127.0.0.1:8020). Scheduler/обычный main backend не запускались в worker. Endpoint ограничен POST import и точным content/serverId собственной fixture.
|
||||
|
||||
В PostgreSQL создана уникальная temporary NOLOGIN/NOSUPERUSER роль с USAGE schema иSELECT; write privileges не выдавались. Только worker pool запросы выполнялись через SET ROLE на выделенном соединении с обязательным RESET ROLE/release; queries делегировались настоящему pg driver, ответ SQL не подменялся. Production main pool/его права не менялись. Native RouterOS apply выполнился, snapshot успешно дошёл до БД, INSERT config_revisions получил настоящий SQLSTATE42501 на обоих устройствах. Counter реальных denied revision writes2; captureAndAppendRevision вернулnull, новый helper не объявил audit success.
|
||||
|
||||
Production frontend наCHR1 при1280px/CHR2 при320px направил POST на реальный изолированный HTTP endpoint через Playwright route.continue URL override; response fulfillment/HTTP fixtures/SQL/RouterOS mocks не использовались. Это отдельный backend process/HTTP port, не fault основного backend. Оба запроса вернули502,state applied; UI показал «Конфигурация применена, но сохранение ревизии не подтверждено», сохранил textarea/server selection, автоматического повторного POST нет. Native observer подтвердил interface/IP/peer после warning. Пара сохранила network parameters/public identity/private scalar и выполнила handshake/Ping3/3 в обе стороны; audit error не откатил рабочую конфигурацию. Keys/configs не сохранялись в отчёты/screenshots/traces/файлы.
|
||||
|
||||
[Native/PG evidence](ux-ui/acceptance/wg-import-audit-native-2026-10-09.json), [реальный HTTP/UI](ux-ui/acceptance/browser-wg-audit-8eaf78b-2026-10-09.json), [deploy/DB controls](ux-ui/acceptance/wg-import-audit-deploy-controls-2026-10-09.json), [smoke6 страниц](ux-ui/acceptance/deploy-browser-8eaf78b-backend-2026-10-09.json). Fixture exit0. Fault HTTP listener закрыт, pool восстановлен, DROP OWNED/DROP ROLE применены только к подтверждённо созданной NOLOGIN роли без owned business objects; temporaryAuditRoles0. Все собственные WG/peer/IP/connected routes удалены, selected WG/peers/IP/routes/IPv4 filter/nat/mangle baseline совпал на обоих CHR. Остались3 основные службы, backend healthy; frontend не перезапускался. Business DB controls servers2/speedHistory9/retentionDays14/migrations9 до/после совпали; штатные seed/cleanup audit revisions намеренно сохранены. Smoke /dashboard,/servers,/uptime?tab=speed,/settings,/filters,/wireguard200,320px fits,0 page/API errors. Публичные JSON проверены на отсутствие keys/config/password values.
|
||||
|
||||
Граница результата — изолированный реальный permission denial при INSERT после настоящего apply и truthful HTTP/UI. Не проверены физический DB disconnect,ошибка после COMMIT/prune/read,потеря процесса/transport/concurrency/multi-instance/RBAC/IPv6/throughput; warning73 остаётся осторожным и не утверждает отсутствие строки БД. Остаточные WireGuard ограничения открыты. Следующий12.5.75 — перейти к VXLAN: сверить route/model/context, создать только собственные реальные интерфейсы на двух CHR, проверить native/API/связность и cleanup с сохранением baseline. Product source после73 не менялся, общая локальная регрессия не повторялась; production build и scoped реальные сценарии выполнены. Локальный коммит без push.
|
||||
|
||||
## 12.5.73 — отсутствие audit receipt не означает полный успех импорта (2026-10-09)
|
||||
|
||||
|
||||
+15
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-09: 12.5.73 локально исправил ложный успех audit: captureAndAppendRevision возвращает null при ошибке, теперь импорт проверяет этот результат. Применённая конфигурация при неподтверждённой ревизии →502,state applied с точным сообщением. Unit42/42, HTTP invalid cases, browser applied1/1, backend TypeScript/ESLint passed. Runtime остаётся backend e01454b/frontend479f2ad. Следующий12.5.74 — build/deploy исправления и изолированный реальный PostgreSQL audit failure после native apply на собственной WG паре, HTTP/UI/native проверка и cleanup. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-09: 12.5.74 развернул backend8eaf78b, frontend479f2ad сохранён. Изолированный реальный HTTP/PG audit INSERT denial после native apply на обоих CHR дал502,state applied, понятное предупреждение и сохранённую форму; network/native/handshake/Ping3/3 подтверждены. Temporary role/process/own WG objects удалены, baseline/DB controls/smoke6 страниц passed. Все три сервера доступны. Следующий12.5.75 — VXLAN: карта API/состояний и безопасная собственная реальная пара с независимой проверкой и cleanup; остаточные WireGuard faults сохранить открытыми. Этап12.5 открыт.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -1786,3 +1786,17 @@ recordWireguard теперь возвращает результат helper. Н
|
||||
Новый wireguard-import-revision.test.ts4/4: created/unchanged receipt, null/undefined, exception и настоящий captureAndAppendRevision с падающим capture callback. Последний воспроизводит именно контракт swallowing→null, DB запрос не выполняется; это не реальный отказ PostgreSQL. Новые tests включены в backend test:wireguard:42/42 (22 preflight+16 apply+4 revision), codec и Fastify4 invalid cases passed. Backend TypeScript/ESLint passed. Browser applied1/1 с подменённым502/точным новым message сохраняет textarea/server/error и не повторяет POST автоматически; это UI boundary, не native/DB интеграция. Diff check passed. Production UI/ReUI primitives не менялись.
|
||||
|
||||
Исправление локальное, runtime backend e01454b/frontend479f2ad не менялся; RouterOS объекты/пароли и DB schema в73 не менялись. Следующий12.5.74 — production build/deploy backend и изолированный реальный audit persistence failure после настоящего apply на собственных WG объектах: подтвердить applied/native/связность, предупреждение HTTP/UI, отсутствие повторной мутации и cleanup/baseline. Нельзя считать73 доказательством сбоев DB/процесса/transport/concurrency/RBAC/IPv6/интеграций; они и прочие внешние ограничения остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.74 — настоящий PostgreSQL audit отказ после успешного WireGuard apply (2026-10-09)
|
||||
|
||||
Backend source8eaf78b68631d774bf18ae049d0e11f90fe098d8 production build/deploy passed; frontend479f2ad иего container сохранены. Archive SHA256a685c56eff695beb8d30eaaf49c6ca03d97011e9a306679e2173d7485df7540a; backend src staging совпал с source. Image inspect IDsha256:2f94d4d52f8c2a23806ac7795af3d2346f9dd3114e2fcda4237b3be3c6513f69,OCI revision8eaf78b,version1.0.0-test.8eaf78b. Network-none revision helper: null false,unchanged receipt true. Backend healthy. Private backup pre-8eaf78b.dump2382377bytes,0600,pg_restore --list passed; previous.env/images сохранены на сервере. SSH и RouterOS REST обоих CHR доступны, пароли не менялись.
|
||||
|
||||
Подготовлена собственная WG пара с уникальным name/comment,51879/1420 и198.18.255.241/30↔198.18.255.242/30. Seed handshake/Ping/export private conf только в памяти/explicit Name и обычный DELETE выполнены. Изолированный контейнер из нового backend образа поднял настоящий Fastify HTTP endpoint с production wireguardRoutes на8082 (host127.0.0.1:8020). Scheduler/обычный main backend не запускались в worker. Endpoint ограничен POST import и точным content/serverId собственной fixture.
|
||||
|
||||
В PostgreSQL создана уникальная temporary NOLOGIN/NOSUPERUSER роль с USAGE schema иSELECT; write privileges не выдавались. Только worker pool запросы выполнялись через SET ROLE на выделенном соединении с обязательным RESET ROLE/release; queries делегировались настоящему pg driver, ответ SQL не подменялся. Production main pool/его права не менялись. Native RouterOS apply выполнился, snapshot успешно дошёл до БД, INSERT config_revisions получил настоящий SQLSTATE42501 на обоих устройствах. Counter реальных denied revision writes2; captureAndAppendRevision вернулnull, новый helper не объявил audit success.
|
||||
|
||||
Production frontend наCHR1 при1280px/CHR2 при320px направил POST на реальный изолированный HTTP endpoint через Playwright route.continue URL override; response fulfillment/HTTP fixtures/SQL/RouterOS mocks не использовались. Это отдельный backend process/HTTP port, не fault основного backend. Оба запроса вернули502,state applied; UI показал «Конфигурация применена, но сохранение ревизии не подтверждено», сохранил textarea/server selection, автоматического повторного POST нет. Native observer подтвердил interface/IP/peer после warning. Пара сохранила network parameters/public identity/private scalar и выполнила handshake/Ping3/3 в обе стороны; audit error не откатил рабочую конфигурацию. Keys/configs не сохранялись в отчёты/screenshots/traces/файлы.
|
||||
|
||||
[Native/PG evidence](ux-ui/acceptance/wg-import-audit-native-2026-10-09.json), [реальный HTTP/UI](ux-ui/acceptance/browser-wg-audit-8eaf78b-2026-10-09.json), [deploy/DB controls](ux-ui/acceptance/wg-import-audit-deploy-controls-2026-10-09.json), [smoke6 страниц](ux-ui/acceptance/deploy-browser-8eaf78b-backend-2026-10-09.json). Fixture exit0. Fault HTTP listener закрыт, pool восстановлен, DROP OWNED/DROP ROLE применены только к подтверждённо созданной NOLOGIN роли без owned business objects; temporaryAuditRoles0. Все собственные WG/peer/IP/connected routes удалены, selected WG/peers/IP/routes/IPv4 filter/nat/mangle baseline совпал на обоих CHR. Остались3 основные службы, backend healthy; frontend не перезапускался. Business DB controls servers2/speedHistory9/retentionDays14/migrations9 до/после совпали; штатные seed/cleanup audit revisions намеренно сохранены. Smoke /dashboard,/servers,/uptime?tab=speed,/settings,/filters,/wireguard200,320px fits,0 page/API errors. Публичные JSON проверены на отсутствие keys/config/password values.
|
||||
|
||||
Граница результата — изолированный реальный permission denial при INSERT после настоящего apply и truthful HTTP/UI. Не проверены физический DB disconnect,ошибка после COMMIT/prune/read,потеря процесса/transport/concurrency/multi-instance/RBAC/IPv6/throughput; warning73 остаётся осторожным и не утверждает отсутствие строки БД. Остаточные WireGuard ограничения открыты. Следующий12.5.75 — перейти к VXLAN: сверить route/model/context, создать только собственные реальные интерфейсы на двух CHR, проверить native/API/связность и cleanup с сохранением baseline. Product source после73 не менялся, общая локальная регрессия не повторялась; production build и scoped реальные сценарии выполнены. Локальный коммит без push.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-09
|
||||
|
||||
Сервер161.104.46.222 предоставлен для временного тестирования. Backend sourcee01454b720f92ae8adc1636f7a2092132232dc87/version1.0.0-test.e01454b обновлён в12.5.72 иhealthy; frontend479f2ad/version1.0.0-test.479f2ad сохранён. SSH и оба CHR доступны с прежними доступами. RSC68/conf70/поздний native отказ с компенсацией и retry72 приняты в описанных границах, baseline восстановлен.
|
||||
Сервер161.104.46.222 предоставлен для временного тестирования. Backend source8eaf78b68631d774bf18ae049d0e11f90fe098d8/version1.0.0-test.8eaf78b healthy,frontend479f2ad/version1.0.0-test.479f2ad сохранён. SSH/оба CHR доступны с прежними доступами. Real rollback/retry72 и изолированный PG audit отказ после native apply74 приняты в описанных границах; роли/fixture/process удалены, baseline восстановлен.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -14,7 +14,7 @@
|
||||
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
|
||||
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
|
||||
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
|
||||
| Образы приложения | mmapp-test/backend:ux-e01454b и mmapp-test/frontend:ux-479f2ad; запущены |
|
||||
| Образы приложения | mmapp-test/backend:ux-8eaf78b и mmapp-test/frontend:ux-479f2ad; запущены |
|
||||
|
||||
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
|
||||
|
||||
@@ -629,3 +629,17 @@ recordWireguard теперь возвращает результат helper. Н
|
||||
Новый wireguard-import-revision.test.ts4/4: created/unchanged receipt, null/undefined, exception и настоящий captureAndAppendRevision с падающим capture callback. Последний воспроизводит именно контракт swallowing→null, DB запрос не выполняется; это не реальный отказ PostgreSQL. Новые tests включены в backend test:wireguard:42/42 (22 preflight+16 apply+4 revision), codec и Fastify4 invalid cases passed. Backend TypeScript/ESLint passed. Browser applied1/1 с подменённым502/точным новым message сохраняет textarea/server/error и не повторяет POST автоматически; это UI boundary, не native/DB интеграция. Diff check passed. Production UI/ReUI primitives не менялись.
|
||||
|
||||
Исправление локальное, runtime backend e01454b/frontend479f2ad не менялся; RouterOS объекты/пароли и DB schema в73 не менялись. Следующий12.5.74 — production build/deploy backend и изолированный реальный audit persistence failure после настоящего apply на собственных WG объектах: подтвердить applied/native/связность, предупреждение HTTP/UI, отсутствие повторной мутации и cleanup/baseline. Нельзя считать73 доказательством сбоев DB/процесса/transport/concurrency/RBAC/IPv6/интеграций; они и прочие внешние ограничения остаются открытыми. Локальный коммит без push.
|
||||
|
||||
## 12.5.74 — настоящий PostgreSQL audit отказ после успешного WireGuard apply (2026-10-09)
|
||||
|
||||
Backend source8eaf78b68631d774bf18ae049d0e11f90fe098d8 production build/deploy passed; frontend479f2ad иего container сохранены. Archive SHA256a685c56eff695beb8d30eaaf49c6ca03d97011e9a306679e2173d7485df7540a; backend src staging совпал с source. Image inspect IDsha256:2f94d4d52f8c2a23806ac7795af3d2346f9dd3114e2fcda4237b3be3c6513f69,OCI revision8eaf78b,version1.0.0-test.8eaf78b. Network-none revision helper: null false,unchanged receipt true. Backend healthy. Private backup pre-8eaf78b.dump2382377bytes,0600,pg_restore --list passed; previous.env/images сохранены на сервере. SSH и RouterOS REST обоих CHR доступны, пароли не менялись.
|
||||
|
||||
Подготовлена собственная WG пара с уникальным name/comment,51879/1420 и198.18.255.241/30↔198.18.255.242/30. Seed handshake/Ping/export private conf только в памяти/explicit Name и обычный DELETE выполнены. Изолированный контейнер из нового backend образа поднял настоящий Fastify HTTP endpoint с production wireguardRoutes на8082 (host127.0.0.1:8020). Scheduler/обычный main backend не запускались в worker. Endpoint ограничен POST import и точным content/serverId собственной fixture.
|
||||
|
||||
В PostgreSQL создана уникальная temporary NOLOGIN/NOSUPERUSER роль с USAGE schema иSELECT; write privileges не выдавались. Только worker pool запросы выполнялись через SET ROLE на выделенном соединении с обязательным RESET ROLE/release; queries делегировались настоящему pg driver, ответ SQL не подменялся. Production main pool/его права не менялись. Native RouterOS apply выполнился, snapshot успешно дошёл до БД, INSERT config_revisions получил настоящий SQLSTATE42501 на обоих устройствах. Counter реальных denied revision writes2; captureAndAppendRevision вернулnull, новый helper не объявил audit success.
|
||||
|
||||
Production frontend наCHR1 при1280px/CHR2 при320px направил POST на реальный изолированный HTTP endpoint через Playwright route.continue URL override; response fulfillment/HTTP fixtures/SQL/RouterOS mocks не использовались. Это отдельный backend process/HTTP port, не fault основного backend. Оба запроса вернули502,state applied; UI показал «Конфигурация применена, но сохранение ревизии не подтверждено», сохранил textarea/server selection, автоматического повторного POST нет. Native observer подтвердил interface/IP/peer после warning. Пара сохранила network parameters/public identity/private scalar и выполнила handshake/Ping3/3 в обе стороны; audit error не откатил рабочую конфигурацию. Keys/configs не сохранялись в отчёты/screenshots/traces/файлы.
|
||||
|
||||
[Native/PG evidence](ux-ui/acceptance/wg-import-audit-native-2026-10-09.json), [реальный HTTP/UI](ux-ui/acceptance/browser-wg-audit-8eaf78b-2026-10-09.json), [deploy/DB controls](ux-ui/acceptance/wg-import-audit-deploy-controls-2026-10-09.json), [smoke6 страниц](ux-ui/acceptance/deploy-browser-8eaf78b-backend-2026-10-09.json). Fixture exit0. Fault HTTP listener закрыт, pool восстановлен, DROP OWNED/DROP ROLE применены только к подтверждённо созданной NOLOGIN роли без owned business objects; temporaryAuditRoles0. Все собственные WG/peer/IP/connected routes удалены, selected WG/peers/IP/routes/IPv4 filter/nat/mangle baseline совпал на обоих CHR. Остались3 основные службы, backend healthy; frontend не перезапускался. Business DB controls servers2/speedHistory9/retentionDays14/migrations9 до/после совпали; штатные seed/cleanup audit revisions намеренно сохранены. Smoke /dashboard,/servers,/uptime?tab=speed,/settings,/filters,/wireguard200,320px fits,0 page/API errors. Публичные JSON проверены на отсутствие keys/config/password values.
|
||||
|
||||
Граница результата — изолированный реальный permission denial при INSERT после настоящего apply и truthful HTTP/UI. Не проверены физический DB disconnect,ошибка после COMMIT/prune/read,потеря процесса/transport/concurrency/multi-instance/RBAC/IPv6/throughput; warning73 остаётся осторожным и не утверждает отсутствие строки БД. Остаточные WireGuard ограничения открыты. Следующий12.5.75 — перейти к VXLAN: сверить route/model/context, создать только собственные реальные интерфейсы на двух CHR, проверить native/API/связность и cleanup с сохранением baseline. Product source после73 не менялся, общая локальная регрессия не повторялась; production build и scoped реальные сценарии выполнены. Локальный коммит без push.
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "8eaf78b",
|
||||
"frontendSource": "479f2ad",
|
||||
"name": "mm-acceptance-wg-1791512986372",
|
||||
"cases": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"width": 1280,
|
||||
"status": 502,
|
||||
"state": "applied",
|
||||
"warningVisible": true,
|
||||
"formAndServerRetained": true,
|
||||
"nativeObjectsRemainApplied": true,
|
||||
"noAutomaticRetry": true
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"width": 320,
|
||||
"status": 502,
|
||||
"state": "applied",
|
||||
"warningVisible": true,
|
||||
"formAndServerRetained": true,
|
||||
"nativeObjectsRemainApplied": true,
|
||||
"noAutomaticRetry": true
|
||||
}
|
||||
],
|
||||
"requests": [
|
||||
{
|
||||
"status": 502,
|
||||
"port": "8020"
|
||||
},
|
||||
{
|
||||
"status": 502,
|
||||
"port": "8020"
|
||||
}
|
||||
],
|
||||
"native": {
|
||||
"ok": true,
|
||||
"handshakeConfirmed": true,
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"received": 3
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"received": 3
|
||||
}
|
||||
],
|
||||
"roundtrip": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"format": "conf",
|
||||
"explicitNameAdded": true,
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceCommentAbsent": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerCommentAbsent": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": true,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"format": "conf",
|
||||
"explicitNameAdded": true,
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceCommentAbsent": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerCommentAbsent": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": false,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"pageErrors": [],
|
||||
"transport": "Playwright URL continuation to real isolated HTTP endpoint; no response fulfillment or mocked SQL/RouterOS",
|
||||
"limits": [
|
||||
"Scoped audit INSERT permission fault; not network disconnect or process loss",
|
||||
"Keys/configs held only in memory; no screenshots/traces"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "8eaf78b",
|
||||
"frontendSource": "479f2ad",
|
||||
"httpMocks": false,
|
||||
"pages": [
|
||||
{
|
||||
"path": "/dashboard",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/servers",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/uptime?tab=speed",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/settings",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/filters",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
},
|
||||
{
|
||||
"path": "/wireguard",
|
||||
"status": 200,
|
||||
"mobileFits": true
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"badApiResponses": []
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "8eaf78b68631d774bf18ae049d0e11f90fe098d8",
|
||||
"frontendSource": "479f2ad",
|
||||
"archiveSha256": "a685c56eff695beb8d30eaaf49c6ca03d97011e9a306679e2173d7485df7540a",
|
||||
"backendImage": "sha256:2f94d4d52f8c2a23806ac7795af3d2346f9dd3114e2fcda4237b3be3c6513f69",
|
||||
"backendHealthy": true,
|
||||
"frontendContainerUnchanged": true,
|
||||
"networkNoneRevisionAssertion": true,
|
||||
"backup": {
|
||||
"bytes": 2382377,
|
||||
"mode": "0600",
|
||||
"pgRestoreListPassed": true,
|
||||
"retainedOnTestServerOnly": true
|
||||
},
|
||||
"before": {
|
||||
"servers": 2,
|
||||
"speedHistory": 9,
|
||||
"retentionDays": 14,
|
||||
"migrations": 9
|
||||
},
|
||||
"after": {
|
||||
"servers": 2,
|
||||
"speedHistory": 9,
|
||||
"retentionDays": 14,
|
||||
"migrations": 9,
|
||||
"temporaryAuditRoles": 0
|
||||
},
|
||||
"mainServices": 3,
|
||||
"temporaryFixtureContainersRemaining": 0,
|
||||
"auditRevisionsIntentionallyRetained": true,
|
||||
"mainBackendPrivilegesUnchanged": true
|
||||
}
|
||||
@@ -0,0 +1,426 @@
|
||||
{
|
||||
"date": "2026-10-09",
|
||||
"backendSource": "8eaf78b",
|
||||
"frontendSource": "479f2ad",
|
||||
"name": "mm-acceptance-wg-1791512986372",
|
||||
"subnet": "198.18.255.240/30",
|
||||
"listenPort": 51879,
|
||||
"realRouterOs": true,
|
||||
"changes": [
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/interfaces",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/interfaces",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/peers",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/peers",
|
||||
"status": 201
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/wireguard/interfaces/1/*1F",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "PATCH",
|
||||
"path": "/api/wireguard/interfaces/1/*1F",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "GET",
|
||||
"path": "/api/wireguard",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/export",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/import",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/export",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "POST",
|
||||
"path": "/api/wireguard/import",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/1/*1F",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/2/*1A",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/peers/1/*1E",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/1/*20",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/peers/2/*1A",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"method": "DELETE",
|
||||
"path": "/api/wireguard/interfaces/2/*1B",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"pings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"target": "198.18.255.242",
|
||||
"interface": "mm-acceptance-wg-1791512986372",
|
||||
"received": 3,
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms602us",
|
||||
"avg-rtt": "54ms602us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms556us",
|
||||
"avg-rtt": "54ms579us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms589us",
|
||||
"avg-rtt": "54ms582us"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"target": "198.18.255.241",
|
||||
"interface": "mm-acceptance-wg-1791512986372",
|
||||
"received": 3,
|
||||
"rows": [
|
||||
{
|
||||
"sent": "1",
|
||||
"received": "1",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms765us",
|
||||
"avg-rtt": "54ms765us"
|
||||
},
|
||||
{
|
||||
"sent": "2",
|
||||
"received": "2",
|
||||
"packet-loss": "0",
|
||||
"time": "54ms718us",
|
||||
"avg-rtt": "54ms741us"
|
||||
},
|
||||
{
|
||||
"sent": "3",
|
||||
"received": "3",
|
||||
"packet-loss": "0",
|
||||
"time": "55ms13us",
|
||||
"avg-rtt": "54ms832us"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"/interface/wireguard": true,
|
||||
"/interface/wireguard/peers": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"/interface/wireguard": true,
|
||||
"/interface/wireguard/peers": true,
|
||||
"/ip/address": true,
|
||||
"/ip/route": true,
|
||||
"/ip/firewall/filter": true,
|
||||
"/ip/firewall/nat": true,
|
||||
"/ip/firewall/mangle": true
|
||||
}
|
||||
],
|
||||
"rejections": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"status": 400,
|
||||
"dryRun": false,
|
||||
"nativeUnchanged": true
|
||||
},
|
||||
{
|
||||
"serverId": 1,
|
||||
"status": 400,
|
||||
"dryRun": true,
|
||||
"nativeUnchanged": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"status": 400,
|
||||
"dryRun": false,
|
||||
"nativeUnchanged": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"status": 400,
|
||||
"dryRun": true,
|
||||
"nativeUnchanged": true
|
||||
}
|
||||
],
|
||||
"nativeKeyGenerationConfirmed": true,
|
||||
"connectedState": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*1F",
|
||||
"appId": "1:*1F",
|
||||
"name": "mm-acceptance-wg-1791512986372",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791512986372"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.241/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*1D",
|
||||
"name": "mm-acceptance-wg-1791512986372-peer",
|
||||
"allowedAddresses": "198.18.255.242/32",
|
||||
"endpoint": "104.165.244.7:51879",
|
||||
"handshake": "1s",
|
||||
"rx": "180",
|
||||
"tx": "272",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791512986372"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*1A",
|
||||
"appId": "2:*1A",
|
||||
"name": "mm-acceptance-wg-1791512986372",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791512986372"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.242/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*19",
|
||||
"name": "mm-acceptance-wg-1791512986372-peer",
|
||||
"allowedAddresses": "198.18.255.241/32",
|
||||
"endpoint": "194.226.121.150:51879",
|
||||
"handshake": "1s",
|
||||
"rx": "124",
|
||||
"tx": "180",
|
||||
"disabled": "false",
|
||||
"userComment": "Temporary UX acceptance mm-acceptance-wg-1791512986372"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"handshakeConfirmed": true,
|
||||
"bidirectionalPingPassed": true,
|
||||
"catalogMatchesNative": true,
|
||||
"roundtrip": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"format": "conf",
|
||||
"explicitNameAdded": true,
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceCommentAbsent": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerCommentAbsent": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": true,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"format": "conf",
|
||||
"explicitNameAdded": true,
|
||||
"privateKeyPreservedInMemory": true,
|
||||
"dryRunStatus": 200,
|
||||
"dryRunNativeUnchanged": true,
|
||||
"checks": {
|
||||
"interfacePresent": true,
|
||||
"interfaceName": true,
|
||||
"interfaceCommentAbsent": true,
|
||||
"interfacePrivateScalarEquivalent": true,
|
||||
"interfacePublicIdentity": true,
|
||||
"listenPort": true,
|
||||
"mtu": true,
|
||||
"onePeer": true,
|
||||
"peerIdentity": true,
|
||||
"allowedAddresses": true,
|
||||
"configuredEndpointAddress": true,
|
||||
"configuredEndpointPort": true,
|
||||
"keepalive": true,
|
||||
"peerCommentAbsent": true,
|
||||
"address": true
|
||||
},
|
||||
"nativeParametersMatch": true,
|
||||
"interfacePublicIdentityUnchanged": true,
|
||||
"privateScalarEquivalent": true,
|
||||
"privateEncodingUnchanged": false,
|
||||
"linkedAddressAndPeerPresent": true
|
||||
}
|
||||
],
|
||||
"collisions": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"status": 409,
|
||||
"nativeUnchanged": true
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"status": 409,
|
||||
"nativeUnchanged": true
|
||||
}
|
||||
],
|
||||
"auditFault": {
|
||||
"isolatedProcess": true,
|
||||
"temporaryNoLoginRole": true,
|
||||
"selectAllowed": true,
|
||||
"revisionInsertDenied": true,
|
||||
"mainBackendPrivilegesUnchanged": true
|
||||
},
|
||||
"deniedRevisionWrites": 2,
|
||||
"postApplyAuditState": "applied",
|
||||
"importedHandshakeConfirmed": true,
|
||||
"importedPings": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"received": 3
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"received": 3
|
||||
}
|
||||
],
|
||||
"temporaryRoleRemoved": true,
|
||||
"afterBrowser": [
|
||||
{
|
||||
"serverId": 1,
|
||||
"interface": {
|
||||
"rosId": "*20",
|
||||
"appId": "1:*20",
|
||||
"name": "mm-acceptance-wg-1791512986372",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.241/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*1E",
|
||||
"name": "peer30",
|
||||
"allowedAddresses": "198.18.255.242/32",
|
||||
"endpoint": "104.165.244.7:51879",
|
||||
"handshake": "2s",
|
||||
"rx": "756",
|
||||
"tx": "848",
|
||||
"disabled": "false"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"serverId": 2,
|
||||
"interface": {
|
||||
"rosId": "*1B",
|
||||
"appId": "2:*1B",
|
||||
"name": "mm-acceptance-wg-1791512986372",
|
||||
"listenPort": "51879",
|
||||
"mtu": "1420",
|
||||
"running": "true",
|
||||
"disabled": "false"
|
||||
},
|
||||
"addresses": [
|
||||
"198.18.255.242/30"
|
||||
],
|
||||
"peers": [
|
||||
{
|
||||
"rosId": "*1A",
|
||||
"name": "peer26",
|
||||
"allowedAddresses": "198.18.255.241/32",
|
||||
"endpoint": "194.226.121.150:51879",
|
||||
"handshake": "2s",
|
||||
"rx": "700",
|
||||
"tx": "756",
|
||||
"disabled": "false"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"limits": [
|
||||
"Only own WireGuard interface/peer/IP and connected route changed; no default routes/firewall changes",
|
||||
"Real isolated HTTP endpoint/PG SET ROLE permission denial after native apply; main backend unchanged; config/keys only in memory",
|
||||
"Private/public/preshared keys omitted from report; native generation and peer association checked in memory",
|
||||
"Handshake and short ICMP connectivity, not throughput, RBAC or interrupted mutation",
|
||||
"WireGuard audit revisions intentionally retained"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user