fix(alerts): учитывать ошибки реального источника GRE

This commit is contained in:
Denozordec committed 2026-10-14 01:16:19 +07:00
1 parent 8b60ab040a
commit 9c4a0992d7
15 files changed
+370 -22

No files matched your search

+5 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-14: блок218 завершён. Заполненные BGP state/type/prefix RX и OSPF route type переведены на читаемые ReUI Badge/основной цвет чисел. Baseline22 violations; fixed104 scoped cells0, E2E22, TypeScript/ESLint/build прошли. Own GRE/OSPF/BGP поднялись, UI8 прошли, own objects удалены и static projection10×2 совпал. Frontend ux-routing218/source527 matched, backend ux-wan217. Следующий219 — скрытые ошибки GRE source snapshots для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок219 завершён. GRE source snapshots больше не подавляет per-device ошибки; повреждённые records/duplicate native IDs отклоняются. BGP observations сохраняются при GRE failure. Четыре профиля, SQL/native10, compiled actual source2own GRE и UI1440/320 прошли; own DB/roles/tunnels удалены. Backend ux-gre219/compiled1052/source486 matched, frontend ux-routing218. Следующий220 — неизвестные/некорректные GRE operational flags в snapshots. Этап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).
@@ -2599,3 +2599,7 @@ Read failures/malformed collections дают502, выключенные устр
## 12.5.218 — заполненные routing tables (2026-10-14)
BGP/OSPF contrast: baseline22/fixed104 cells0 violations; E2E22 и real UI8 passed. Own GRE/OSPF/BGP objects удалены; статическая сверка10×2 прошла. Подробности и границы — [журнал](ux-ui-progress.md). Frontend ux-routing218, backend ux-wan217; следующий219 — GRE snapshot source errors.
## 12.5.219 — GRE snapshot source (2026-10-14)
Ошибки GRE source отражаются в snapshot; BGP при GRE failure сохраняется. SQL/native10 и actual compiled source2own GRE/UI passed; временные объекты удалены. Подробности и границы — [журнал](ux-ui-progress.md). Backend ux-gre219, frontend ux-routing218; следующий220 — неизвестные GRE flags.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-14: блок218 завершён. Заполненные BGP state/type/prefix RX и OSPF route type переведены на читаемые ReUI Badge/основной цвет чисел. Baseline22 violations; fixed104 scoped cells0, E2E22, TypeScript/ESLint/build прошли. Own GRE/OSPF/BGP поднялись, UI8 прошли, own objects удалены и static projection10×2 совпал. Frontend ux-routing218/source527 matched, backend ux-wan217. Следующий219 — скрытые ошибки GRE source snapshots для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок219 завершён. GRE source snapshots больше не подавляет per-device ошибки; повреждённые records/duplicate native IDs отклоняются. BGP observations сохраняются при GRE failure. Четыре профиля, SQL/native10, compiled actual source2own GRE и UI1440/320 прошли; own DB/roles/tunnels удалены. Backend ux-gre219/compiled1052/source486 matched, frontend ux-routing218. Следующий220 — неизвестные/некорректные GRE operational flags в snapshots. Этап12.5 открыт.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-13. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+11 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации
Актуальное продолжение 2026-10-14: блок218 завершён. Заполненные BGP state/type/prefix RX и OSPF route type переведены на читаемые ReUI Badge/основной цвет чисел. Baseline22 violations; fixed104 scoped cells0, E2E22, TypeScript/ESLint/build прошли. Own GRE/OSPF/BGP поднялись, UI8 прошли, own objects удалены и static projection10×2 совпал. Frontend ux-routing218/source527 matched, backend ux-wan217. Следующий219 — скрытые ошибки GRE source snapshots для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок219 завершён. GRE source snapshots больше не подавляет per-device ошибки; повреждённые records/duplicate native IDs отклоняются. BGP observations сохраняются при GRE failure. Четыре профиля, SQL/native10, compiled actual source2own GRE и UI1440/320 прошли; own DB/roles/tunnels удалены. Backend ux-gre219/compiled1052/source486 matched, frontend ux-routing218. Следующий220 — неизвестные/некорректные GRE operational flags в snapshots. Этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -38,6 +38,16 @@
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–196 и ограничения ниже. Runtime backend/frontend ux-peak196. |
## 12.5.219 — ошибки реального GRE source для snapshots (2026-10-14)
fetchGreTunnelLiveRows подавлял native failures через[] и collector принимал пустой/неполный источник без ошибки. Теперь per-device reads settled независимо, все ошибки агрегируются по устройствам и неполный источник отклоняется; collector записывает GRE source error и сохраняет независимо прочитанный BGP. Raw GRE должен быть корректной коллекцией string records с native .id/name; duplicate IDs отклоняются. Правила сигналов/доставки и существующая трактовка running/disabled пока не менялись: неизвестные operational flags — следующий220.
Четыре профильных скрипта и build прошли. Baseline ux-wan217 и fixed ux-gre219: по10 production SQL/native-fixture случаев populated/empty/GRE partial/all failed/BGP partial/both partial/malformed/duplicate/disabled/recovery. Baseline принял повреждённые и duplicate записи без source error; fixed отмечает неполный GRE observation, BGP control сохраняется. Native writes0, disabled Home Router calls0; own DB/roles удалены.
Backend ux-gre219 compiled1052/source486 matched, healthy; frontend ux-routing218 сохранён. Через настоящий Portal API созданы own disabled GRE2. Native disabled=true/running=false, application status=down. Actual compiled collectGreBgpSnapshotOnce в отдельном read-only процессе контейнера прочитал lab PostgreSQL/native и дал две own down rows, sourceErrors0; scheduler history не записывался, это не auth test самого collector. GRE UI1440/320 увидел own rows без page errors/mutations. Туннели удалены, absence native/API проверен, пароли не менялись; Telegram не отправлялся. Полный durable alert delivery и physical fault этим блоком не принимаются.
Протоколы: [baseline](ux-ui/acceptance/gre219-baseline.json), [fixed](ux-ui/acceptance/gre219-fixed.json), [build](ux-ui/acceptance/gre219-build-proof-2026-10-14.json), [deployment](ux-ui/acceptance/gre219-deployment-2026-10-14.json), [native source/UI/cleanup](ux-ui/acceptance/gre219-native-live-2026-10-14.json). Следующий220 — не подтверждать degraded/up/down по отсутствующим/повреждённым GRE flags; валидные native состояния сохранить.
## 12.5.218 — контраст заполненных BGP и OSPF таблиц (2026-10-14)
Baseline104 explicitly scrolled cell checks:22 нарушений в light на1440/320. BGP Established3,31:1, Active2,96:1, Idle4,21:1, prefix RX3,65:1; OSPF O E2 3,23:1. Ручные state/type spans заменены штатным ReUI Badge invert-light; BGP состояния дополнительно различаются семантическим индикатором и прежним текстом. Protocol type — текстовая категория без оценки здоровья. Prefix RX читает основной цвет. OSPF type Badge общий для строк, counts и легенды; vendor components/theme не менялись.
+7 -3
View File
@@ -1,10 +1,10 @@
# Оставшаяся внешняя приёмка — 2026-10-13
Актуальное продолжение 2026-10-14: блок218 завершён. Заполненные BGP state/type/prefix RX и OSPF route type переведены на читаемые ReUI Badge/основной цвет чисел. Baseline22 violations; fixed104 scoped cells0, E2E22, TypeScript/ESLint/build прошли. Own GRE/OSPF/BGP поднялись, UI8 прошли, own objects удалены и static projection10×2 совпал. Frontend ux-routing218/source527 matched, backend ux-wan217. Следующий219 — скрытые ошибки GRE source snapshots для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок219 завершён. GRE source snapshots больше не подавляет per-device ошибки; повреждённые records/duplicate native IDs отклоняются. BGP observations сохраняются при GRE failure. Четыре профиля, SQL/native10, compiled actual source2own GRE и UI1440/320 прошли; own DB/roles/tunnels удалены. Backend ux-gre219/compiled1052/source486 matched, frontend ux-routing218. Следующий220 — неизвестные/некорректные GRE operational flags в snapshots. Этап12.5 открыт.
Это актуальная матрица после 12.5.218. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Это актуальная матрица после 12.5.219. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-wan217`, frontend `ux-routing218`; 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 `ux-gre219`, frontend `ux-routing218`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
| Раздел | Подтверждено | Осталось / условие завершения |
| --- | --- | --- |
@@ -1517,3 +1517,7 @@ Read failures/malformed collections дают502, выключенные устр
## 12.5.218 — заполненные routing tables (2026-10-14)
BGP/OSPF contrast: baseline22/fixed104 cells0 violations; E2E22 и real UI8 passed. Own GRE/OSPF/BGP objects удалены; статическая сверка10×2 прошла. Подробности и границы — [журнал](ux-ui-progress.md). Frontend ux-routing218, backend ux-wan217; следующий219 — GRE snapshot source errors.
## 12.5.219 — GRE snapshot source (2026-10-14)
Ошибки GRE source отражаются в snapshot; BGP при GRE failure сохраняется. SQL/native10 и actual compiled source2own GRE/UI passed; временные объекты удалены. Подробности и границы — [журнал](ux-ui-progress.md). Backend ux-gre219, frontend ux-routing218; следующий220 — неизвестные GRE flags.
+12 -1
View File
@@ -1,6 +1,6 @@
# Этап 12: итоговая приёмка UX/UI
Актуальное продолжение 2026-10-14: блок218 завершён. Заполненные BGP state/type/prefix RX и OSPF route type переведены на читаемые ReUI Badge/основной цвет чисел. Baseline22 violations; fixed104 scoped cells0, E2E22, TypeScript/ESLint/build прошли. Own GRE/OSPF/BGP поднялись, UI8 прошли, own objects удалены и static projection10×2 совпал. Frontend ux-routing218/source527 matched, backend ux-wan217. Следующий219 — скрытые ошибки GRE source snapshots для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок219 завершён. GRE source snapshots больше не подавляет per-device ошибки; повреждённые records/duplicate native IDs отклоняются. BGP observations сохраняются при GRE failure. Четыре профиля, SQL/native10, compiled actual source2own GRE и UI1440/320 прошли; own DB/roles/tunnels удалены. Backend ux-gre219/compiled1052/source486 matched, frontend ux-routing218. Следующий220 — неизвестные/некорректные GRE operational flags в snapshots. Этап12.5 открыт.
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
@@ -3967,3 +3967,14 @@ Fixed104 scoped cells0 violations, E2E22 (8 contrast fixtures + BGP data13 + OSP
Протоколы: [contrast](ux-ui/acceptance/routing218-contrast-2026-10-14.json), [source](ux-ui/acceptance/routing218-source-proof-2026-10-14.json), [deployment](ux-ui/acceptance/routing218-deployment-2026-10-14.json), [storage cleanup](ux-ui/acceptance/routing218-storage-cleanup.json), [native/UI/cleanup](ux-ui/acceptance/routing218-native-live-2026-10-14.json). Следующий219 — GRE источник snapshots: сейчас fetchGreTunnelLiveRows подавляет ошибки устройств и сообщает успешный пустой результат.
## 12.5.219 — ошибки реального GRE source для snapshots (2026-10-14)
fetchGreTunnelLiveRows подавлял native failures через[] и collector принимал пустой/неполный источник без ошибки. Теперь per-device reads settled независимо, все ошибки агрегируются по устройствам и неполный источник отклоняется; collector записывает GRE source error и сохраняет независимо прочитанный BGP. Raw GRE должен быть корректной коллекцией string records с native .id/name; duplicate IDs отклоняются. Правила сигналов/доставки и существующая трактовка running/disabled пока не менялись: неизвестные operational flags — следующий220.
Четыре профильных скрипта и build прошли. Baseline ux-wan217 и fixed ux-gre219: по10 production SQL/native-fixture случаев populated/empty/GRE partial/all failed/BGP partial/both partial/malformed/duplicate/disabled/recovery. Baseline принял повреждённые и duplicate записи без source error; fixed отмечает неполный GRE observation, BGP control сохраняется. Native writes0, disabled Home Router calls0; own DB/roles удалены.
Backend ux-gre219 compiled1052/source486 matched, healthy; frontend ux-routing218 сохранён. Через настоящий Portal API созданы own disabled GRE2. Native disabled=true/running=false, application status=down. Actual compiled collectGreBgpSnapshotOnce в отдельном read-only процессе контейнера прочитал lab PostgreSQL/native и дал две own down rows, sourceErrors0; scheduler history не записывался, это не auth test самого collector. GRE UI1440/320 увидел own rows без page errors/mutations. Туннели удалены, absence native/API проверен, пароли не менялись; Telegram не отправлялся. Полный durable alert delivery и physical fault этим блоком не принимаются.
Протоколы: [baseline](ux-ui/acceptance/gre219-baseline.json), [fixed](ux-ui/acceptance/gre219-fixed.json), [build](ux-ui/acceptance/gre219-build-proof-2026-10-14.json), [deployment](ux-ui/acceptance/gre219-deployment-2026-10-14.json), [native source/UI/cleanup](ux-ui/acceptance/gre219-native-live-2026-10-14.json). Следующий220 — не подтверждать degraded/up/down по отсутствующим/повреждённым GRE flags; валидные native состояния сохранить.
+5 -1
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10
Актуальное продолжение 2026-10-14: блок218 завершён. Заполненные BGP state/type/prefix RX и OSPF route type переведены на читаемые ReUI Badge/основной цвет чисел. Baseline22 violations; fixed104 scoped cells0, E2E22, TypeScript/ESLint/build прошли. Own GRE/OSPF/BGP поднялись, UI8 прошли, own objects удалены и static projection10×2 совпал. Frontend ux-routing218/source527 matched, backend ux-wan217. Следующий219 — скрытые ошибки GRE source snapshots для оповещений. Этап12.5 открыт.
Актуальное продолжение 2026-10-14: блок219 завершён. GRE source snapshots больше не подавляет per-device ошибки; повреждённые records/duplicate native IDs отклоняются. BGP observations сохраняются при GRE failure. Четыре профиля, SQL/native10, compiled actual source2own GRE и UI1440/320 прошли; own DB/roles/tunnels удалены. Backend ux-gre219/compiled1052/source486 matched, frontend ux-routing218. Следующий220 — неизвестные/некорректные GRE operational flags в snapshots. Этап12.5 открыт.
| Параметр | Проверенное состояние |
| --- | --- |
@@ -2330,3 +2330,7 @@ Read failures/malformed collections дают502, выключенные устр
## 12.5.218 — заполненные routing tables (2026-10-14)
BGP/OSPF contrast: baseline22/fixed104 cells0 violations; E2E22 и real UI8 passed. Own GRE/OSPF/BGP objects удалены; статическая сверка10×2 прошла. Подробности и границы — [журнал](ux-ui-progress.md). Frontend ux-routing218, backend ux-wan217; следующий219 — GRE snapshot source errors.
## 12.5.219 — GRE snapshot source (2026-10-14)
Ошибки GRE source отражаются в snapshot; BGP при GRE failure сохраняется. SQL/native10 и actual compiled source2own GRE/UI passed; временные объекты удалены. Подробности и границы — [журнал](ux-ui-progress.md). Backend ux-gre219, frontend ux-routing218; следующий220 — неизвестные GRE flags.
@@ -0,0 +1,83 @@
{
"date": "2026-10-14",
"block": "12.5.219",
"baseline": true,
"database": "mm_accept_166_1791915041693",
"cases": [
{
"phase": "populated",
"greWritten": 2,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "empty",
"greWritten": 0,
"bgpWritten": 0,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "gre-partial",
"greWritten": 1,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "gre-failed",
"greWritten": 0,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "bgp-partial",
"greWritten": 2,
"bgpWritten": 0,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "both-partial",
"greWritten": 1,
"bgpWritten": 0,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "malformed",
"greWritten": 2,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "duplicate",
"greWritten": 3,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "disabled",
"greWritten": 0,
"bgpWritten": 0,
"sourceErrors": 0,
"nativeCalls": 0
},
{
"phase": "recovery",
"greWritten": 2,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
}
],
"scope": "Actual compiled GRE/BGP sources and snapshot collector, owned SQL/native HTTP fixture; no API auth claim",
"passed": true,
"nativeWrites": 0,
"disabledHomeRouterCalls": 0,
"ownedDatabaseAndRoleRemoved": true
}
@@ -0,0 +1,22 @@
{
"date": "2026-10-14",
"block": "12.5.219",
"compiled": {
"matched": 1052,
"missing": 0,
"different": 0
},
"source": [
{
"kind": "backend",
"matched": 486
}
],
"profileScripts": [
"gre-tunnels-live",
"gre-bgp-snapshot-collector",
"gre-bgp-snapshot-history",
"collector-source-signals"
],
"productionCases": 10
}
@@ -0,0 +1,21 @@
{
"date": "2026-10-14",
"block": "12.5.219",
"backendSourceMatched": 486,
"compiledMatched": 1052,
"frontendChanged": false,
"services": {
"backend": {
"image": "mmapp-test/backend:ux-gre219",
"imageId": "sha256:c4938acbdb5c4c4b46d90f2ba356d673927b3a9a78fe4f44217089abbcfe9115",
"running": true,
"health": "healthy"
},
"frontend": {
"image": "mmapp-test/frontend:ux-routing218",
"imageId": "sha256:ec658b9da88c19d60987be5bfc0c15fb339a0310d7a42dc761b40a70a3428c5a",
"running": true,
"health": null
}
}
}
+83
View File
@@ -0,0 +1,83 @@
{
"date": "2026-10-14",
"block": "12.5.219",
"baseline": false,
"database": "mm_accept_166_1791915166786",
"cases": [
{
"phase": "populated",
"greWritten": 2,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "empty",
"greWritten": 0,
"bgpWritten": 0,
"sourceErrors": 0,
"nativeCalls": 4
},
{
"phase": "gre-partial",
"greWritten": 0,
"bgpWritten": 2,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "gre-failed",
"greWritten": 0,
"bgpWritten": 2,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "bgp-partial",
"greWritten": 2,
"bgpWritten": 0,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "both-partial",
"greWritten": 0,
"bgpWritten": 0,
"sourceErrors": 2,
"nativeCalls": 4
},
{
"phase": "malformed",
"greWritten": 0,
"bgpWritten": 2,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "duplicate",
"greWritten": 0,
"bgpWritten": 2,
"sourceErrors": 1,
"nativeCalls": 4
},
{
"phase": "disabled",
"greWritten": 0,
"bgpWritten": 0,
"sourceErrors": 0,
"nativeCalls": 0
},
{
"phase": "recovery",
"greWritten": 2,
"bgpWritten": 2,
"sourceErrors": 0,
"nativeCalls": 4
}
],
"scope": "Actual compiled GRE/BGP sources and snapshot collector, owned SQL/native HTTP fixture; no API auth claim",
"passed": true,
"nativeWrites": 0,
"disabledHomeRouterCalls": 0,
"ownedDatabaseAndRoleRemoved": true
}
@@ -0,0 +1,62 @@
{
"date": "2026-10-14",
"block": "12.5.219",
"backend": "ux-gre219",
"frontend": "ux-routing218",
"nativeCases": [
{
"host": "194.226.121.150",
"nativeGetStatus": 200,
"applicationStatus": "down",
"nativeDisabled": "true",
"nativeRunning": "false",
"nativeIdPresent": true,
"nativeNamePresent": true
},
{
"host": "104.165.244.7",
"nativeGetStatus": 200,
"applicationStatus": "down",
"nativeDisabled": "true",
"nativeRunning": "false",
"nativeIdPresent": true,
"nativeNamePresent": true
}
],
"source": {
"date": "2026-10-14",
"name": "own219-gre-1791915208465",
"passed": true,
"mode": "Actual compiled helper reads lab PostgreSQL and native GRE/BGP; no scheduler history write",
"ownedGreRows": [
{
"targetLabel": "own219-gre-1791915208465-1 / CHR",
"status": "down"
},
{
"targetLabel": "own219-gre-1791915208465-2 / CHR",
"status": "down"
}
],
"sourceErrors": 0
},
"ui": [
{
"width": 1440,
"ownedNativeRowVisible": true,
"pageErrors": 0,
"mutationRequests": 0
},
{
"width": 320,
"ownedNativeRowVisible": true,
"pageErrors": 0,
"mutationRequests": 0
}
],
"realPortalJWT": true,
"apiMocks": false,
"cleanupCompleted": true,
"scope": "Actual compiled collector reads lab DB/native disabled GRE; no durable snapshot write, fault injection or data-plane claim",
"passwordsUnchanged": true
}