fix(network): согласовать GRE PSK с FastPath и экспортом

This commit is contained in:
Denozordec committed 2026-10-13 21:42:21 +07:00
1 parent 7d86af7e8b
commit 1be4a490b5
20 files changed
+1460 -19

No files matched your search

+5 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-13: блок 211 завершён. Закрыт анонимный обход JWT и section RBAC через encoded URL: проверяется маршрут Fastify, HEAD наследует GET policy, OSPF parameter routes сохраняют права. Пройдены auth42, production SQL/API29 и live26; тестовые DB/role/users удалены. Backend ux-auth211/source477/compiled1048, frontend ux-gre210. Следующий212 — совместимость GRE FastPath/PSK и шаблон экспорта недопустимого keepalive. Этап12.5 открыт.
Актуальное продолжение 2026-10-13: блок 212 завершён. GRE с PSK по умолчанию отключает FastPath; явный конфликт получает400. Форма и экспорт учитывают совместимость и недопустимый keepalive. SQL/API18, E2E10 и live GRE/Filters UI4 прошли; два собственных интерфейса удалены. Backend/frontend ux-gre212; source478/527 и compiled1048 совпали. Auth-исправление211 сохранено. Следующий213 — выбор IPv4/IPv6-команды в GRE экспорте. Этап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).
@@ -2571,3 +2571,7 @@ Production compiled SQL/API29 на собственной ограниченно
Следующий212: GRE create с PSK и опущенным FastPath, explicit incompatible combination, экспорт недопустимого/неизвестного keepalive. 12.5 остаётся открытой по внешней матрице.
## 12.5.212 — GRE PSK/FastPath (2026-10-13)
Результат, проверки и ограничения: [полная запись212](ux-ui-progress.md#125212--совместимость-gre-pskfastpath-и-шаблоны-экспорта-2026-10-13). Runtime ux-gre212, SQL/API18, E2E10, native/UI и cleanup подтверждены; auth211 сохранён.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-13: блок 211 завершён. Закрыт анонимный обход JWT и section RBAC через encoded URL: проверяется маршрут Fastify, HEAD наследует GET policy, OSPF parameter routes сохраняют права. Пройдены auth42, production SQL/API29 и live26; тестовые DB/role/users удалены. Backend ux-auth211/source477/compiled1048, frontend ux-gre210. Следующий212 — совместимость GRE FastPath/PSK и шаблон экспорта недопустимого keepalive. Этап12.5 открыт.
Актуальное продолжение 2026-10-13: блок 212 завершён. GRE с PSK по умолчанию отключает FastPath; явный конфликт получает400. Форма и экспорт учитывают совместимость и недопустимый keepalive. SQL/API18, E2E10 и live GRE/Filters UI4 прошли; два собственных интерфейса удалены. Backend/frontend ux-gre212; source478/527 и compiled1048 совпали. Auth-исправление211 сохранено. Следующий213 — выбор IPv4/IPv6-команды в GRE экспорте. Этап12.5 открыт.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-13. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+17 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-13: блок 211 завершён. Закрыт анонимный обход JWT и section RBAC через encoded URL: проверяется маршрут Fastify, HEAD наследует GET policy, OSPF parameter routes сохраняют права. Пройдены auth42, production SQL/API29 и live26; тестовые DB/role/users удалены. Backend ux-auth211/source477/compiled1048, frontend ux-gre210. Следующий212 — совместимость GRE FastPath/PSK и шаблон экспорта недопустимого keepalive. Этап12.5 открыт.
Актуальное продолжение 2026-10-13: блок 212 завершён. GRE с PSK по умолчанию отключает FastPath; явный конфликт получает400. Форма и экспорт учитывают совместимость и недопустимый keepalive. SQL/API18, E2E10 и live GRE/Filters UI4 прошли; два собственных интерфейса удалены. Backend/frontend ux-gre212; source478/527 и compiled1048 совпали. Auth-исправление211 сохранено. Следующий213 — выбор IPv4/IPv6-команды в GRE экспорте. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -38,6 +38,22 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–196 и ограничения ниже. Runtime backend/frontend ux-peak196. |
## 12.5.212 — совместимость GRE PSK/FastPath и шаблоны экспорта (2026-10-13)
POST с PSK и опущенным allowFastPath теперь создаёт GRE с FastPath=false. При явном PSK+FastPath=true возвращается400 до native requests; PATCH учитывает уже настроенный PSK и не пишет несовместимое состояние. Включение PSK через PATCH без FastPath отключает его; изменения другого поля сохраняют прочие настройки. Форма показывает FastPath выключенным и недоступным при IPsec, отправляет false. Global IPsec peer/policy/proposal не меняются.
Экспорт недопустимого keepalive или несовместимого IPsec/FastPath явно обозначен как шаблон: вместо готовой неверной команды выводятся <KEEPALIVE_SECONDS>, <KEEPALIVE_RETRIES>, <ALLOW_FAST_PATH> и пояснения. Скрытый PSK сохраняет прежний <IPSEC_PSK>. Валидные наблюдаемые значения и escaping не изменены. ReUI primitives и тема не затронуты.
Проверки: production SQL/API18 на собственной ограниченной DB/role, native HTTP fixture; DB/role/container удалены. Профиль live-maps, GRE export/schema/network-map units, TypeScript/build/ESLint прошли. E2E10: FastPath при включении IPsec, прежние PSK/keepalive/reader export и несовместимый снимок на1440/320. Source478/527 и compiled1048 совпали; backend/frontend ux-gre212 healthy/running, auth211 сохранён.
Live: по одному собственному отключённому GRE с PSK на каждом CHR без явных keepalive/FastPath; native10s,10 и FastPath=false подтверждены, конфликт PATCH400 сохраняет состояние. Четыре UI GRE/Filters на1440/320, без UI writes/errors. Оба интерфейса удалены; пароли не менялись. Это проверка конфигурации/API/интерфейса, не data plane.
Первый deploy preflight обнаружил старое имя отчёта gre212-keepalive-result.json. Публичная копия названа compatibility с сохранением originalReportedFilename; содержимое18 cases и cleanup проверено. До успешного deploy preflight стенд оставался на211, поэтому преждевременный live create получил старый502 и был очищен; финальная проверка началась после health и прошла. На стенде очищен только неиспользуемый Docker build cache старше часа; runtime и rollback images сохранены.
Протоколы: [SQL/API18](ux-ui/acceptance/gre212-compatibility-result.json), [профили](ux-ui/acceptance/gre212-profile-2026-10-13.json), [E2E10](ux-ui/acceptance/gre212-e2e-2026-10-13.json), [native/UI/cleanup](ux-ui/acceptance/gre212-native-live-2026-10-13.json), [source](ux-ui/acceptance/source212-result.json), [compiled](ux-ui/acceptance/compiled212-result.json), [deployment](ux-ui/acceptance/gre212-deployment-2026-10-13.json).
Следующий213: GRE exporter всегда использует /ip/address/add, даже для уже поддерживаемого приложением внутреннего IPv6. Исправить family и проверить собственные ULA без обещания public IPv6/terminal import.
## 12.5.211 — JWT/RBAC для закодированных URL (2026-10-13)
Actual baseline: обычный /api/servers без JWT возвращал401, но /%61pi/servers возвращал200 и server rows с непустыми паролями. Fastify распознаёт encoded static segments; middleware сравнивал raw URL и пропускал auth для encoded /api prefix. Для encoded имени раздела можно было также получить fallback dashboard permission. В evidence сохранены только статусы, число строк и boolean наличия пароля; raw body, credentials и JWT не сохранялись и не выводились.
+8 -4
View File
@@ -1,10 +1,10 @@
# Оставшаяся внешняя приёмка — 2026-10-13
Актуальное продолжение 2026-10-13: блок 211 завершён. Закрыт анонимный обход JWT и section RBAC через encoded URL: проверяется маршрут Fastify, HEAD наследует GET policy, OSPF parameter routes сохраняют права. Пройдены auth42, production SQL/API29 и live26; тестовые DB/role/users удалены. Backend ux-auth211/source477/compiled1048, frontend ux-gre210. Следующий212 — совместимость GRE FastPath/PSK и шаблон экспорта недопустимого keepalive. Этап12.5 открыт.
Актуальное продолжение 2026-10-13: блок 212 завершён. GRE с PSK по умолчанию отключает FastPath; явный конфликт получает400. Форма и экспорт учитывают совместимость и недопустимый keepalive. SQL/API18, E2E10 и live GRE/Filters UI4 прошли; два собственных интерфейса удалены. Backend/frontend ux-gre212; source478/527 и compiled1048 совпали. Auth-исправление211 сохранено. Следующий213 — выбор IPv4/IPv6-команды в GRE экспорте. Этап12.5 открыт.
Это актуальная матрица после 12.5.211. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Это актуальная матрица после 12.5.212. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-auth211`, frontend `ux-gre210`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend/frontend `ux-gre212`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
| Раздел | Подтверждено | Осталось / условие завершения |
| --- | --- | --- |
@@ -26,7 +26,7 @@
## Следующая последовательность — 2026-10-13
1. **212 — GRE compatibility:** PSK/FastPath default и explicit conflict; экспорт недопустимого/неизвестного keepalive. Canonical auth/RBAC211 закрыт и развёрнут.
1. **213 — GRE IPv6 export:** команда локального IPv6 вместо /ip/address/add; собственные ULA и профильные UI/экспорт проверки.
2. **Профильный контроль:** для новых изменений выполнять затронутые SQL/API/UI проверки. Общая регрессия192 выполнена; не повторять её без изменений общей основы или нового основания.
3. **Внешние зависимости:** Portal issuer/login/revoke, Telegram bot/chat/разрешённое сообщение, клиентские ОС, независимые WAN/public IPv6 и scale/multi-instance — отдельные группы по таблице выше. Ограничения текущего стенда не превращать в обещание приёмки всех конфигураций.
@@ -1489,3 +1489,7 @@ Production compiled SQL/API29 на собственной ограниченно
Следующий212: GRE create с PSK и опущенным FastPath, explicit incompatible combination, экспорт недопустимого/неизвестного keepalive. 12.5 остаётся открытой по внешней матрице.
## 12.5.212 — GRE PSK/FastPath (2026-10-13)
Результат, проверки и ограничения: [полная запись212](ux-ui-progress.md#125212--совместимость-gre-pskfastpath-и-шаблоны-экспорта-2026-10-13). Runtime ux-gre212, SQL/API18, E2E10, native/UI и cleanup подтверждены; auth211 сохранён.
+18 -1
View File
@@ -1,6 +1,6 @@
# Этап 12: итоговая приёмка UX/UI
Актуальное продолжение 2026-10-13: блок 211 завершён. Закрыт анонимный обход JWT и section RBAC через encoded URL: проверяется маршрут Fastify, HEAD наследует GET policy, OSPF parameter routes сохраняют права. Пройдены auth42, production SQL/API29 и live26; тестовые DB/role/users удалены. Backend ux-auth211/source477/compiled1048, frontend ux-gre210. Следующий212 — совместимость GRE FastPath/PSK и шаблон экспорта недопустимого keepalive. Этап12.5 открыт.
Актуальное продолжение 2026-10-13: блок 212 завершён. GRE с PSK по умолчанию отключает FastPath; явный конфликт получает400. Форма и экспорт учитывают совместимость и недопустимый keepalive. SQL/API18, E2E10 и live GRE/Filters UI4 прошли; два собственных интерфейса удалены. Backend/frontend ux-gre212; source478/527 и compiled1048 совпали. Auth-исправление211 сохранено. Следующий213 — выбор IPv4/IPv6-команды в GRE экспорте. Этап12.5 открыт.
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
@@ -3878,3 +3878,20 @@ Production compiled SQL/API29 на собственной ограниченно
Следующий212: GRE create с PSK и опущенным FastPath, explicit incompatible combination, экспорт недопустимого/неизвестного keepalive. 12.5 остаётся открытой по внешней матрице.
## 12.5.212 — совместимость GRE PSK/FastPath и шаблоны экспорта (2026-10-13)
POST с PSK и опущенным allowFastPath теперь создаёт GRE с FastPath=false. При явном PSK+FastPath=true возвращается400 до native requests; PATCH учитывает уже настроенный PSK и не пишет несовместимое состояние. Включение PSK через PATCH без FastPath отключает его; изменения другого поля сохраняют прочие настройки. Форма показывает FastPath выключенным и недоступным при IPsec, отправляет false. Global IPsec peer/policy/proposal не меняются.
Экспорт недопустимого keepalive или несовместимого IPsec/FastPath явно обозначен как шаблон: вместо готовой неверной команды выводятся <KEEPALIVE_SECONDS>, <KEEPALIVE_RETRIES>, <ALLOW_FAST_PATH> и пояснения. Скрытый PSK сохраняет прежний <IPSEC_PSK>. Валидные наблюдаемые значения и escaping не изменены. ReUI primitives и тема не затронуты.
Проверки: production SQL/API18 на собственной ограниченной DB/role, native HTTP fixture; DB/role/container удалены. Профиль live-maps, GRE export/schema/network-map units, TypeScript/build/ESLint прошли. E2E10: FastPath при включении IPsec, прежние PSK/keepalive/reader export и несовместимый снимок на1440/320. Source478/527 и compiled1048 совпали; backend/frontend ux-gre212 healthy/running, auth211 сохранён.
Live: по одному собственному отключённому GRE с PSK на каждом CHR без явных keepalive/FastPath; native10s,10 и FastPath=false подтверждены, конфликт PATCH400 сохраняет состояние. Четыре UI GRE/Filters на1440/320, без UI writes/errors. Оба интерфейса удалены; пароли не менялись. Это проверка конфигурации/API/интерфейса, не data plane.
Первый deploy preflight обнаружил старое имя отчёта gre212-keepalive-result.json. Публичная копия названа compatibility с сохранением originalReportedFilename; содержимое18 cases и cleanup проверено. До успешного deploy preflight стенд оставался на211, поэтому преждевременный live create получил старый502 и был очищен; финальная проверка началась после health и прошла. На стенде очищен только неиспользуемый Docker build cache старше часа; runtime и rollback images сохранены.
Протоколы: [SQL/API18](ux-ui/acceptance/gre212-compatibility-result.json), [профили](ux-ui/acceptance/gre212-profile-2026-10-13.json), [E2E10](ux-ui/acceptance/gre212-e2e-2026-10-13.json), [native/UI/cleanup](ux-ui/acceptance/gre212-native-live-2026-10-13.json), [source](ux-ui/acceptance/source212-result.json), [compiled](ux-ui/acceptance/compiled212-result.json), [deployment](ux-ui/acceptance/gre212-deployment-2026-10-13.json).
Следующий213: GRE exporter всегда использует /ip/address/add, даже для уже поддерживаемого приложением внутреннего IPv6. Исправить family и проверить собственные ULA без обещания public IPv6/terminal import.
+5 -1
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10
Актуальное продолжение 2026-10-13: блок 211 завершён. Закрыт анонимный обход JWT и section RBAC через encoded URL: проверяется маршрут Fastify, HEAD наследует GET policy, OSPF parameter routes сохраняют права. Пройдены auth42, production SQL/API29 и live26; тестовые DB/role/users удалены. Backend ux-auth211/source477/compiled1048, frontend ux-gre210. Следующий212 — совместимость GRE FastPath/PSK и шаблон экспорта недопустимого keepalive. Этап12.5 открыт.
Актуальное продолжение 2026-10-13: блок 212 завершён. GRE с PSK по умолчанию отключает FastPath; явный конфликт получает400. Форма и экспорт учитывают совместимость и недопустимый keepalive. SQL/API18, E2E10 и live GRE/Filters UI4 прошли; два собственных интерфейса удалены. Backend/frontend ux-gre212; source478/527 и compiled1048 совпали. Auth-исправление211 сохранено. Следующий213 — выбор IPv4/IPv6-команды в GRE экспорте. Этап12.5 открыт.
| Параметр | Проверенное состояние |
| --- | --- |
@@ -2302,3 +2302,7 @@ Production compiled SQL/API29 на собственной ограниченно
Следующий212: GRE create с PSK и опущенным FastPath, explicit incompatible combination, экспорт недопустимого/неизвестного keepalive. 12.5 остаётся открытой по внешней матрице.
## 12.5.212 — GRE PSK/FastPath (2026-10-13)
Результат, проверки и ограничения: [полная запись212](ux-ui-progress.md#125212--совместимость-gre-pskfastpath-и-шаблоны-экспорта-2026-10-13). Runtime ux-gre212, SQL/API18, E2E10, native/UI и cleanup подтверждены; auth211 сохранён.
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,121 @@
{
"date": "2026-10-13",
"block": "12.5.212",
"database": "mm_accept_166_1791901979711",
"cases": [
{
"field": "keepaliveInterval",
"value": 0,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveInterval",
"value": -1,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveInterval",
"value": 1.5,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveInterval",
"value": 4294967296,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveRetries",
"value": 0,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveRetries",
"value": -1,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveRetries",
"value": 1.5,
"status": 400,
"nativeCalls": 0
},
{
"field": "keepaliveRetries",
"value": 4294967296,
"status": 400,
"nativeCalls": 0
},
{
"operation": "create",
"params": {},
"keepalive": "10s,10",
"status": 201
},
{
"operation": "create",
"params": {
"keepaliveInterval": 60
},
"keepalive": "60s,10",
"status": 201
},
{
"operation": "create",
"params": {
"keepaliveRetries": 3
},
"keepalive": "10s,3",
"status": 201
},
{
"operation": "create",
"params": {
"keepaliveInterval": 90,
"keepaliveRetries": 7
},
"keepalive": "90s,7",
"status": 201
},
{
"operation": "patch-other-field",
"nativeKeepalivePreserved": "1m,3",
"status": 200
},
{
"operation": "read-minutes",
"seconds": 60,
"status": 200
},
{
"operation": "psk-create-default-fastpath",
"status": 201,
"fastPath": "no"
},
{
"operation": "explicit-psk-fastpath-conflict",
"status": 400,
"nativeCalls": 0
},
{
"operation": "existing-psk-fastpath-conflict",
"status": 400,
"nativeWrites": 0
},
{
"operation": "enable-psk-with-omitted-fastpath",
"status": 200,
"fastPath": "no"
}
],
"scope": "Production compiled GRE create/patch using isolated PostgreSQL and native HTTP fixture",
"passed": true,
"nativeWrites": 7,
"originalReportedFilename": "gre212-keepalive-result.json",
"databaseAndRoleRemoved": true
}
@@ -0,0 +1,35 @@
{
"date": "2026-10-13",
"block": "12.5.212",
"runtime": "ux-gre212",
"services": {
"backend": {
"image": "mmapp-test/backend:ux-gre212",
"imageId": "sha256:15b4c11614737ff12d4a4d40ed585324dabcace1f96342f0e966266125b78a1b",
"running": true,
"health": "healthy"
},
"frontend": {
"image": "mmapp-test/frontend:ux-gre212",
"imageId": "sha256:0cb19a8d93d5056870372c48bd189246da1e198bf32fc471861a6e70b0111ccf",
"running": true,
"health": null
}
},
"rollbackTags": {
"MMAPP_IMAGE_TAG": "ux-gre210",
"BACKEND_IMAGE_TAG": "ux-auth211"
},
"chrPasswordsChanged": false,
"source": [
{
"kind": "backend",
"matched": 478
},
{
"kind": "frontend",
"matched": 527
}
],
"compiledMatched": 1048
}
@@ -0,0 +1,24 @@
{
"date": "2026-10-13",
"block": "12.5.212",
"uniqueCases": 10,
"groups": [
{
"startTime": "2026-10-13T14:28:25.941Z",
"duration": 20683.281000000003,
"expected": 8,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
{
"startTime": "2026-10-13T14:29:34.020Z",
"duration": 9814.235,
"expected": 2,
"skipped": 0,
"unexpected": 0,
"flaky": 0
}
],
"apiMocked": true
}
@@ -0,0 +1,69 @@
{
"date": "2026-10-13",
"block": "12.5.212",
"runtime": "ux-gre212",
"cases": [
{
"host": "194.226.121.150",
"defaultCreateStatus": 201,
"defaultNative": "10s,10",
"pskDefaultFastPathDisabled": true,
"explicitFastPathConflictStatus": 400,
"minutesReadAsSeconds": 60,
"patchOtherFieldPreservesNative": "1m,3",
"invalidIntervalStatus": 400,
"invalidPatchLeavesNativeUnchanged": true,
"catalogSeconds": 60
},
{
"host": "104.165.244.7",
"defaultCreateStatus": 201,
"defaultNative": "10s,10",
"pskDefaultFastPathDisabled": true,
"explicitFastPathConflictStatus": 400,
"minutesReadAsSeconds": 60,
"patchOtherFieldPreservesNative": "1m,3",
"invalidIntervalStatus": 400,
"invalidPatchLeavesNativeUnchanged": true,
"catalogSeconds": 60
}
],
"uiCases": [
{
"section": "gre",
"width": 1440,
"actualNativeRead": true,
"minutesFormSeconds": 60,
"invalidInputPreservesForm": true,
"mutationRequests": 0,
"pageErrors": 0
},
{
"section": "filters",
"width": 1440,
"actualNativeRead": true,
"configuredGreCatalogAccepted": true,
"mutationRequests": 0,
"pageErrors": 0
},
{
"section": "gre",
"width": 320,
"actualNativeRead": true,
"minutesFormSeconds": 60,
"invalidInputPreservesForm": true,
"mutationRequests": 0,
"pageErrors": 0
},
{
"section": "filters",
"width": 320,
"actualNativeRead": true,
"configuredGreCatalogAccepted": true,
"mutationRequests": 0,
"pageErrors": 0
}
],
"scope": "Disabled own native GRE; defaults, unit parsing, patch preservation and UI validation; not data-plane",
"cleanupCompleted": true
}
@@ -0,0 +1,15 @@
{
"date": "2026-10-13",
"block": "12.5.212",
"commands": [
"npm --prefix backend run test:live-maps",
"npx tsx lib/gre-export.test.ts",
"npx tsx lib/filters-response.test.ts",
"npx tsx lib/network-map-response.test.ts"
],
"passed": true,
"frontendTypecheckPassed": true,
"backendBuildPassed": true,
"eslintErrors": 0,
"scope": "GRE compatibility and export; existing catalog consumers retained"
}
@@ -0,0 +1,14 @@
{
"date": "2026-10-13",
"block": "12.5.212",
"kinds": [
{
"kind": "backend",
"matched": 478
},
{
"kind": "frontend",
"matched": 527
}
]
}