From 890a5cba09d2cfd09413d2189a1b14eb6b8b4723 Mon Sep 17 00:00:00 2001 From: Denozordec Date: Sat, 10 Oct 2026 01:18:34 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=20=D1=81=D0=B2=D0=B5=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D0=B8=D1=81=D1=85=D0=BE=D0=B4=D0=BD=D0=B8=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B8=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7=20=D1=82=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D0=BE=D0=B2=D0=BE=D0=B3=D0=BE=20=D1=81=D1=82=D0=B5?= =?UTF-8?q?=D0=BD=D0=B4=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-external-acceptance.md | 12 +- docs/ux-ui-plan.md | 6 +- docs/ux-ui-progress.md | 12 +- docs/ux-ui-remaining-acceptance.md | 4 +- docs/ux-ui-stage-12.md | 8 + docs/ux-ui-test-server.md | 8 + .../deployment-source-audit-2026-10-10.json | 1011 +++++++++++++++++ 7 files changed, 1052 insertions(+), 9 deletions(-) create mode 100644 docs/ux-ui/acceptance/deployment-source-audit-2026-10-10.json diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index f653ad23..99099ba6 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Актуальное продолжение 2026-10-10: завершены12.5.93 BGP/BFD alternate-path и12.5.94 сводка оставшейся внешней приёмки. Актуальная матрица — docs/ux-ui-remaining-acceptance.md. Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.95 — сверка полного application source/build configuration с Docker contexts и устранение deployment drift, затем достижимые speed/финальные проверки. Этап12.5 открыт; внешние ограничения не сняты. [Матрица](ux-ui-remaining-acceptance.md), [паспорт](ux-ui-test-server.md), [история](ux-ui-stage-12.md). +Актуальное продолжение 2026-10-10: выполнены12.5.93–95. BGP/BFD alternate-path принят; актуальная матрица docs/ux-ui-remaining-acceptance.md. Проверка902 tracked Docker inputs и980 compiled backend/contracts файлов не выявила production source drift (нормализация CRLF/LF и context exceptions описаны). Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.96 — speed timezone/контракт времени и безопасный ограниченный transport disconnect. Этап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). @@ -700,7 +700,7 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-09: 12.5.77 завершил укрупнённый основной блок IPsec: достоверное чтение, запрет опроса выключенных устройств, совместимый RouterOS7 мастер, раздельные ID клиентов, безопаснее удаление, URL устройства/вкладки, Docker обеих частей и реальная приёмка. Local30/30 + context6/6 + backend67, live browser4/4, PSK и сертификатный защищённый GRE/Ping3/3 на двух CHR; cleanup/DB controls passed. Runtime backend/frontend ux-ipsec77, version1.0.0-test.ipsec77. Следующий12.5.78 — остаточная профильная приёмка IPsec: сопоставление active-peer/online, выдача mode-config, поздние ошибки операций и история восстановления; затем маршрутизация. Этап12.5 открыт. +Актуальное продолжение 2026-10-10: выполнены12.5.93–95. BGP/BFD alternate-path принят; актуальная матрица docs/ux-ui-remaining-acceptance.md. Проверка902 tracked Docker inputs и980 compiled backend/contracts файлов не выявила production source drift (нормализация CRLF/LF и context exceptions описаны). Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.96 — speed timezone/контракт времени и безопасный ограниченный transport disconnect. Этап12.5 открыт. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). @@ -897,3 +897,11 @@ Production image не содержит dev-only jose: первый fixture impor Сведены доказательства PG/speed/outbox/VPN/routing/diagnostics после93 в [матрицу оставшейся приёмки](ux-ui-remaining-acceptance.md). Разделены достигнутый результат, непроверенные конфигурации и необходимые внешние зависимости. Указаны известные потери OSPF90, первая потеря Ping BGP93, sustained BFD-only86, AUTH_REQUIRED=false и границы isolated JWT. Принятые тесты не повторялись, native writes/сообщений/build0. Текущие верхние указатели плана/протокола и таблица runtime паспорта исправлены: они ранее ещё ссылались на IPsec77/routing83. Исторические датированные записи сохранены. Следующий95 — полный source/build-context drift audit до новой общей регрессии; затем timezone/ограниченный disconnect speed96. Telegram/Portal/OS/WAN/multi-instance остаются отдельными внешними условиями. Локальные ссылки новой матрицы и датированные заголовки проверены; один локальный коммит без push. + +## 12.5.95 — полнота Docker contexts и compiled backend (2026-10-10) + +[Отчёт сверки](ux-ui/acceptance/deployment-source-audit-2026-10-10.json), local HEAD9d6cd00. Проверены902 unique tracked application/build inputs с учётом Docker COPY. Frontend515 совпавших файлов, backend405; common contracts/lockfile проверены в обоих contexts. Производственные TS/TSX/JS/CSS/public/config/migrations не отстают от текущих файлов. Исключения явно разобраны: frontend package workspaces безbackend; backend stripped root dependencies/scripts; отсутствующий .dockerignore в очищенном frontend context; recursive-routes.test.ts без позднего as const (тест исключён backend tsconfig). Эти исключения не требуют нового deployment. + +Локальный contracts/backend production build passed. Дополнительно SHA980 emitted backend/contracts files сверены с реальным запущенным контейнером: missing0; после явной CRLF→LF нормализации different0. При raw byte сравнении10 JS файлов отличались переносами внутри multiline strings; байтовая идентичность не заявлена. Image IDs подтверждены docker inspect: backend97c1cff01efd…/frontendb4bade515234…, labels diagnostics89/ospf91 — названия блока, не Git SHA. + +Для frontend подтверждён сохранённый build context/lockfile/config и текущий image ID; compiled frontend не пересобирался и не заявлен independently reproducible. Ранее принятые build/live proofs91 остаются основанием его поведения. Secrets/env не копировались, native writes/fixture/сообщений/deploy0. Повторный frontend build и широкая регрессия при отсутствии source drift не нужны. Следующий96 — remaining speed timezone/контракт времени, затем ограниченный transport disconnect при возможности безопасного окончания native test. Локальный коммит без push; этап12.5 открыт. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 4fca89f8..fe30adfc 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-10: завершены12.5.93 BGP/BFD alternate-path и12.5.94 сводка оставшейся внешней приёмки. Актуальная матрица — docs/ux-ui-remaining-acceptance.md. Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.95 — сверка полного application source/build configuration с Docker contexts и устранение deployment drift, затем достижимые speed/финальные проверки. Этап12.5 открыт; внешние ограничения не сняты. +Актуальное продолжение 2026-10-10: выполнены12.5.93–95. BGP/BFD alternate-path принят; актуальная матрица docs/ux-ui-remaining-acceptance.md. Проверка902 tracked Docker inputs и980 compiled backend/contracts файлов не выявила production source drift (нормализация CRLF/LF и context exceptions описаны). Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.96 — speed timezone/контракт времени и безопасный ограниченный transport disconnect. Этап12.5 открыт. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-10. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-10 -Актуальное продолжение 2026-10-10: завершены12.5.93 BGP/BFD alternate-path и12.5.94 сводка оставшейся внешней приёмки. Актуальная матрица — docs/ux-ui-remaining-acceptance.md. Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.95 — сверка полного application source/build configuration с Docker contexts и устранение deployment drift, затем достижимые speed/финальные проверки. Этап12.5 открыт; внешние ограничения не сняты. +Актуальное продолжение 2026-10-10: выполнены12.5.93–95. BGP/BFD alternate-path принят; актуальная матрица docs/ux-ui-remaining-acceptance.md. Проверка902 tracked Docker inputs и980 compiled backend/contracts файлов не выявила production source drift (нормализация CRLF/LF и context exceptions описаны). Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.96 — speed timezone/контракт времени и безопасный ограниченный transport disconnect. Этап12.5 открыт. Этапы0–11 завершены в локальных границах журнала. История выполненных внешних блоков и доказательства сохранены в [журнале](ux-ui-stage-12.md) и [протоколе](ux-ui-external-acceptance.md). Реальная Telegram доставка, Portal SSO, multi-instance и оставшиеся профильные сетевые ограничения открыты. @@ -371,6 +371,6 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-09: 12.5.77 завершил укрупнённый основной блок IPsec: достоверное чтение, запрет опроса выключенных устройств, совместимый RouterOS7 мастер, раздельные ID клиентов, безопаснее удаление, URL устройства/вкладки, Docker обеих частей и реальная приёмка. Local30/30 + context6/6 + backend67, live browser4/4, PSK и сертификатный защищённый GRE/Ping3/3 на двух CHR; cleanup/DB controls passed. Runtime backend/frontend ux-ipsec77, version1.0.0-test.ipsec77. Следующий12.5.78 — остаточная профильная приёмка IPsec: сопоставление active-peer/online, выдача mode-config, поздние ошибки операций и история восстановления; затем маршрутизация. Этап12.5 открыт. +Актуальное продолжение 2026-10-10: выполнены12.5.93–95. BGP/BFD alternate-path принят; актуальная матрица docs/ux-ui-remaining-acceptance.md. Проверка902 tracked Docker inputs и980 compiled backend/contracts файлов не выявила production source drift (нормализация CRLF/LF и context exceptions описаны). Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.96 — speed timezone/контракт времени и безопасный ограниченный transport disconnect. Этап12.5 открыт. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 235cf814..c7a3c375 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-10: завершены12.5.93 BGP/BFD alternate-path и12.5.94 сводка оставшейся внешней приёмки. Актуальная матрица — docs/ux-ui-remaining-acceptance.md. Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.95 — сверка полного application source/build configuration с Docker contexts и устранение deployment drift, затем достижимые speed/финальные проверки. Этап12.5 открыт; внешние ограничения не сняты. +Актуальное продолжение 2026-10-10: выполнены12.5.93–95. BGP/BFD alternate-path принят; актуальная матрица docs/ux-ui-remaining-acceptance.md. Проверка902 tracked Docker inputs и980 compiled backend/contracts файлов не выявила production source drift (нормализация CRLF/LF и context exceptions описаны). Runtime backend ux-diagnostics89/frontend ux-ospf91. Следующий12.5.96 — speed timezone/контракт времени и безопасный ограниченный transport disconnect. Этап12.5 открыт. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -36,7 +36,15 @@ | 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–94 и ограничения ниже. Runtime backend ux-diagnostics89/frontend ux-ospf91. | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–95 и ограничения ниже. Runtime backend ux-diagnostics89/frontend ux-ospf91. | + +## 12.5.95 — полнота Docker contexts и compiled backend (2026-10-10) + +[Отчёт сверки](ux-ui/acceptance/deployment-source-audit-2026-10-10.json), local HEAD9d6cd00. Проверены902 unique tracked application/build inputs с учётом Docker COPY. Frontend515 совпавших файлов, backend405; common contracts/lockfile проверены в обоих contexts. Производственные TS/TSX/JS/CSS/public/config/migrations не отстают от текущих файлов. Исключения явно разобраны: frontend package workspaces безbackend; backend stripped root dependencies/scripts; отсутствующий .dockerignore в очищенном frontend context; recursive-routes.test.ts без позднего as const (тест исключён backend tsconfig). Эти исключения не требуют нового deployment. + +Локальный contracts/backend production build passed. Дополнительно SHA980 emitted backend/contracts files сверены с реальным запущенным контейнером: missing0; после явной CRLF→LF нормализации different0. При raw byte сравнении10 JS файлов отличались переносами внутри multiline strings; байтовая идентичность не заявлена. Image IDs подтверждены docker inspect: backend97c1cff01efd…/frontendb4bade515234…, labels diagnostics89/ospf91 — названия блока, не Git SHA. + +Для frontend подтверждён сохранённый build context/lockfile/config и текущий image ID; compiled frontend не пересобирался и не заявлен independently reproducible. Ранее принятые build/live proofs91 остаются основанием его поведения. Secrets/env не копировались, native writes/fixture/сообщений/deploy0. Повторный frontend build и широкая регрессия при отсутствии source drift не нужны. Следующий96 — remaining speed timezone/контракт времени, затем ограниченный transport disconnect при возможности безопасного окончания native test. Локальный коммит без push; этап12.5 открыт. ## 12.5.94 — актуальная матрица и согласование документов (2026-10-10) diff --git a/docs/ux-ui-remaining-acceptance.md b/docs/ux-ui-remaining-acceptance.md index 98fcbdc8..cf2ce623 100644 --- a/docs/ux-ui-remaining-acceptance.md +++ b/docs/ux-ui-remaining-acceptance.md @@ -1,6 +1,6 @@ # Оставшаяся внешняя приёмка — 2026-10-10 -Это актуальная матрица после 12.5.93. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. +Это актуальная матрица после 12.5.95. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-diagnostics89`, frontend `ux-ospf91`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты последнего сценария удалены, исходные11 коллекций×2 восстановлены; пароли не менялись. @@ -24,7 +24,7 @@ ## Следующая последовательность -1. **12.5.95 — полнота deployment:** сверить весь tracked application source/build configuration с накопленными Docker contexts. Зафиксировать фактическую версию и устранить drift до новой широкой регрессии. Новые туннели не нужны. +1. **12.5.95 завершён:** [source/context/compiled audit](ux-ui/acceptance/deployment-source-audit-2026-10-10.json), production source drift не выявлен; нормализация и исключения явно указаны. 2. **12.5.96 — оставшиеся достижимые проверки speed:** время истории/часовые пояса и короткий ограниченный disconnect на выделенной probe; исходные данные и процессы должны быть восстановлены. Сначала проверить контракт, не повторять принятые направления/нагрузочные тесты. 3. **Заключительный профильный контроль:** после последнего исправления собрать только затронутую часть, проверить её live и обновить матрицу. Общую регрессию выполнить один раз на согласованном runtime. 4. **Внешние зависимости:** Telegram/Portal/client OS/multi-WAN/scale проходят отдельную приёмку при наличии нужных аккаунтов, устройств и разрешений. Лабораторный результат двух CHR не закрывает их автоматически. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 3835bfd6..d3436031 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -2206,3 +2206,11 @@ Production image не содержит dev-only jose: первый fixture impor Сведены доказательства PG/speed/outbox/VPN/routing/diagnostics после93 в [матрицу оставшейся приёмки](ux-ui-remaining-acceptance.md). Разделены достигнутый результат, непроверенные конфигурации и необходимые внешние зависимости. Указаны известные потери OSPF90, первая потеря Ping BGP93, sustained BFD-only86, AUTH_REQUIRED=false и границы isolated JWT. Принятые тесты не повторялись, native writes/сообщений/build0. Текущие верхние указатели плана/протокола и таблица runtime паспорта исправлены: они ранее ещё ссылались на IPsec77/routing83. Исторические датированные записи сохранены. Следующий95 — полный source/build-context drift audit до новой общей регрессии; затем timezone/ограниченный disconnect speed96. Telegram/Portal/OS/WAN/multi-instance остаются отдельными внешними условиями. Локальные ссылки новой матрицы и датированные заголовки проверены; один локальный коммит без push. + +## 12.5.95 — полнота Docker contexts и compiled backend (2026-10-10) + +[Отчёт сверки](ux-ui/acceptance/deployment-source-audit-2026-10-10.json), local HEAD9d6cd00. Проверены902 unique tracked application/build inputs с учётом Docker COPY. Frontend515 совпавших файлов, backend405; common contracts/lockfile проверены в обоих contexts. Производственные TS/TSX/JS/CSS/public/config/migrations не отстают от текущих файлов. Исключения явно разобраны: frontend package workspaces безbackend; backend stripped root dependencies/scripts; отсутствующий .dockerignore в очищенном frontend context; recursive-routes.test.ts без позднего as const (тест исключён backend tsconfig). Эти исключения не требуют нового deployment. + +Локальный contracts/backend production build passed. Дополнительно SHA980 emitted backend/contracts files сверены с реальным запущенным контейнером: missing0; после явной CRLF→LF нормализации different0. При raw byte сравнении10 JS файлов отличались переносами внутри multiline strings; байтовая идентичность не заявлена. Image IDs подтверждены docker inspect: backend97c1cff01efd…/frontendb4bade515234…, labels diagnostics89/ospf91 — названия блока, не Git SHA. + +Для frontend подтверждён сохранённый build context/lockfile/config и текущий image ID; compiled frontend не пересобирался и не заявлен independently reproducible. Ранее принятые build/live proofs91 остаются основанием его поведения. Secrets/env не копировались, native writes/fixture/сообщений/deploy0. Повторный frontend build и широкая регрессия при отсутствии source drift не нужны. Следующий96 — remaining speed timezone/контракт времени, затем ограниченный transport disconnect при возможности безопасного окончания native test. Локальный коммит без push; этап12.5 открыт. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 46ab57c0..6a1a5d93 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -719,3 +719,11 @@ flowchart LR 12.5.89 (2026-10-09): терминал/диагностика/RBAC и8 live UI checks passed, baseline7 коллекций×2 сохранён. Production auth не менялся. 12.5.91 (2026-10-09): frontend ospf91; целый CIDR подтверждён4 live cases, baseline7 коллекций×2 сохранён. Backend diagnostics89 неизменён. + +## 12.5.95 — полнота Docker contexts и compiled backend (2026-10-10) + +[Отчёт сверки](ux-ui/acceptance/deployment-source-audit-2026-10-10.json), local HEAD9d6cd00. Проверены902 unique tracked application/build inputs с учётом Docker COPY. Frontend515 совпавших файлов, backend405; common contracts/lockfile проверены в обоих contexts. Производственные TS/TSX/JS/CSS/public/config/migrations не отстают от текущих файлов. Исключения явно разобраны: frontend package workspaces безbackend; backend stripped root dependencies/scripts; отсутствующий .dockerignore в очищенном frontend context; recursive-routes.test.ts без позднего as const (тест исключён backend tsconfig). Эти исключения не требуют нового deployment. + +Локальный contracts/backend production build passed. Дополнительно SHA980 emitted backend/contracts files сверены с реальным запущенным контейнером: missing0; после явной CRLF→LF нормализации different0. При raw byte сравнении10 JS файлов отличались переносами внутри multiline strings; байтовая идентичность не заявлена. Image IDs подтверждены docker inspect: backend97c1cff01efd…/frontendb4bade515234…, labels diagnostics89/ospf91 — названия блока, не Git SHA. + +Для frontend подтверждён сохранённый build context/lockfile/config и текущий image ID; compiled frontend не пересобирался и не заявлен independently reproducible. Ранее принятые build/live proofs91 остаются основанием его поведения. Secrets/env не копировались, native writes/fixture/сообщений/deploy0. Повторный frontend build и широкая регрессия при отсутствии source drift не нужны. Следующий96 — remaining speed timezone/контракт времени, затем ограниченный transport disconnect при возможности безопасного окончания native test. Локальный коммит без push; этап12.5 открыт. diff --git a/docs/ux-ui/acceptance/deployment-source-audit-2026-10-10.json b/docs/ux-ui/acceptance/deployment-source-audit-2026-10-10.json new file mode 100644 index 00000000..0235e70c --- /dev/null +++ b/docs/ux-ui/acceptance/deployment-source-audit-2026-10-10.json @@ -0,0 +1,1011 @@ +{ + "date": "2026-10-10", + "head": "9d6cd000efd1fc0af4fdd08680a1854680708c5f", + "normalization": "CRLF to LF for text; binary unchanged", + "contexts": { + "frontend": { + "root": "/opt/mmapp-test/build-ospf91", + "matchedCount": 515, + "matched": [ + "Dockerfile.frontend", + "app/(main)/alerts/page.tsx", + "app/(main)/asns/page.tsx", + "app/(main)/backups/page.tsx", + "app/(main)/bgp/page.tsx", + "app/(main)/certificates/page.tsx", + "app/(main)/communities/page.tsx", + "app/(main)/containers/page.tsx", + "app/(main)/dashboard/page.tsx", + "app/(main)/data-collection/page.tsx", + "app/(main)/domains/page.tsx", + "app/(main)/filters/page.tsx", + "app/(main)/firewall/page.tsx", + "app/(main)/gre/page.tsx", + "app/(main)/ip-ranges/page.tsx", + "app/(main)/ipsec/page.tsx", + "app/(main)/layout.tsx", + "app/(main)/loading.tsx", + "app/(main)/network-map/page.tsx", + "app/(main)/ospf/page.tsx", + "app/(main)/probes/page.tsx", + "app/(main)/recursive-routes/page.tsx", + "app/(main)/releases/page.tsx", + "app/(main)/route-optimizer/page.tsx", + "app/(main)/servers/page.tsx", + "app/(main)/settings/page.tsx", + "app/(main)/statistics/page.tsx", + "app/(main)/terminal/page.tsx", + "app/(main)/traffic/page.tsx", + "app/(main)/uptime/page.tsx", + "app/(main)/uptime/probe-rows.module.css", + "app/(main)/users/page.tsx", + "app/(main)/vxlan/page.tsx", + "app/(main)/wireguard/page.tsx", + "app/access-denied/page.tsx", + "app/api/system/database/backup/route.ts", + "app/api/system/database/restore/route.ts", + "app/auth/callback/page.tsx", + "app/globals.css", + "app/layout.tsx", + "app/page.tsx", + "components.json", + "components/alerts-group-form.tsx", + "components/alerts-outbox-panel.tsx", + "components/alerts-targets-status.tsx", + "components/alerts-telegram-form.tsx", + "components/app-sidebar.tsx", + "components/app-switcher.tsx", + "components/apps-menu.tsx", + "components/auth-guard.tsx", + "components/backups/backup-confirm-dialogs.tsx", + "components/backups/backup-create-sheet.tsx", + "components/backups/backups-history.tsx", + "components/backups/backups-settings.tsx", + "components/certificates/certificate-acme-settings.tsx", + "components/certificates/certificate-renew-settings.tsx", + "components/command-palette.tsx", + "components/config-history-sheet.tsx", + "components/dashboard/bandwidth-chart.tsx", + "components/dashboard/dashboard-data-status.tsx", + "components/dashboard/dashboard-events-timeline.tsx", + "components/dashboard/internet-path-map.tsx", + "components/dashboard/internet-path-panel.tsx", + "components/dashboard/internet-path-summary.tsx", + "components/dashboard/latency-chart.tsx", + "components/data-grids/asns-data-grid.tsx", + "components/data-grids/backups-data-grid.tsx", + "components/data-grids/bgp-session-detail.tsx", + "components/data-grids/bgp-sessions-data-grid.tsx", + "components/data-grids/certificate-days-cell.tsx", + "components/data-grids/certificate-expanded-detail.tsx", + "components/data-grids/certificate-observed-view.test.tsx", + "components/data-grids/certificates-data-grid.tsx", + "components/data-grids/communities-data-grid.tsx", + "components/data-grids/compact-data-grid.tsx", + "components/data-grids/dashboard-active-probes-data-grid.tsx", + "components/data-grids/data-collection-scheduler-data-grid.tsx", + "components/data-grids/domains-data-grid.tsx", + "components/data-grids/filters-data-grid.tsx", + "components/data-grids/firewall-rules-data-grid.tsx", + "components/data-grids/firewall-scenario-rules-data-grid.tsx", + "components/data-grids/gre-pools-data-grid.tsx", + "components/data-grids/gre-tunnels-data-grid.tsx", + "components/data-grids/ip-ranges-data-grid.tsx", + "components/data-grids/ospf-bfd-data-grid.tsx", + "components/data-grids/ospf-neighbors-data-grid.tsx", + "components/data-grids/ospf-routes-data-grid.tsx", + "components/data-grids/probes-schedule-data-grid.tsx", + "components/data-grids/probes-speed-probes-data-grid.tsx", + "components/data-grids/query-filters.tsx", + "components/data-grids/recursive-routes-data-grid.tsx", + "components/data-grids/route-optimizer-comm-recs-data-grid.tsx", + "components/data-grids/route-optimizer-full-routes-data-grid.tsx", + "components/data-grids/route-optimizer-ospf-preview-data-grid.tsx", + "components/data-grids/route-optimizer-wan-matrix-data-grid.tsx", + "components/data-grids/server-expanded-detail.tsx", + "components/data-grids/server-filters.tsx", + "components/data-grids/servers-data-grid.tsx", + "components/data-grids/shared/data-grid-layout.ts", + "components/data-grids/shared/data-grid-shell.tsx", + "components/data-grids/shared/data-grid-sort-header.tsx", + "components/data-grids/snapshot-data-grid.tsx", + "components/data-grids/statistics-breakdown-data-grid.tsx", + "components/data-grids/subusers-data-grid.tsx", + "components/data-grids/traffic-flows-data-grid.tsx", + "components/data-grids/uptime-resources-data-grid.tsx", + "components/data-grids/uptime-speed-history-data-grid.tsx", + "components/data-grids/users-data-grid.tsx", + "components/data-grids/users-expanded-detail.tsx", + "components/data-grids/vxlan-data-grid.tsx", + "components/data-grids/wireguard-data-grid.tsx", + "components/data-grids/wireguard-peers-detail.tsx", + "components/data-grids/wireguard-peers-grid.tsx", + "components/data-page-card.tsx", + "components/data-page-toolbar.tsx", + "components/data-table.tsx", + "components/empty-state.tsx", + "components/examples/c-data-grid-1.tsx", + "components/file-import-dialog.tsx", + "components/flag.tsx", + "components/form-kit/form-field.tsx", + "components/form-kit/form-toggle.tsx", + "components/form-kit/index.ts", + "components/form-kit/section-title.tsx", + "components/form-kit/segmented-control.tsx", + "components/ipsec/ipsec-cert-sheet.tsx", + "components/ipsec/ipsec-init-sheet.tsx", + "components/ipsec/ipsec-peer-sheet.tsx", + "components/ipsec/ipsec-server-grid.tsx", + "components/ipsec/ipsec-user-sheet.tsx", + "components/ipsec/ipsec-users-grid.tsx", + "components/nav-main.tsx", + "components/nav-projects.tsx", + "components/nav-user.tsx", + "components/network-map/country-flag-svg.tsx", + "components/network-map/service-brand-icon.tsx", + "components/ops-panel.tsx", + "components/optimizer-homes-list.tsx", + "components/optimizer-site-summary.tsx", + "components/ospf-detail-list.tsx", + "components/ospf-topology-scope.tsx", + "components/page-header.tsx", + "components/placeholder-page.tsx", + "components/probes-speed-schedule.tsx", + "components/recursive-gateway-choices.tsx", + "components/release-notes-modal.tsx", + "components/reui-kit/attention-queue.tsx", + "components/reui-kit/code-export-sheet.tsx", + "components/reui-kit/index.ts", + "components/reui-kit/kpi-cols.ts", + "components/reui-kit/kpi-stat-grid.tsx", + "components/reui-kit/quick-action-grid.tsx", + "components/reui-kit/traffic-mini-chart.tsx", + "components/reui-kit/traffic-rx-tx-chart.tsx", + "components/reui/alert.tsx", + "components/reui/autocomplete.tsx", + "components/reui/badge.tsx", + "components/reui/cascader/cascader-async.tsx", + "components/reui/cascader/cascader-columns.tsx", + "components/reui/cascader/cascader-context.tsx", + "components/reui/cascader/cascader-footer.tsx", + "components/reui/cascader/cascader-i18n.tsx", + "components/reui/cascader/cascader-item.tsx", + "components/reui/cascader/cascader-lib.tsx", + "components/reui/cascader/cascader-nav.tsx", + "components/reui/cascader/cascader-types.tsx", + "components/reui/cascader/cascader-virtual.tsx", + "components/reui/cascader/cascader.tsx", + "components/reui/data-grid/data-grid-cell-selection.tsx", + "components/reui/data-grid/data-grid-column-filter.tsx", + "components/reui/data-grid/data-grid-column-header.tsx", + "components/reui/data-grid/data-grid-column-visibility.tsx", + "components/reui/data-grid/data-grid-i18n.tsx", + "components/reui/data-grid/data-grid-pagination.tsx", + "components/reui/data-grid/data-grid-scroll-area.tsx", + "components/reui/data-grid/data-grid-table-dnd-rows.tsx", + "components/reui/data-grid/data-grid-table-dnd.tsx", + "components/reui/data-grid/data-grid-table-virtual.tsx", + "components/reui/data-grid/data-grid-table.tsx", + "components/reui/data-grid/data-grid.tsx", + "components/reui/data-grid/index.ts", + "components/reui/date-selector.tsx", + "components/reui/filters/filters-advanced.tsx", + "components/reui/filters/filters-builder.tsx", + "components/reui/filters/filters-chip.tsx", + "components/reui/filters/filters-context.tsx", + "components/reui/filters/filters-date.tsx", + "components/reui/filters/filters-dnd.tsx", + "components/reui/filters/filters-draft.tsx", + "components/reui/filters/filters-editors.tsx", + "components/reui/filters/filters-i18n.tsx", + "components/reui/filters/filters-lib.tsx", + "components/reui/filters/filters-operators.tsx", + "components/reui/filters/filters-query.tsx", + "components/reui/filters/filters-types.tsx", + "components/reui/filters/filters.tsx", + "components/reui/frame.tsx", + "components/reui/icon-stack.tsx", + "components/reui/icon-tile.tsx", + "components/reui/number-field.tsx", + "components/reui/sortable.tsx", + "components/reui/stepper.tsx", + "components/reui/timeline.tsx", + "components/server-rail-layout.tsx", + "components/server-tile-rail.tsx", + "components/settings/evobgp-catalog-status.tsx", + "components/settings/evobgp-data-status.tsx", + "components/settings/evobgp-settings-section.tsx", + "components/settings/system-database-section.tsx", + "components/sparkline.tsx", + "components/statistics/breakdown-dashboard.tsx", + "components/statistics/date-selector-i18n.ts", + "components/statistics/dimension-select.tsx", + "components/statistics/period-selector.tsx", + "components/statistics/slice-chips.tsx", + "components/statistics/statistics-filters.tsx", + "components/statistics/statistics-pivot-grid.tsx", + "components/statistics/statistics-volume-chart.tsx", + "components/status-badge.tsx", + "components/status-dot.tsx", + "components/system-monitor-popover.tsx", + "components/team-switcher.tsx", + "components/theme-provider.tsx", + "components/traffic/flow-analytics-panel.tsx", + "components/traffic/flow-overlay-sheet.tsx", + "components/traffic/flow-traffic-map.tsx", + "components/traffic/geoip-settings-section.tsx", + "components/traffic/netflow-purge-dialog.tsx", + "components/traffic/netflow-settings-panel.tsx", + "components/traffic/traffic-data-time.tsx", + "components/ui/alert-dialog.tsx", + "components/ui/alert.tsx", + "components/ui/avatar.tsx", + "components/ui/badge.tsx", + "components/ui/breadcrumb.tsx", + "components/ui/button-group.tsx", + "components/ui/button.tsx", + "components/ui/calendar.tsx", + "components/ui/card.tsx", + "components/ui/chart.tsx", + "components/ui/checkbox.tsx", + "components/ui/collapsible.tsx", + "components/ui/combobox.tsx", + "components/ui/command.tsx", + "components/ui/dialog.tsx", + "components/ui/dropdown-menu.tsx", + "components/ui/empty.tsx", + "components/ui/field.tsx", + "components/ui/input-group.tsx", + "components/ui/input.tsx", + "components/ui/item.tsx", + "components/ui/kbd.tsx", + "components/ui/label.tsx", + "components/ui/popover.tsx", + "components/ui/scroll-area.tsx", + "components/ui/select.tsx", + "components/ui/separator.tsx", + "components/ui/sheet.tsx", + "components/ui/sidebar.tsx", + "components/ui/skeleton.tsx", + "components/ui/sonner.tsx", + "components/ui/spinner.tsx", + "components/ui/switch.tsx", + "components/ui/table.tsx", + "components/ui/tabs.tsx", + "components/ui/textarea.tsx", + "components/ui/tooltip.tsx", + "components/users/user-sheet.tsx", + "components/wireguard/wg-create-sheet.tsx", + "components/wireguard/wg-export-sheet.tsx", + "components/wireguard/wg-import-sheet.tsx", + "components/wireguard/wg-peer-sheet.tsx", + "entities/server/model/mappers.ts", + "hooks/use-alerts-config-write.ts", + "hooks/use-alerts-targets.ts", + "hooks/use-alerts-telegram-preview.ts", + "hooks/use-app-switcher.ts", + "hooks/use-backups-url-state.ts", + "hooks/use-bgp-url-state.ts", + "hooks/use-dashboard-live.ts", + "hooks/use-file-upload.ts", + "hooks/use-flow-live.ts", + "hooks/use-mobile.ts", + "hooks/use-prefers-reduced-motion.ts", + "hooks/use-server-url-state.ts", + "hooks/use-traffic-live.ts", + "hooks/use-uptime-url-state.ts", + "hooks/use-wireguard-url-state.ts", + "lib/alerts-outbox-checkpoint.ts", + "lib/alerts-telegram-checkpoint.ts", + "lib/api-mock.ts", + "lib/api.ts", + "lib/app-switcher-config.ts", + "lib/app-version.ts", + "lib/auth.ts", + "lib/backend-internal-url.ts", + "lib/backend-url.ts", + "lib/backup-job-checkpoint.test.ts", + "lib/backup-job-checkpoint.ts", + "lib/backup-job-poll.test.ts", + "lib/backup-job-poll.ts", + "lib/backup-restore-checkpoint.test.ts", + "lib/backup-restore-checkpoint.ts", + "lib/backup-settings.test.ts", + "lib/backup-settings.ts", + "lib/bgp/helpers.ts", + "lib/bgp/response.ts", + "lib/bgp/types.ts", + "lib/certificate-issue-checkpoint.test.ts", + "lib/certificate-issue-checkpoint.ts", + "lib/certificate-issue-poll.test.ts", + "lib/certificate-issue-poll.ts", + "lib/certificate-snapshots.test.ts", + "lib/certificate-snapshots.ts", + "lib/certificate-view.ts", + "lib/certificates-url-state.test.ts", + "lib/certificates-url-state.ts", + "lib/config-revisions.ts", + "lib/containers-url-state.test.ts", + "lib/containers-url-state.ts", + "lib/dashboard-bgp.test.ts", + "lib/dashboard-bgp.ts", + "lib/dashboard-internet-path.ts", + "lib/dashboard-latency.ts", + "lib/dashboard-overlays.test.ts", + "lib/dashboard-overlays.ts", + "lib/dashboard-path-response.test.ts", + "lib/dashboard-path-response.ts", + "lib/dashboard-permissions.test.ts", + "lib/dashboard-permissions.ts", + "lib/dashboard-probes.test.ts", + "lib/dashboard-probes.ts", + "lib/dashboard-readers.test.ts", + "lib/dashboard-readers.ts", + "lib/dashboard-source-state.ts", + "lib/dashboard-traffic.test.ts", + "lib/dashboard-traffic.ts", + "lib/data-filters/apply-filter-query.test.ts", + "lib/data-filters/apply-filter-query.ts", + "lib/data-filters/backup-filter-fields.ts", + "lib/data-filters/backups-url-state.test.ts", + "lib/data-filters/backups-url-state.ts", + "lib/data-filters/bgp-filter-fields.ts", + "lib/data-filters/bgp-url-state.test.ts", + "lib/data-filters/bgp-url-state.ts", + "lib/data-filters/filter-labels-ru.ts", + "lib/data-filters/server-filter-fields.ts", + "lib/data-filters/server-url-state.test.ts", + "lib/data-filters/server-url-state.ts", + "lib/data-filters/statistics-filter-fields.ts", + "lib/data-filters/statistics-filter-query.test.ts", + "lib/data-filters/statistics-filter-query.ts", + "lib/data-filters/uptime-url-state.test.ts", + "lib/data-filters/uptime-url-state.ts", + "lib/data-grid-labels-ru.ts", + "lib/data-source.tsx", + "lib/data.ts", + "lib/evobgp-catalog.test.ts", + "lib/evobgp-catalog.ts", + "lib/evobgp-context.tsx", + "lib/evobgp-test-receipt.test.ts", + "lib/evobgp-test-receipt.ts", + "lib/filters-response.ts", + "lib/firewall-freshness.ts", + "lib/firewall-response.ts", + "lib/fmt-rate.ts", + "lib/format-service-path-label.test.ts", + "lib/format-service-path-label.ts", + "lib/gre-endpoint-resolve.ts", + "lib/gre-export.test.ts", + "lib/gre-export.ts", + "lib/gre-response.ts", + "lib/ipsec-client.ts", + "lib/map-gre-speed-probe.ts", + "lib/map-netflow-hops.ts", + "lib/navigation.ts", + "lib/network-map-camera.test.ts", + "lib/network-map-camera.ts", + "lib/network-map-layout.ts", + "lib/network-map-metrics.test.ts", + "lib/network-map-response.test.ts", + "lib/network-map-response.ts", + "lib/network-map-url-state.test.ts", + "lib/network-map-url-state.ts", + "lib/ospf-cost.test.ts", + "lib/ospf-cost.ts", + "lib/ospf-response.ts", + "lib/ospf-router-identity.test.ts", + "lib/ospf-router-identity.ts", + "lib/ospf-state.test.ts", + "lib/ospf-state.ts", + "lib/ospf-url-state.test.ts", + "lib/ospf-url-state.ts", + "lib/ping-probe.ts", + "lib/probe-response.test.ts", + "lib/probe-response.ts", + "lib/probe-schedule-response.test.ts", + "lib/probe-schedule-response.ts", + "lib/probe-source.test.ts", + "lib/probe-source.ts", + "lib/probe-url.test.ts", + "lib/probe-url.ts", + "lib/proxy-backend-request.test.ts", + "lib/proxy-backend-request.ts", + "lib/recursive-route-response.ts", + "lib/recursive-route-url-state.test.ts", + "lib/recursive-route-url-state.ts", + "lib/release-commits.ts", + "lib/release-manifest.ts", + "lib/release-metadata.test.ts", + "lib/release-metadata.ts", + "lib/release-modal-storage.ts", + "lib/route-optimizer-assignment.test.ts", + "lib/route-optimizer-data.ts", + "lib/route-optimizer-observed.test.ts", + "lib/route-optimizer-response.test.ts", + "lib/route-optimizer-response.ts", + "lib/route-optimizer-routes.test.ts", + "lib/scheduler-run-snapshot.test.ts", + "lib/scheduler-run-snapshot.ts", + "lib/scheduler-settings.ts", + "lib/server-operations.ts", + "lib/sidebar-badges.ts", + "lib/speed-persistence-outcome.test.ts", + "lib/speed-persistence-outcome.ts", + "lib/speed-probe-snapshot.test.ts", + "lib/speed-probe-snapshot.ts", + "lib/speed-run-response.test.ts", + "lib/speed-run-response.ts", + "lib/statistics-context.test.ts", + "lib/statistics-context.ts", + "lib/statistics-dims.ts", + "lib/statistics-range.test.ts", + "lib/statistics-range.ts", + "lib/terminal-response.test.ts", + "lib/terminal-response.ts", + "lib/use-backup-job.ts", + "lib/use-backup-restore-guard.ts", + "lib/use-certificate-catalog.ts", + "lib/use-certificate-issue.ts", + "lib/user-save.test.ts", + "lib/user-save.ts", + "lib/users.ts", + "lib/utils.ts", + "lib/vxlan-export.test.ts", + "lib/vxlan-export.ts", + "lib/vxlan-response.ts", + "lib/wg-config.ts", + "lib/wg-export-peer.test.ts", + "lib/wg-export-peer.ts", + "lib/wireguard-response.ts", + "lib/wireguard-url-state.test.ts", + "lib/wireguard-url-state.ts", + "next.config.ts", + "package-lock.json", + "packages/contracts/package.json", + "packages/contracts/src/alerts-normalization.test.ts", + "packages/contracts/src/alerts.ts", + "packages/contracts/src/backups.ts", + "packages/contracts/src/certificates.ts", + "packages/contracts/src/containers.ts", + "packages/contracts/src/events.ts", + "packages/contracts/src/evobgp.ts", + "packages/contracts/src/geoip.ts", + "packages/contracts/src/index.ts", + "packages/contracts/src/ipsec.ts", + "packages/contracts/src/ospf-optimizer.ts", + "packages/contracts/src/servers.ts", + "packages/contracts/src/statistics.ts", + "packages/contracts/src/traffic-flow.ts", + "packages/contracts/src/uptime-probes.ts", + "packages/contracts/src/uptime-speed.ts", + "packages/contracts/src/users.ts", + "packages/contracts/src/wireguard.ts", + "packages/contracts/tsconfig.json", + "postcss.config.mjs", + "public/release-manifest.json", + "shared/api/alerts-outbox.test.ts", + "shared/api/alerts-outbox.ts", + "shared/api/alerts-targets.test.ts", + "shared/api/alerts-targets.ts", + "shared/api/alerts.test.ts", + "shared/api/alerts.ts", + "shared/api/backend-health.test.ts", + "shared/api/backend-health.ts", + "shared/api/backups.test.ts", + "shared/api/backups.ts", + "shared/api/certificates.test.ts", + "shared/api/certificates.ts", + "shared/api/collector-settings-mutations.test.ts", + "shared/api/collector-settings.test.ts", + "shared/api/collector-settings.ts", + "shared/api/containers.ts", + "shared/api/events.ts", + "shared/api/evobgp-settings.test.ts", + "shared/api/evobgp-settings.ts", + "shared/api/geoip.test.ts", + "shared/api/geoip.ts", + "shared/api/http-client.ts", + "shared/api/ipsec.ts", + "shared/api/netflow-settings-form.test.ts", + "shared/api/netflow-settings-form.ts", + "shared/api/scheduler.test.ts", + "shared/api/scheduler.ts", + "shared/api/servers.ts", + "shared/api/sidebar-counts.test.ts", + "shared/api/sidebar-counts.ts", + "shared/api/statistics.ts", + "shared/api/system-database.test.ts", + "shared/api/system-database.ts", + "shared/api/traffic-flow-settings.test.ts", + "shared/api/traffic-flow.ts", + "shared/api/users.ts", + "shared/api/wireguard.ts", + "tsconfig.json" + ], + "missing": [ + ".dockerignore" + ], + "different": [ + { + "path": "package.json", + "local": "03f5ca2dbd26db7c51605fb439f234219293a03ea367ac48bb59030c82f68410", + "context": "21f8544f70a993b1d6c44865e10173a3436a7cc87a14f455acb9af15bbdc634e" + } + ] + }, + "backend": { + "root": "/opt/mmapp-test/build-diagnostics89", + "matchedCount": 405, + "matched": [ + "backend/Dockerfile", + "backend/drizzle/0000_postgresql.sql", + "backend/drizzle/0002_compact_schema.sql", + "backend/drizzle/0003_backup_s3.sql", + "backend/drizzle/0004_geoip_settings.sql", + "backend/drizzle/0005_flow_facts.sql", + "backend/drizzle/0006_config_revisions.sql", + "backend/drizzle/0007_flow_buckets_nat.sql", + "backend/drizzle/0008_alert_outbox_outcomes.sql", + "backend/drizzle/0009_alert_outbox_resolution.sql", + "backend/drizzle/meta/0000_snapshot.json", + "backend/drizzle/meta/_journal.json", + "backend/package.json", + "backend/src/config.ts", + "backend/src/constants/ping-probe.ts", + "backend/src/db/bootstrap.ts", + "backend/src/db/index.ts", + "backend/src/db/json.ts", + "backend/src/db/migrate.ts", + "backend/src/db/operation-lock.test.ts", + "backend/src/db/operation-lock.ts", + "backend/src/db/partitions.ts", + "backend/src/db/pg-schema.test.ts", + "backend/src/db/schema.ts", + "backend/src/db/sql-bind.test.ts", + "backend/src/db/sql-bind.ts", + "backend/src/db/sqlite-import.ts", + "backend/src/db/sqlite-json.test.ts", + "backend/src/db/traffic-flags.test.ts", + "backend/src/db/traffic-flags.ts", + "backend/src/index.ts", + "backend/src/lib/permissions.test.ts", + "backend/src/lib/permissions.ts", + "backend/src/managed-markers.ts", + "backend/src/modules/events/repository/events-repository.ts", + "backend/src/modules/events/service/events-service.ts", + "backend/src/modules/servers/mapper/servers-mapper.ts", + "backend/src/modules/servers/repository/servers-repository.ts", + "backend/src/modules/servers/service/servers-service.ts", + "backend/src/modules/users/bindings.test.ts", + "backend/src/modules/users/iface-type.test.ts", + "backend/src/modules/users/iface-type.ts", + "backend/src/modules/users/interface-inventory.test.ts", + "backend/src/modules/users/interface-inventory.ts", + "backend/src/modules/users/peer-bind.ts", + "backend/src/modules/users/repository/users-repository.ts", + "backend/src/modules/users/service/users-service.ts", + "backend/src/plugins/auth.alerts.test.ts", + "backend/src/plugins/auth.evolution-settings.test.ts", + "backend/src/plugins/auth.exec.test.ts", + "backend/src/plugins/auth.geoip.test.ts", + "backend/src/plugins/auth.netflow-settings.test.ts", + "backend/src/plugins/auth.ospf-optimizer.test.ts", + "backend/src/plugins/auth.smoke.test.ts", + "backend/src/plugins/auth.system-database.test.ts", + "backend/src/plugins/auth.ts", + "backend/src/plugins/database-request-gate.ts", + "backend/src/routes/alerts.test.ts", + "backend/src/routes/alerts.ts", + "backend/src/routes/backups-operations.test.ts", + "backend/src/routes/backups.ts", + "backend/src/routes/bgp-catalog.test.ts", + "backend/src/routes/bgp.ts", + "backend/src/routes/certificates-issue.test.ts", + "backend/src/routes/certificates-state.test.ts", + "backend/src/routes/certificates.ts", + "backend/src/routes/containers-state.test.ts", + "backend/src/routes/containers.ts", + "backend/src/routes/events.ts", + "backend/src/routes/evobgp-catalog.test.ts", + "backend/src/routes/evobgp-catalog.ts", + "backend/src/routes/evobgp-settings.test.ts", + "backend/src/routes/evobgp-settings.ts", + "backend/src/routes/evobgp.ts", + "backend/src/routes/exec.test.ts", + "backend/src/routes/exec.ts", + "backend/src/routes/filters-gre-catalog.test.ts", + "backend/src/routes/filters.ts", + "backend/src/routes/firewall.ts", + "backend/src/routes/geoip.ts", + "backend/src/routes/gre.ts", + "backend/src/routes/internet-path.ts", + "backend/src/routes/ipsec-group.test.ts", + "backend/src/routes/ipsec-history.test.ts", + "backend/src/routes/ipsec-mutation.test.ts", + "backend/src/routes/ipsec-nat.test.ts", + "backend/src/routes/ipsec.ts", + "backend/src/routes/network.ts", + "backend/src/routes/ospf-catalog.test.ts", + "backend/src/routes/ospf-optimizer.test.ts", + "backend/src/routes/ospf.ts", + "backend/src/routes/ping-probes-write.test.ts", + "backend/src/routes/ping-probes-write.ts", + "backend/src/routes/probes.cancel.test.ts", + "backend/src/routes/probes.test.ts", + "backend/src/routes/probes.ts", + "backend/src/routes/recursive-routes.ts", + "backend/src/routes/scheduler.test.ts", + "backend/src/routes/scheduler.ts", + "backend/src/routes/servers-api-ping.ts", + "backend/src/routes/servers.ts", + "backend/src/routes/sidebar-counts.test.ts", + "backend/src/routes/sidebar-counts.ts", + "backend/src/routes/speed-probes-write.test.ts", + "backend/src/routes/speed-probes-write.ts", + "backend/src/routes/speed-test.test.ts", + "backend/src/routes/speed-test.ts", + "backend/src/routes/statistics.ts", + "backend/src/routes/system-database.test.ts", + "backend/src/routes/system-database.ts", + "backend/src/routes/traffic-flow-purge.test.ts", + "backend/src/routes/traffic-flow-purge.ts", + "backend/src/routes/traffic-flow-settings.test.ts", + "backend/src/routes/traffic-flow-settings.ts", + "backend/src/routes/traffic-flow.ts", + "backend/src/routes/traffic.ts", + "backend/src/routes/uptime.ts", + "backend/src/routes/users-catalog.test.ts", + "backend/src/routes/users.ts", + "backend/src/routes/vxlan.test.ts", + "backend/src/routes/vxlan.ts", + "backend/src/routes/wireguard-import.test.ts", + "backend/src/routes/wireguard.ts", + "backend/src/scripts/migrate-sqlite-to-pg.ts", + "backend/src/scripts/rebuild-flow-facts.ts", + "backend/src/services/acme-cloudflare.ts", + "backend/src/services/alert-collector-hooks.ts", + "backend/src/services/alert-engine/confirm-stability.test.ts", + "backend/src/services/alert-engine/confirm-stability.ts", + "backend/src/services/alert-engine/cooldown.ts", + "backend/src/services/alert-engine/decision-engine.ts", + "backend/src/services/alert-engine/evaluate-rule.test.ts", + "backend/src/services/alert-engine/evaluate-rule.ts", + "backend/src/services/alert-engine/groups.test.ts", + "backend/src/services/alert-engine/groups.ts", + "backend/src/services/alert-engine/outbox-execution.test.ts", + "backend/src/services/alert-engine/outbox-execution.ts", + "backend/src/services/alert-engine/outbox.ts", + "backend/src/services/alert-engine/prev-live-store.ts", + "backend/src/services/alert-engine/rule-matcher.ts", + "backend/src/services/alert-engine/run-once.ts", + "backend/src/services/alert-engine/signal-ingestor.ts", + "backend/src/services/alert-engine/signals-from-collectors.ts", + "backend/src/services/alert-engine/snapshot.ts", + "backend/src/services/alert-engine/source-watermark.ts", + "backend/src/services/alert-engine/state-machine.test.ts", + "backend/src/services/alert-engine/state-machine.ts", + "backend/src/services/alert-engine/telegram-emoji.test.ts", + "backend/src/services/alert-engine/telegram-emoji.ts", + "backend/src/services/alert-engine/types.ts", + "backend/src/services/alerts-config-execution.test.ts", + "backend/src/services/alerts-config-execution.ts", + "backend/src/services/alerts-outbox-overview.test.ts", + "backend/src/services/alerts-outbox-overview.ts", + "backend/src/services/alerts-outbox-retry.test.ts", + "backend/src/services/alerts-outbox-retry.ts", + "backend/src/services/alerts-overview.test.ts", + "backend/src/services/alerts-overview.ts", + "backend/src/services/alerts-revision.test.ts", + "backend/src/services/alerts-revision.ts", + "backend/src/services/alerts-service.ts", + "backend/src/services/alerts-telegram-delivery.test.ts", + "backend/src/services/alerts-telegram-delivery.ts", + "backend/src/services/alerts-telegram-send.test.ts", + "backend/src/services/alerts-telegram-send.ts", + "backend/src/services/alerts-telegram-settings.test.ts", + "backend/src/services/alerts-telegram-settings.ts", + "backend/src/services/backup-deletion.test.ts", + "backend/src/services/backup-deletion.ts", + "backend/src/services/backup-dto.test.ts", + "backend/src/services/backup-dto.ts", + "backend/src/services/backup-job-execution.test.ts", + "backend/src/services/backup-job-execution.ts", + "backend/src/services/backup-prune.ts", + "backend/src/services/backup-restore.test.ts", + "backend/src/services/backup-restore.ts", + "backend/src/services/backup-scheduler-collector.ts", + "backend/src/services/backup-scheduler-run.test.ts", + "backend/src/services/backup-scheduler-run.ts", + "backend/src/services/backup-service.ts", + "backend/src/services/backup-storage-update.test.ts", + "backend/src/services/backup-storage-update.ts", + "backend/src/services/bandwidth-test-rates.test.ts", + "backend/src/services/bandwidth-test-rates.ts", + "backend/src/services/bandwidth-test-status.test.ts", + "backend/src/services/bandwidth-test-status.ts", + "backend/src/services/bgp-catalog-parse.test.ts", + "backend/src/services/bgp-catalog-poll.ts", + "backend/src/services/bgp-parse-sessions.ts", + "backend/src/services/bgp-peers-live.ts", + "backend/src/services/btest-node-locks.ts", + "backend/src/services/certificate-issue-dto.test.ts", + "backend/src/services/certificate-issue-dto.ts", + "backend/src/services/certificate-issue-execution.test.ts", + "backend/src/services/certificate-issue-execution.ts", + "backend/src/services/certificate-issue-request.test.ts", + "backend/src/services/certificate-issue-request.ts", + "backend/src/services/certificate-issue-runner.ts", + "backend/src/services/certificate-parse.test.ts", + "backend/src/services/certificate-parse.ts", + "backend/src/services/certificate-renew-collector.ts", + "backend/src/services/certificates-service.ts", + "backend/src/services/certificates-state.test.ts", + "backend/src/services/certificates-state.ts", + "backend/src/services/complete-count.test.ts", + "backend/src/services/complete-count.ts", + "backend/src/services/config-apply-plan.test.ts", + "backend/src/services/config-apply-plan.ts", + "backend/src/services/config-revisions.test.ts", + "backend/src/services/config-revisions.ts", + "backend/src/services/containers-live.test.ts", + "backend/src/services/containers-live.ts", + "backend/src/services/containers-state.test.ts", + "backend/src/services/containers-state.ts", + "backend/src/services/database-background-work.test.ts", + "backend/src/services/database-background-work.ts", + "backend/src/services/database-request-gate.test.ts", + "backend/src/services/database-request-gate.ts", + "backend/src/services/entity-snapshots.test.ts", + "backend/src/services/entity-snapshots.ts", + "backend/src/services/evobgp-catalog.test.ts", + "backend/src/services/evobgp-catalog.ts", + "backend/src/services/firewall-live.ts", + "backend/src/services/firewall-poll.test.ts", + "backend/src/services/firewall-poll.ts", + "backend/src/services/geoip-settings.ts", + "backend/src/services/geoip-update-collector.ts", + "backend/src/services/gre-bgp-snapshot-collector.ts", + "backend/src/services/gre-catalog-poll.test.ts", + "backend/src/services/gre-catalog-poll.ts", + "backend/src/services/gre-comment.test.ts", + "backend/src/services/gre-comment.ts", + "backend/src/services/gre-live.ts", + "backend/src/services/gre-tunnels-live.ts", + "backend/src/services/internet-path-collector.ts", + "backend/src/services/internet-path-snapshot.test.ts", + "backend/src/services/internet-path-snapshot.ts", + "backend/src/services/ipsec-ca.ts", + "backend/src/services/ipsec-cleanup.ts", + "backend/src/services/ipsec-config.test.ts", + "backend/src/services/ipsec-config.ts", + "backend/src/services/ipsec-live.ts", + "backend/src/services/ipsec-operation.test.ts", + "backend/src/services/ipsec-operation.ts", + "backend/src/services/ipsec-restore.test.ts", + "backend/src/services/ipsec-ros.ts", + "backend/src/services/ipsec-state.test.ts", + "backend/src/services/mikrotik.ts", + "backend/src/services/monitoring-server-catalog.ts", + "backend/src/services/ospf-catalog-poll.ts", + "backend/src/services/ospf-effective-disabled.test.ts", + "backend/src/services/ospf-effective-disabled.ts", + "backend/src/services/ospf-observed-values.test.ts", + "backend/src/services/ospf-observed-values.ts", + "backend/src/services/ospf-optimizer-identity.test.ts", + "backend/src/services/ospf-optimizer-identity.ts", + "backend/src/services/ospf-optimizer-metrics.test.ts", + "backend/src/services/ospf-optimizer-metrics.ts", + "backend/src/services/ospf-optimizer-plan.test.ts", + "backend/src/services/ospf-optimizer-plan.ts", + "backend/src/services/ospf-route-parse.test.ts", + "backend/src/services/ospf-route-parse.ts", + "backend/src/services/ping-probe-replacement.ts", + "backend/src/services/poller.ts", + "backend/src/services/recursive-apply.test.ts", + "backend/src/services/recursive-apply.ts", + "backend/src/services/recursive-route-catalog.test.ts", + "backend/src/services/recursive-route-catalog.ts", + "backend/src/services/recursive-route-validation.ts", + "backend/src/services/ros-file-contents.test.ts", + "backend/src/services/ros-metric-parse.ts", + "backend/src/services/ros-ops.ts", + "backend/src/services/s3-backup-client.test.ts", + "backend/src/services/s3-backup-client.ts", + "backend/src/services/scheduler-recorded-run.test.ts", + "backend/src/services/scheduler-recorded-run.ts", + "backend/src/services/scheduler-running.test.ts", + "backend/src/services/scheduler-running.ts", + "backend/src/services/scheduler.ts", + "backend/src/services/serial-operation.ts", + "backend/src/services/servers-rest-ping-collector.ts", + "backend/src/services/speed-history-dto.test.ts", + "backend/src/services/speed-history-dto.ts", + "backend/src/services/speed-probe-dto.test.ts", + "backend/src/services/speed-probe-dto.ts", + "backend/src/services/speed-probe-replacement.ts", + "backend/src/services/speed-run-persistence.test.ts", + "backend/src/services/speed-run-persistence.ts", + "backend/src/services/statistics-aggregate.test.ts", + "backend/src/services/statistics-aggregate.ts", + "backend/src/services/system-database-backup.ts", + "backend/src/services/system-database-cache.test.ts", + "backend/src/services/system-database-cache.ts", + "backend/src/services/system-database-operation.test.ts", + "backend/src/services/system-database-operation.ts", + "backend/src/services/system-database-partition-restore.test.ts", + "backend/src/services/system-database-partition-restore.ts", + "backend/src/services/system-database-restore-execution.test.ts", + "backend/src/services/system-database-restore-execution.ts", + "backend/src/services/traffic-collector.ts", + "backend/src/services/traffic-flow-analytics.test.ts", + "backend/src/services/traffic-flow-analytics.ts", + "backend/src/services/traffic-flow-apps.ts", + "backend/src/services/traffic-flow-brands.test.ts", + "backend/src/services/traffic-flow-brands.ts", + "backend/src/services/traffic-flow-classify.test.ts", + "backend/src/services/traffic-flow-classify.ts", + "backend/src/services/traffic-flow-collector-ipc.ts", + "backend/src/services/traffic-flow-collector-worker.ts", + "backend/src/services/traffic-flow-dedup.test.ts", + "backend/src/services/traffic-flow-dedup.ts", + "backend/src/services/traffic-flow-dest.test.ts", + "backend/src/services/traffic-flow-dest.ts", + "backend/src/services/traffic-flow-engine.ts", + "backend/src/services/traffic-flow-facts-filter.test.ts", + "backend/src/services/traffic-flow-facts-filter.ts", + "backend/src/services/traffic-flow-facts-rebuild.test.ts", + "backend/src/services/traffic-flow-facts-rebuild.ts", + "backend/src/services/traffic-flow-facts.test.ts", + "backend/src/services/traffic-flow-facts.ts", + "backend/src/services/traffic-flow-geoip.test.ts", + "backend/src/services/traffic-flow-geoip.ts", + "backend/src/services/traffic-flow-host-file-builders.test.ts", + "backend/src/services/traffic-flow-host-file-builders.ts", + "backend/src/services/traffic-flow-host-files.ts", + "backend/src/services/traffic-flow-ifaces.test.ts", + "backend/src/services/traffic-flow-ifaces.ts", + "backend/src/services/traffic-flow-ifindex.test.ts", + "backend/src/services/traffic-flow-ifindex.ts", + "backend/src/services/traffic-flow-ingest.test.ts", + "backend/src/services/traffic-flow-ingest.ts", + "backend/src/services/traffic-flow-ip.test.ts", + "backend/src/services/traffic-flow-ip.ts", + "backend/src/services/traffic-flow-key-execution.test.ts", + "backend/src/services/traffic-flow-key-execution.ts", + "backend/src/services/traffic-flow-map-exporter.test.ts", + "backend/src/services/traffic-flow-map-exporter.ts", + "backend/src/services/traffic-flow-map-hops.test.ts", + "backend/src/services/traffic-flow-map-hops.ts", + "backend/src/services/traffic-flow-overlay.ts", + "backend/src/services/traffic-flow-parse.test.ts", + "backend/src/services/traffic-flow-parse.ts", + "backend/src/services/traffic-flow-planes.test.ts", + "backend/src/services/traffic-flow-planes.ts", + "backend/src/services/traffic-flow-purge-execution.test.ts", + "backend/src/services/traffic-flow-purge-execution.ts", + "backend/src/services/traffic-flow-purge.test.ts", + "backend/src/services/traffic-flow-ripe.test.ts", + "backend/src/services/traffic-flow-ripe.ts", + "backend/src/services/traffic-flow-settings.ts", + "backend/src/services/traffic-flow-topology.ts", + "backend/src/services/traffic-flow-worker-shutdown.test.ts", + "backend/src/services/traffic-flow-worker-shutdown.ts", + "backend/src/services/traffic-rate.test.ts", + "backend/src/services/traffic-rate.ts", + "backend/src/services/traffic-users.ts", + "backend/src/services/uptime-collector.ts", + "backend/src/services/uptime-probe-observations.test.ts", + "backend/src/services/uptime-probe-observations.ts", + "backend/src/services/uptime-speed-service.ts", + "backend/src/services/vxlan-live.test.ts", + "backend/src/services/vxlan-live.ts", + "backend/src/services/wg-keys.ts", + "backend/src/services/wireguard-config.test.ts", + "backend/src/services/wireguard-config.ts", + "backend/src/services/wireguard-delete.test.ts", + "backend/src/services/wireguard-delete.ts", + "backend/src/services/wireguard-import-apply.test.ts", + "backend/src/services/wireguard-import-apply.ts", + "backend/src/services/wireguard-import-revision.test.ts", + "backend/src/services/wireguard-import-revision.ts", + "backend/src/services/wireguard-import.test.ts", + "backend/src/services/wireguard-import.ts", + "backend/src/services/wireguard-live.ts", + "backend/src/services/wireguard-observed-values.test.ts", + "backend/src/services/wireguard-observed-values.ts", + "backend/src/services/wireguard-ros.ts", + "backend/src/test/pg.ts", + "backend/src/types/scheduler-run-snapshot.ts", + "backend/src/types/server.ts", + "backend/src/utils/abort-signals.ts", + "backend/src/utils/ros-src-address.ts", + "backend/src/utils/server-id.ts", + "backend/tsconfig.json", + "package-lock.json", + "packages/contracts/package.json", + "packages/contracts/src/alerts-normalization.test.ts", + "packages/contracts/src/alerts.ts", + "packages/contracts/src/backups.ts", + "packages/contracts/src/certificates.ts", + "packages/contracts/src/containers.ts", + "packages/contracts/src/events.ts", + "packages/contracts/src/evobgp.ts", + "packages/contracts/src/geoip.ts", + "packages/contracts/src/index.ts", + "packages/contracts/src/ipsec.ts", + "packages/contracts/src/ospf-optimizer.ts", + "packages/contracts/src/servers.ts", + "packages/contracts/src/statistics.ts", + "packages/contracts/src/traffic-flow.ts", + "packages/contracts/src/uptime-probes.ts", + "packages/contracts/src/uptime-speed.ts", + "packages/contracts/src/users.ts", + "packages/contracts/src/wireguard.ts", + "packages/contracts/tsconfig.json" + ], + "missing": [], + "different": [ + { + "path": "backend/src/routes/recursive-routes.test.ts", + "local": "e2458b856a41033504699675a883cc7f3f5a8cf793d3db3f10446fe5696c3ea8", + "context": "315e149aac9c963beacfbe099a3dddc286ffe1e7cfa31e7fa32bed1a445ec722" + }, + { + "path": "package.json", + "local": "03f5ca2dbd26db7c51605fb439f234219293a03ea367ac48bb59030c82f68410", + "context": "707d04dcda7f82c1ae7f4f3072a898647a328c6338ebd32c8187cd33bc58acbf" + } + ] + } + }, + "runtime": { + "frontend": { + "imageId": "sha256:b4bade515234115b3cad257ceb87ef7beb347e754ca92d6a97a25adc2199fd33", + "imageTag": "mmapp-test/frontend:ux-ospf91", + "revisionLabel": "ospf91", + "state": "running", + "health": null, + "startedAt": "2026-10-09T15:19:39.506008298Z" + }, + "backend": { + "imageId": "sha256:97c1cff01efd5055d3811b742e293180d5999ff1e326e42242e5c975b5f70349", + "imageTag": "mmapp-test/backend:ux-diagnostics89", + "revisionLabel": "diagnostics89", + "state": "running", + "health": "healthy", + "startedAt": "2026-10-09T14:17:10.976165374Z" + } + }, + "compiledBackend": { + "checked": 980, + "missing": [], + "different": [ + "backend/dist/db/migrate.js", + "backend/dist/db/partitions.js", + "backend/dist/db/sqlite-import.js", + "backend/dist/services/alert-engine/signals-from-collectors.js", + "backend/dist/services/alerts-service.js", + "backend/dist/services/statistics-aggregate.js", + "backend/dist/services/system-database-partition-restore.js", + "backend/dist/services/traffic-flow-facts-rebuild.js", + "backend/dist/services/traffic-flow-host-file-builders.js", + "backend/dist/services/traffic-flow-ingest.js" + ], + "normalizedChecked": 980, + "normalizedDifferent": [], + "rawDifferencesExplanation": "10 JavaScript files differ only in CRLF/LF emitted within multiline strings; normalized text hashes all match. Byte-identical output is not claimed." + }, + "contextExceptions": { + "frontendPackage": "Only workspaces: packages/*; backend workspace intentionally omitted in frontend CI-style context", + "backendPackage": "Root scripts/dependencies/devDependencies stripped for backend dependency context", + "recursiveTest": "Only as const type assertion differs; *.test.ts excluded by backend tsconfig", + "frontendDockerignore": "Absent in already-clean context; Dockerfile COPY explicitly enumerates inputs" + }, + "limits": [ + "Context equivalence does not independently reproduce the compiled frontend artifact; image ID and existing build/live evidence identify it", + "Only tracked Docker COPY application/configuration inputs checked; secrets/env values not collected", + "CRLF/LF normalization is explicit; byte identity is not claimed", + "No native fixtures/messages/deployment/migrations" + ] +}