fix(routeros): подтверждать импорт сертификата и ограничить REST-сессии
This commit is contained in:
1 parent
9178ff2ccb
commit
c683e1b2c1
17 files changed
+662
-12
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Актуальное продолжение 2026-10-15: 256 — collector renewal использует подтверждённые dates без выдуманного revocation status; профиль/build/lint прошли, backend ux-certificates256/source528/dist1080 healthy. Реальное scheduler renewal выполнилось, served TLS SHA-256 сменился и совпал с новым native leaf, но импорт создал2 одинаковых имени: общая приёмка не завершена. Все own native/DNS/jobs/settings очищены/восстановлены; оба CHR доступны. Следующий257 — запрет ложного success при неоднозначном импорте и стратегия уникальной замены; отдельно лимит REST logins6. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 257 — post-import guard проверяет unique name/X509 SHA-256/private-key и оба SSL assignments; REST pools ограничивают запросы/закрывают idle sessions. Профили9 certificates/2 ros-file и общая backend regression прошли; backend ux-certificates257/source530/dist1084 healthy. Actual duplicate payload256 rejected applyCalls0. Controlled live parallel read12 на2CHR без login errors. Следующий258 — безопасная unique replacement без duplicate logical names; реальная повторная выдача после guard ещё не принята. Этап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).
|
||||
|
||||
@@ -18,6 +18,22 @@ OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/bro
|
||||
|
||||
BFD85: Up/Full/own route/Ping,4 live UI и loss/withdrawal/recovery приняты; exact own cleanup8 коллекций×2 passed. Withdrawal5,245ms не подтверждает sub-second BFD timing; этот вопрос открыт. Runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-bfd-loss-2026-10-09.json).
|
||||
|
||||
## 12.5.257 — достоверный импорт сертификата и ограничение REST-сессий (2026-10-15)
|
||||
|
||||
После реального256 ACME issuer больше не считает HTTP ACK достаточным. applyVerifiedCertificateToServices перед назначением читает raw /certificate, требует unique logical name, SHA-256 ожидаемого выданного X509 leaf и private-key; после применения повторяет проверку leaf и читает configured /ip/service, подтверждая www-ssl/api-ssl enabled с нужным сертификатом. Missing/ambiguous/wrong fingerprint/private-key и неизвестное/ошибочное назначение приводят к failed через existing runner, не к done. Auto-delete импортированных объектов или rollback неизвестной частичной операции не добавлялся; operator видит ошибку и должен учитывать фактические изменения.
|
||||
|
||||
Новый certificate-installation.test:6 invalid imports never apply,4 service mismatches и post-apply ambiguity не дают успеха, positive подтверждённого apply проходит. Certificate profile теперь9 scripts. Production compiled helper проверен на точном captured REST JSON256 с2 одинаковыми именами: rejected/applyCalls0/networkCalls0. Это проверка настоящего payload, не новый RouterOS import/CA order. [Captured guard](ux-ui/acceptance/certificates257-captured-duplicate.json).
|
||||
|
||||
Initial intermediate postguard deployment ещё давал ошибки устройств в live assertion из-за известного login cap6. Общий transport теперь использует отдельные shared HTTP/HTTPS agents с keepAlivefalse/maxSockets2: ограничение на pool/origin в каждом протоколе, idle connections не занимают login slots. GET/POST/PUT/PATCH/DELETE/file HTTP пути используют эти pools; TLS rejectUnauthorized остаётся исходным verifySsl, credentials/HTTP ошибки/abort/deadlines/replay rules не менялись. Не заявляем глобальный cap между backend instances, hostname aliases или другими SSH/WinBox клиентами. HTTP/HTTPS pools отдельные; нагрузочная live проверка относится к HTTP REST на двух CHR.
|
||||
|
||||
Transport тесты:12 запросов из3 разных client instances peak2, idle sockets0; queued PUT deadline истёк до отправки и позже не дошёл до устройства. Старые interrupted/malformed/explicit rejection/no write replay случаи сохранены. test:ros-file (2scripts, response suite10 cases),9 certificate scripts, contracts/backend build и scoped ESLint passed. Initial TCP tests внутри sandbox были отвергнуты окружением, тот же suite с разрешённым локальным TCP passed. Ошибка ignored packaging replace256→257 затронула слово sha256 и остановилась до upload/build; corrected script сохранил алгоритм SHA-256, final manifest подтверждён.
|
||||
|
||||
Из-за изменения общей транспортной основы выполнена полная backend profile regression на собственной SQL БД/ограниченной роли, не production DSN. Все25 profiles passed; private logs остаются вне Git. Пропущенные специальные SQL/UDP ветки перечислены в report, не объявляются выполненными: их наличие не скрывается общим passed. Own test DB/role/container удалены и отсутствие подтверждено. [Full regression](ux-ui/acceptance/certificates257-full-regression.json).
|
||||
|
||||
Финальные production/acceptance images собраны; source530/compiled1084 matched и backend ux-certificates257 healthy. Frontend ux-certificates251/DB/Portal сохранены. После полной регрессии backend перезапущен на final image; [deployment](ux-ui/acceptance/certificates257-deployment.json). Настоящий Portal/read1440/390: оба CHR без ошибок, overflow/JS errors/writes0. [Live UI](ux-ui/acceptance/certificates257-live-ui.json). Дополнительно12 параллельных state reads через реальный API,2CHR в каждом ответе, все200/errornull, без RouterOS login ошибок [live load](ux-ui/acceptance/certificates257-live-load.json). Это конкретный controlled burst, не длительная нагрузочная/многопроцессная приёмка.
|
||||
|
||||
Новых ACME/DNS/native объектов257 не создавали; cleanup256 сохранён, passwords unchanged. Guard исправляет ложный success при duplicate import, но ещё не реализует безопасную уникальную замену: при следующем старом алгоритме duplicate name будет честно failed. Следующий258 — стратегия unique imported generation, verified rebinding и сохранение старого working leaf до подтверждения нового, затем реальная приёмка с fingerprint/TLS и полным откатом в разрешённом scope. Без этого пункт renewal остаётся открытым.
|
||||
|
||||
## 12.5.256 — реальный scheduler renewal, дубликаты native имён и полный откат (2026-10-15)
|
||||
|
||||
Начат2026-10-14, завершён2026-10-15 по Новосибирску. Пятичасовой лимит сбросился, недельный остался ограниченным. По действующему разрешению254 снят новый native/SQL baseline, own jobs/certificates/DNS0, token/zone/account проверены. Первый UI issue exact mmt253-8e62a941.pngs.top/manual →done, trusted TLS/private-key/native SHA-256 подтверждены. [UI](ux-ui/acceptance/acme256-live-ui.json), [before](ux-ui/acceptance/acme256-tls-before.json).
|
||||
|
||||
+17
-1
@@ -1,9 +1,25 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-15: 256 — collector renewal использует подтверждённые dates без выдуманного revocation status; профиль/build/lint прошли, backend ux-certificates256/source528/dist1080 healthy. Реальное scheduler renewal выполнилось, served TLS SHA-256 сменился и совпал с новым native leaf, но импорт создал2 одинаковых имени: общая приёмка не завершена. Все own native/DNS/jobs/settings очищены/восстановлены; оба CHR доступны. Следующий257 — запрет ложного success при неоднозначном импорте и стратегия уникальной замены; отдельно лимит REST logins6. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 257 — post-import guard проверяет unique name/X509 SHA-256/private-key и оба SSL assignments; REST pools ограничивают запросы/закрывают idle sessions. Профили9 certificates/2 ros-file и общая backend regression прошли; backend ux-certificates257/source530/dist1084 healthy. Actual duplicate payload256 rejected applyCalls0. Controlled live parallel read12 на2CHR без login errors. Следующий258 — безопасная unique replacement без duplicate logical names; реальная повторная выдача после guard ещё не принята. Этап12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-14. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
## 12.5.257 — достоверный импорт сертификата и ограничение REST-сессий (2026-10-15)
|
||||
|
||||
После реального256 ACME issuer больше не считает HTTP ACK достаточным. applyVerifiedCertificateToServices перед назначением читает raw /certificate, требует unique logical name, SHA-256 ожидаемого выданного X509 leaf и private-key; после применения повторяет проверку leaf и читает configured /ip/service, подтверждая www-ssl/api-ssl enabled с нужным сертификатом. Missing/ambiguous/wrong fingerprint/private-key и неизвестное/ошибочное назначение приводят к failed через existing runner, не к done. Auto-delete импортированных объектов или rollback неизвестной частичной операции не добавлялся; operator видит ошибку и должен учитывать фактические изменения.
|
||||
|
||||
Новый certificate-installation.test:6 invalid imports never apply,4 service mismatches и post-apply ambiguity не дают успеха, positive подтверждённого apply проходит. Certificate profile теперь9 scripts. Production compiled helper проверен на точном captured REST JSON256 с2 одинаковыми именами: rejected/applyCalls0/networkCalls0. Это проверка настоящего payload, не новый RouterOS import/CA order. [Captured guard](ux-ui/acceptance/certificates257-captured-duplicate.json).
|
||||
|
||||
Initial intermediate postguard deployment ещё давал ошибки устройств в live assertion из-за известного login cap6. Общий transport теперь использует отдельные shared HTTP/HTTPS agents с keepAlivefalse/maxSockets2: ограничение на pool/origin в каждом протоколе, idle connections не занимают login slots. GET/POST/PUT/PATCH/DELETE/file HTTP пути используют эти pools; TLS rejectUnauthorized остаётся исходным verifySsl, credentials/HTTP ошибки/abort/deadlines/replay rules не менялись. Не заявляем глобальный cap между backend instances, hostname aliases или другими SSH/WinBox клиентами. HTTP/HTTPS pools отдельные; нагрузочная live проверка относится к HTTP REST на двух CHR.
|
||||
|
||||
Transport тесты:12 запросов из3 разных client instances peak2, idle sockets0; queued PUT deadline истёк до отправки и позже не дошёл до устройства. Старые interrupted/malformed/explicit rejection/no write replay случаи сохранены. test:ros-file (2scripts, response suite10 cases),9 certificate scripts, contracts/backend build и scoped ESLint passed. Initial TCP tests внутри sandbox были отвергнуты окружением, тот же suite с разрешённым локальным TCP passed. Ошибка ignored packaging replace256→257 затронула слово sha256 и остановилась до upload/build; corrected script сохранил алгоритм SHA-256, final manifest подтверждён.
|
||||
|
||||
Из-за изменения общей транспортной основы выполнена полная backend profile regression на собственной SQL БД/ограниченной роли, не production DSN. Все25 profiles passed; private logs остаются вне Git. Пропущенные специальные SQL/UDP ветки перечислены в report, не объявляются выполненными: их наличие не скрывается общим passed. Own test DB/role/container удалены и отсутствие подтверждено. [Full regression](ux-ui/acceptance/certificates257-full-regression.json).
|
||||
|
||||
Финальные production/acceptance images собраны; source530/compiled1084 matched и backend ux-certificates257 healthy. Frontend ux-certificates251/DB/Portal сохранены. После полной регрессии backend перезапущен на final image; [deployment](ux-ui/acceptance/certificates257-deployment.json). Настоящий Portal/read1440/390: оба CHR без ошибок, overflow/JS errors/writes0. [Live UI](ux-ui/acceptance/certificates257-live-ui.json). Дополнительно12 параллельных state reads через реальный API,2CHR в каждом ответе, все200/errornull, без RouterOS login ошибок [live load](ux-ui/acceptance/certificates257-live-load.json). Это конкретный controlled burst, не длительная нагрузочная/многопроцессная приёмка.
|
||||
|
||||
Новых ACME/DNS/native объектов257 не создавали; cleanup256 сохранён, passwords unchanged. Guard исправляет ложный success при duplicate import, но ещё не реализует безопасную уникальную замену: при следующем старом алгоритме duplicate name будет честно failed. Следующий258 — стратегия unique imported generation, verified rebinding и сохранение старого working leaf до подтверждения нового, затем реальная приёмка с fingerprint/TLS и полным откатом в разрешённом scope. Без этого пункт renewal остаётся открытым.
|
||||
|
||||
## 12.5.256 — реальный scheduler renewal, дубликаты native имён и полный откат (2026-10-15)
|
||||
|
||||
Начат2026-10-14, завершён2026-10-15 по Новосибирску. Пятичасовой лимит сбросился, недельный остался ограниченным. По действующему разрешению254 снят новый native/SQL baseline, own jobs/certificates/DNS0, token/zone/account проверены. Первый UI issue exact mmt253-8e62a941.pngs.top/manual →done, trusted TLS/private-key/native SHA-256 подтверждены. [UI](ux-ui/acceptance/acme256-live-ui.json), [before](ux-ui/acceptance/acme256-tls-before.json).
|
||||
|
||||
+18
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-15: 256 — collector renewal использует подтверждённые dates без выдуманного revocation status; профиль/build/lint прошли, backend ux-certificates256/source528/dist1080 healthy. Реальное scheduler renewal выполнилось, served TLS SHA-256 сменился и совпал с новым native leaf, но импорт создал2 одинаковых имени: общая приёмка не завершена. Все own native/DNS/jobs/settings очищены/восстановлены; оба CHR доступны. Следующий257 — запрет ложного success при неоднозначном импорте и стратегия уникальной замены; отдельно лимит REST logins6. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 257 — post-import guard проверяет unique name/X509 SHA-256/private-key и оба SSL assignments; REST pools ограничивают запросы/закрывают idle sessions. Профили9 certificates/2 ros-file и общая backend regression прошли; backend ux-certificates257/source530/dist1084 healthy. Actual duplicate payload256 rejected applyCalls0. Controlled live parallel read12 на2CHR без login errors. Следующий258 — безопасная unique replacement без duplicate logical names; реальная повторная выдача после guard ещё не принята. Этап12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,23 @@
|
||||
| 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–256 в записанных scopes; real renewal/TLS256 выполнен, дубликаты native имён и REST concurrency остаются открыты в записанных scopes. Runtime backend ux-certificates256/frontend ux-certificates251. Общая регрессия249 и профиль сертификатов252 прошли; реальный renewal остаётся открытым. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная12.3.83; внешняя12.5 открыта, блоки1–257 в записанных scopes; guard/REST pool257 проверены, unique replacement258 остаётся открытой в записанных scopes. Runtime backend ux-certificates257/frontend ux-certificates251. Общая регрессия257 и профиль сертификатов252 прошли; реальный renewal остаётся открытым. |
|
||||
|
||||
## 12.5.257 — достоверный импорт сертификата и ограничение REST-сессий (2026-10-15)
|
||||
|
||||
После реального256 ACME issuer больше не считает HTTP ACK достаточным. applyVerifiedCertificateToServices перед назначением читает raw /certificate, требует unique logical name, SHA-256 ожидаемого выданного X509 leaf и private-key; после применения повторяет проверку leaf и читает configured /ip/service, подтверждая www-ssl/api-ssl enabled с нужным сертификатом. Missing/ambiguous/wrong fingerprint/private-key и неизвестное/ошибочное назначение приводят к failed через existing runner, не к done. Auto-delete импортированных объектов или rollback неизвестной частичной операции не добавлялся; operator видит ошибку и должен учитывать фактические изменения.
|
||||
|
||||
Новый certificate-installation.test:6 invalid imports never apply,4 service mismatches и post-apply ambiguity не дают успеха, positive подтверждённого apply проходит. Certificate profile теперь9 scripts. Production compiled helper проверен на точном captured REST JSON256 с2 одинаковыми именами: rejected/applyCalls0/networkCalls0. Это проверка настоящего payload, не новый RouterOS import/CA order. [Captured guard](ux-ui/acceptance/certificates257-captured-duplicate.json).
|
||||
|
||||
Initial intermediate postguard deployment ещё давал ошибки устройств в live assertion из-за известного login cap6. Общий transport теперь использует отдельные shared HTTP/HTTPS agents с keepAlivefalse/maxSockets2: ограничение на pool/origin в каждом протоколе, idle connections не занимают login slots. GET/POST/PUT/PATCH/DELETE/file HTTP пути используют эти pools; TLS rejectUnauthorized остаётся исходным verifySsl, credentials/HTTP ошибки/abort/deadlines/replay rules не менялись. Не заявляем глобальный cap между backend instances, hostname aliases или другими SSH/WinBox клиентами. HTTP/HTTPS pools отдельные; нагрузочная live проверка относится к HTTP REST на двух CHR.
|
||||
|
||||
Transport тесты:12 запросов из3 разных client instances peak2, idle sockets0; queued PUT deadline истёк до отправки и позже не дошёл до устройства. Старые interrupted/malformed/explicit rejection/no write replay случаи сохранены. test:ros-file (2scripts, response suite10 cases),9 certificate scripts, contracts/backend build и scoped ESLint passed. Initial TCP tests внутри sandbox были отвергнуты окружением, тот же suite с разрешённым локальным TCP passed. Ошибка ignored packaging replace256→257 затронула слово sha256 и остановилась до upload/build; corrected script сохранил алгоритм SHA-256, final manifest подтверждён.
|
||||
|
||||
Из-за изменения общей транспортной основы выполнена полная backend profile regression на собственной SQL БД/ограниченной роли, не production DSN. Все25 profiles passed; private logs остаются вне Git. Пропущенные специальные SQL/UDP ветки перечислены в report, не объявляются выполненными: их наличие не скрывается общим passed. Own test DB/role/container удалены и отсутствие подтверждено. [Full regression](ux-ui/acceptance/certificates257-full-regression.json).
|
||||
|
||||
Финальные production/acceptance images собраны; source530/compiled1084 matched и backend ux-certificates257 healthy. Frontend ux-certificates251/DB/Portal сохранены. После полной регрессии backend перезапущен на final image; [deployment](ux-ui/acceptance/certificates257-deployment.json). Настоящий Portal/read1440/390: оба CHR без ошибок, overflow/JS errors/writes0. [Live UI](ux-ui/acceptance/certificates257-live-ui.json). Дополнительно12 параллельных state reads через реальный API,2CHR в каждом ответе, все200/errornull, без RouterOS login ошибок [live load](ux-ui/acceptance/certificates257-live-load.json). Это конкретный controlled burst, не длительная нагрузочная/многопроцессная приёмка.
|
||||
|
||||
Новых ACME/DNS/native объектов257 не создавали; cleanup256 сохранён, passwords unchanged. Guard исправляет ложный success при duplicate import, но ещё не реализует безопасную уникальную замену: при следующем старом алгоритме duplicate name будет честно failed. Следующий258 — стратегия unique imported generation, verified rebinding и сохранение старого working leaf до подтверждения нового, затем реальная приёмка с fingerprint/TLS и полным откатом в разрешённом scope. Без этого пункт renewal остаётся открытым.
|
||||
|
||||
## 12.5.256 — реальный scheduler renewal, дубликаты native имён и полный откат (2026-10-15)
|
||||
|
||||
|
||||
@@ -1,10 +1,26 @@
|
||||
# Оставшаяся внешняя приёмка — 2026-10-14
|
||||
|
||||
Актуальное продолжение 2026-10-15: 256 — collector renewal использует подтверждённые dates без выдуманного revocation status; профиль/build/lint прошли, backend ux-certificates256/source528/dist1080 healthy. Реальное scheduler renewal выполнилось, served TLS SHA-256 сменился и совпал с новым native leaf, но импорт создал2 одинаковых имени: общая приёмка не завершена. Все own native/DNS/jobs/settings очищены/восстановлены; оба CHR доступны. Следующий257 — запрет ложного success при неоднозначном импорте и стратегия уникальной замены; отдельно лимит REST logins6. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 257 — post-import guard проверяет unique name/X509 SHA-256/private-key и оба SSL assignments; REST pools ограничивают запросы/закрывают idle sessions. Профили9 certificates/2 ros-file и общая backend regression прошли; backend ux-certificates257/source530/dist1084 healthy. Actual duplicate payload256 rejected applyCalls0. Controlled live parallel read12 на2CHR без login errors. Следующий258 — безопасная unique replacement без duplicate logical names; реальная повторная выдача после guard ещё не принята. Этап12.5 открыт.
|
||||
|
||||
Это актуальная матрица после 12.5.256. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
Это актуальная матрица после 12.5.257. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
|
||||
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-certificates256`, frontend `ux-certificates251`; 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-certificates257`, frontend `ux-certificates251`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
|
||||
|
||||
## 12.5.257 — достоверный импорт сертификата и ограничение REST-сессий (2026-10-15)
|
||||
|
||||
После реального256 ACME issuer больше не считает HTTP ACK достаточным. applyVerifiedCertificateToServices перед назначением читает raw /certificate, требует unique logical name, SHA-256 ожидаемого выданного X509 leaf и private-key; после применения повторяет проверку leaf и читает configured /ip/service, подтверждая www-ssl/api-ssl enabled с нужным сертификатом. Missing/ambiguous/wrong fingerprint/private-key и неизвестное/ошибочное назначение приводят к failed через existing runner, не к done. Auto-delete импортированных объектов или rollback неизвестной частичной операции не добавлялся; operator видит ошибку и должен учитывать фактические изменения.
|
||||
|
||||
Новый certificate-installation.test:6 invalid imports never apply,4 service mismatches и post-apply ambiguity не дают успеха, positive подтверждённого apply проходит. Certificate profile теперь9 scripts. Production compiled helper проверен на точном captured REST JSON256 с2 одинаковыми именами: rejected/applyCalls0/networkCalls0. Это проверка настоящего payload, не новый RouterOS import/CA order. [Captured guard](ux-ui/acceptance/certificates257-captured-duplicate.json).
|
||||
|
||||
Initial intermediate postguard deployment ещё давал ошибки устройств в live assertion из-за известного login cap6. Общий transport теперь использует отдельные shared HTTP/HTTPS agents с keepAlivefalse/maxSockets2: ограничение на pool/origin в каждом протоколе, idle connections не занимают login slots. GET/POST/PUT/PATCH/DELETE/file HTTP пути используют эти pools; TLS rejectUnauthorized остаётся исходным verifySsl, credentials/HTTP ошибки/abort/deadlines/replay rules не менялись. Не заявляем глобальный cap между backend instances, hostname aliases или другими SSH/WinBox клиентами. HTTP/HTTPS pools отдельные; нагрузочная live проверка относится к HTTP REST на двух CHR.
|
||||
|
||||
Transport тесты:12 запросов из3 разных client instances peak2, idle sockets0; queued PUT deadline истёк до отправки и позже не дошёл до устройства. Старые interrupted/malformed/explicit rejection/no write replay случаи сохранены. test:ros-file (2scripts, response suite10 cases),9 certificate scripts, contracts/backend build и scoped ESLint passed. Initial TCP tests внутри sandbox были отвергнуты окружением, тот же suite с разрешённым локальным TCP passed. Ошибка ignored packaging replace256→257 затронула слово sha256 и остановилась до upload/build; corrected script сохранил алгоритм SHA-256, final manifest подтверждён.
|
||||
|
||||
Из-за изменения общей транспортной основы выполнена полная backend profile regression на собственной SQL БД/ограниченной роли, не production DSN. Все25 profiles passed; private logs остаются вне Git. Пропущенные специальные SQL/UDP ветки перечислены в report, не объявляются выполненными: их наличие не скрывается общим passed. Own test DB/role/container удалены и отсутствие подтверждено. [Full regression](ux-ui/acceptance/certificates257-full-regression.json).
|
||||
|
||||
Финальные production/acceptance images собраны; source530/compiled1084 matched и backend ux-certificates257 healthy. Frontend ux-certificates251/DB/Portal сохранены. После полной регрессии backend перезапущен на final image; [deployment](ux-ui/acceptance/certificates257-deployment.json). Настоящий Portal/read1440/390: оба CHR без ошибок, overflow/JS errors/writes0. [Live UI](ux-ui/acceptance/certificates257-live-ui.json). Дополнительно12 параллельных state reads через реальный API,2CHR в каждом ответе, все200/errornull, без RouterOS login ошибок [live load](ux-ui/acceptance/certificates257-live-load.json). Это конкретный controlled burst, не длительная нагрузочная/многопроцессная приёмка.
|
||||
|
||||
Новых ACME/DNS/native объектов257 не создавали; cleanup256 сохранён, passwords unchanged. Guard исправляет ложный success при duplicate import, но ещё не реализует безопасную уникальную замену: при следующем старом алгоритме duplicate name будет честно failed. Следующий258 — стратегия unique imported generation, verified rebinding и сохранение старого working leaf до подтверждения нового, затем реальная приёмка с fingerprint/TLS и полным откатом в разрешённом scope. Без этого пункт renewal остаётся открытым.
|
||||
|
||||
## 12.5.256 — реальный scheduler renewal, дубликаты native имён и полный откат (2026-10-15)
|
||||
|
||||
@@ -310,7 +326,7 @@ Portal offline JWT действует доexp после logout/role change; э
|
||||
|
||||
## Следующая последовательность — 2026-10-14
|
||||
|
||||
1. **Сертификаты257:** real scheduler renewal256 сменил TLS, но создаёт duplicate logical names. Исправить post-import verification/unique replacement; отдельно REST max concurrent logins6. Приёмка пока открыта.
|
||||
1. **Сертификаты258:** post-import verification/REST pool257 приняты в scopes; реализовать safe unique replacement и подтвердить реальное repeat renewal/TLS без duplicate logical names. Не считать защитный failed полной приёмкой renewal.
|
||||
2. **Профильный контроль:** для новых изменений выполнять затронутые SQL/API/UI проверки. Общая регрессия192 выполнена; не повторять её без изменений общей основы или нового основания.
|
||||
3. **Внешние зависимости:** Portal issuer/login/revoke, Telegram bot/chat/разрешённое сообщение, клиентские ОС, независимые WAN/public IPv6 и scale/multi-instance — отдельные группы по таблице выше. Ограничения текущего стенда не превращать в обещание приёмки всех конфигураций.
|
||||
|
||||
|
||||
+17
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-15: 256 — collector renewal использует подтверждённые dates без выдуманного revocation status; профиль/build/lint прошли, backend ux-certificates256/source528/dist1080 healthy. Реальное scheduler renewal выполнилось, served TLS SHA-256 сменился и совпал с новым native leaf, но импорт создал2 одинаковых имени: общая приёмка не завершена. Все own native/DNS/jobs/settings очищены/восстановлены; оба CHR доступны. Следующий257 — запрет ложного success при неоднозначном импорте и стратегия уникальной замены; отдельно лимит REST logins6. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 257 — post-import guard проверяет unique name/X509 SHA-256/private-key и оба SSL assignments; REST pools ограничивают запросы/закрывают idle sessions. Профили9 certificates/2 ros-file и общая backend regression прошли; backend ux-certificates257/source530/dist1084 healthy. Actual duplicate payload256 rejected applyCalls0. Controlled live parallel read12 на2CHR без login errors. Следующий258 — безопасная unique replacement без duplicate logical names; реальная повторная выдача после guard ещё не принята. Этап12.5 открыт.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -4152,6 +4152,22 @@ Real Portal/browser API, provider local verified: создан один job ро
|
||||
Runtime backend ux-backup234/frontend ux-routing218 healthy; новое application image для volume-only fix не требовалось. Пароли CHR не менялись, S3 mutations0 в235, configs body/JWT не опубликованы, private local manifest удалён. Исходные10 missing local files не восстановлены и records не удалены. Force-recreate — не host reboot/power loss/fsync/DR приёмка. Далее236 — UX недоступных local files, затем version retention границы и оставшиеся7 группы матрицы; multi-instance guard не принимается. Этап12.5 открыт.
|
||||
|
||||
|
||||
## 12.5.257 — достоверный импорт сертификата и ограничение REST-сессий (2026-10-15)
|
||||
|
||||
После реального256 ACME issuer больше не считает HTTP ACK достаточным. applyVerifiedCertificateToServices перед назначением читает raw /certificate, требует unique logical name, SHA-256 ожидаемого выданного X509 leaf и private-key; после применения повторяет проверку leaf и читает configured /ip/service, подтверждая www-ssl/api-ssl enabled с нужным сертификатом. Missing/ambiguous/wrong fingerprint/private-key и неизвестное/ошибочное назначение приводят к failed через existing runner, не к done. Auto-delete импортированных объектов или rollback неизвестной частичной операции не добавлялся; operator видит ошибку и должен учитывать фактические изменения.
|
||||
|
||||
Новый certificate-installation.test:6 invalid imports never apply,4 service mismatches и post-apply ambiguity не дают успеха, positive подтверждённого apply проходит. Certificate profile теперь9 scripts. Production compiled helper проверен на точном captured REST JSON256 с2 одинаковыми именами: rejected/applyCalls0/networkCalls0. Это проверка настоящего payload, не новый RouterOS import/CA order. [Captured guard](ux-ui/acceptance/certificates257-captured-duplicate.json).
|
||||
|
||||
Initial intermediate postguard deployment ещё давал ошибки устройств в live assertion из-за известного login cap6. Общий transport теперь использует отдельные shared HTTP/HTTPS agents с keepAlivefalse/maxSockets2: ограничение на pool/origin в каждом протоколе, idle connections не занимают login slots. GET/POST/PUT/PATCH/DELETE/file HTTP пути используют эти pools; TLS rejectUnauthorized остаётся исходным verifySsl, credentials/HTTP ошибки/abort/deadlines/replay rules не менялись. Не заявляем глобальный cap между backend instances, hostname aliases или другими SSH/WinBox клиентами. HTTP/HTTPS pools отдельные; нагрузочная live проверка относится к HTTP REST на двух CHR.
|
||||
|
||||
Transport тесты:12 запросов из3 разных client instances peak2, idle sockets0; queued PUT deadline истёк до отправки и позже не дошёл до устройства. Старые interrupted/malformed/explicit rejection/no write replay случаи сохранены. test:ros-file (2scripts, response suite10 cases),9 certificate scripts, contracts/backend build и scoped ESLint passed. Initial TCP tests внутри sandbox были отвергнуты окружением, тот же suite с разрешённым локальным TCP passed. Ошибка ignored packaging replace256→257 затронула слово sha256 и остановилась до upload/build; corrected script сохранил алгоритм SHA-256, final manifest подтверждён.
|
||||
|
||||
Из-за изменения общей транспортной основы выполнена полная backend profile regression на собственной SQL БД/ограниченной роли, не production DSN. Все25 profiles passed; private logs остаются вне Git. Пропущенные специальные SQL/UDP ветки перечислены в report, не объявляются выполненными: их наличие не скрывается общим passed. Own test DB/role/container удалены и отсутствие подтверждено. [Full regression](ux-ui/acceptance/certificates257-full-regression.json).
|
||||
|
||||
Финальные production/acceptance images собраны; source530/compiled1084 matched и backend ux-certificates257 healthy. Frontend ux-certificates251/DB/Portal сохранены. После полной регрессии backend перезапущен на final image; [deployment](ux-ui/acceptance/certificates257-deployment.json). Настоящий Portal/read1440/390: оба CHR без ошибок, overflow/JS errors/writes0. [Live UI](ux-ui/acceptance/certificates257-live-ui.json). Дополнительно12 параллельных state reads через реальный API,2CHR в каждом ответе, все200/errornull, без RouterOS login ошибок [live load](ux-ui/acceptance/certificates257-live-load.json). Это конкретный controlled burst, не длительная нагрузочная/многопроцессная приёмка.
|
||||
|
||||
Новых ACME/DNS/native объектов257 не создавали; cleanup256 сохранён, passwords unchanged. Guard исправляет ложный success при duplicate import, но ещё не реализует безопасную уникальную замену: при следующем старом алгоритме duplicate name будет честно failed. Следующий258 — стратегия unique imported generation, verified rebinding и сохранение старого working leaf до подтверждения нового, затем реальная приёмка с fingerprint/TLS и полным откатом в разрешённом scope. Без этого пункт renewal остаётся открытым.
|
||||
|
||||
## 12.5.256 — реальный scheduler renewal, дубликаты native имён и полный откат (2026-10-15)
|
||||
|
||||
Начат2026-10-14, завершён2026-10-15 по Новосибирску. Пятичасовой лимит сбросился, недельный остался ограниченным. По действующему разрешению254 снят новый native/SQL baseline, own jobs/certificates/DNS0, token/zone/account проверены. Первый UI issue exact mmt253-8e62a941.pngs.top/manual →done, trusted TLS/private-key/native SHA-256 подтверждены. [UI](ux-ui/acceptance/acme256-live-ui.json), [before](ux-ui/acceptance/acme256-tls-before.json).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-10
|
||||
|
||||
Актуальное продолжение 2026-10-15: 256 — collector renewal использует подтверждённые dates без выдуманного revocation status; профиль/build/lint прошли, backend ux-certificates256/source528/dist1080 healthy. Реальное scheduler renewal выполнилось, served TLS SHA-256 сменился и совпал с новым native leaf, но импорт создал2 одинаковых имени: общая приёмка не завершена. Все own native/DNS/jobs/settings очищены/восстановлены; оба CHR доступны. Следующий257 — запрет ложного success при неоднозначном импорте и стратегия уникальной замены; отдельно лимит REST logins6. Этап12.5 открыт.
|
||||
Актуальное продолжение 2026-10-15: 257 — post-import guard проверяет unique name/X509 SHA-256/private-key и оба SSL assignments; REST pools ограничивают запросы/закрывают idle sessions. Профили9 certificates/2 ros-file и общая backend regression прошли; backend ux-certificates257/source530/dist1084 healthy. Actual duplicate payload256 rejected applyCalls0. Controlled live parallel read12 на2CHR без login errors. Следующий258 — безопасная unique replacement без duplicate logical names; реальная повторная выдача после guard ещё не принята. Этап12.5 открыт.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -34,6 +34,22 @@ OSPF84: real GRE Full adjacency/private routes/Ping3/3 и4 live PC/320px URL/bro
|
||||
|
||||
BFD85: Up/Full/own route/Ping,4 live UI и loss/withdrawal/recovery приняты; exact own cleanup8 коллекций×2 passed. Withdrawal5,245ms не подтверждает sub-second BFD timing; этот вопрос открыт. Runtime routing83 без новой сборки. [Отчёт](ux-ui/acceptance/ospf-bfd-loss-2026-10-09.json).
|
||||
|
||||
## 12.5.257 — достоверный импорт сертификата и ограничение REST-сессий (2026-10-15)
|
||||
|
||||
После реального256 ACME issuer больше не считает HTTP ACK достаточным. applyVerifiedCertificateToServices перед назначением читает raw /certificate, требует unique logical name, SHA-256 ожидаемого выданного X509 leaf и private-key; после применения повторяет проверку leaf и читает configured /ip/service, подтверждая www-ssl/api-ssl enabled с нужным сертификатом. Missing/ambiguous/wrong fingerprint/private-key и неизвестное/ошибочное назначение приводят к failed через existing runner, не к done. Auto-delete импортированных объектов или rollback неизвестной частичной операции не добавлялся; operator видит ошибку и должен учитывать фактические изменения.
|
||||
|
||||
Новый certificate-installation.test:6 invalid imports never apply,4 service mismatches и post-apply ambiguity не дают успеха, positive подтверждённого apply проходит. Certificate profile теперь9 scripts. Production compiled helper проверен на точном captured REST JSON256 с2 одинаковыми именами: rejected/applyCalls0/networkCalls0. Это проверка настоящего payload, не новый RouterOS import/CA order. [Captured guard](ux-ui/acceptance/certificates257-captured-duplicate.json).
|
||||
|
||||
Initial intermediate postguard deployment ещё давал ошибки устройств в live assertion из-за известного login cap6. Общий transport теперь использует отдельные shared HTTP/HTTPS agents с keepAlivefalse/maxSockets2: ограничение на pool/origin в каждом протоколе, idle connections не занимают login slots. GET/POST/PUT/PATCH/DELETE/file HTTP пути используют эти pools; TLS rejectUnauthorized остаётся исходным verifySsl, credentials/HTTP ошибки/abort/deadlines/replay rules не менялись. Не заявляем глобальный cap между backend instances, hostname aliases или другими SSH/WinBox клиентами. HTTP/HTTPS pools отдельные; нагрузочная live проверка относится к HTTP REST на двух CHR.
|
||||
|
||||
Transport тесты:12 запросов из3 разных client instances peak2, idle sockets0; queued PUT deadline истёк до отправки и позже не дошёл до устройства. Старые interrupted/malformed/explicit rejection/no write replay случаи сохранены. test:ros-file (2scripts, response suite10 cases),9 certificate scripts, contracts/backend build и scoped ESLint passed. Initial TCP tests внутри sandbox были отвергнуты окружением, тот же suite с разрешённым локальным TCP passed. Ошибка ignored packaging replace256→257 затронула слово sha256 и остановилась до upload/build; corrected script сохранил алгоритм SHA-256, final manifest подтверждён.
|
||||
|
||||
Из-за изменения общей транспортной основы выполнена полная backend profile regression на собственной SQL БД/ограниченной роли, не production DSN. Все25 profiles passed; private logs остаются вне Git. Пропущенные специальные SQL/UDP ветки перечислены в report, не объявляются выполненными: их наличие не скрывается общим passed. Own test DB/role/container удалены и отсутствие подтверждено. [Full regression](ux-ui/acceptance/certificates257-full-regression.json).
|
||||
|
||||
Финальные production/acceptance images собраны; source530/compiled1084 matched и backend ux-certificates257 healthy. Frontend ux-certificates251/DB/Portal сохранены. После полной регрессии backend перезапущен на final image; [deployment](ux-ui/acceptance/certificates257-deployment.json). Настоящий Portal/read1440/390: оба CHR без ошибок, overflow/JS errors/writes0. [Live UI](ux-ui/acceptance/certificates257-live-ui.json). Дополнительно12 параллельных state reads через реальный API,2CHR в каждом ответе, все200/errornull, без RouterOS login ошибок [live load](ux-ui/acceptance/certificates257-live-load.json). Это конкретный controlled burst, не длительная нагрузочная/многопроцессная приёмка.
|
||||
|
||||
Новых ACME/DNS/native объектов257 не создавали; cleanup256 сохранён, passwords unchanged. Guard исправляет ложный success при duplicate import, но ещё не реализует безопасную уникальную замену: при следующем старом алгоритме duplicate name будет честно failed. Следующий258 — стратегия unique imported generation, verified rebinding и сохранение старого working leaf до подтверждения нового, затем реальная приёмка с fingerprint/TLS и полным откатом в разрешённом scope. Без этого пункт renewal остаётся открытым.
|
||||
|
||||
## 12.5.256 — реальный scheduler renewal, дубликаты native имён и полный откат (2026-10-15)
|
||||
|
||||
Начат2026-10-14, завершён2026-10-15 по Новосибирску. Пятичасовой лимит сбросился, недельный остался ограниченным. По действующему разрешению254 снят новый native/SQL baseline, own jobs/certificates/DNS0, token/zone/account проверены. Первый UI issue exact mmt253-8e62a941.pngs.top/manual →done, trusted TLS/private-key/native SHA-256 подтверждены. [UI](ux-ui/acceptance/acme256-live-ui.json), [before](ux-ui/acceptance/acme256-tls-before.json).
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
{"capturedRows":2,"duplicateLogicalNames":true,"rejected":true,"applyCalls":0,"networkCalls":0}
|
||||
@@ -0,0 +1,32 @@
|
||||
{
|
||||
"date": "2026-10-15",
|
||||
"block": "12.5.257",
|
||||
"backendImage": "mmapp-test/backend:ux-certificates257",
|
||||
"frontendImage": "mmapp-test/frontend:ux-certificates251",
|
||||
"backendHealth": "healthy",
|
||||
"sourceMatched": 530,
|
||||
"compiled": {
|
||||
"matched": 1084,
|
||||
"missing": 0,
|
||||
"different": 0
|
||||
},
|
||||
"productionBuild": "passed",
|
||||
"acceptanceBuild": "passed",
|
||||
"profileScripts": {
|
||||
"certificates": 9,
|
||||
"rosFile": 2
|
||||
},
|
||||
"localTcpResponseCases": 10,
|
||||
"fullBackendProfiles": 25,
|
||||
"fullBackendDurationMs": 384057,
|
||||
"ownedSqlCleanupConfirmed": true,
|
||||
"scopedLint": "passed",
|
||||
"finalDeploymentExit": 0,
|
||||
"capturedDuplicateGuard": {
|
||||
"rejected": true,
|
||||
"applyCalls": 0,
|
||||
"networkCalls": 0
|
||||
},
|
||||
"newAcmeOrders": 0,
|
||||
"uniqueRenewalReplacementImplemented": false
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"date": "2026-10-15",
|
||||
"block": "12.5.257",
|
||||
"scope": "full backend profile list on owned isolated PostgreSQL; no production DSN",
|
||||
"database": "mm_accept_166_1791998256460",
|
||||
"profiles": [
|
||||
{
|
||||
"profile": "test:probes",
|
||||
"passed": true,
|
||||
"durationMs": 28041,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:exec",
|
||||
"passed": true,
|
||||
"durationMs": 8427,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:alert-engine",
|
||||
"passed": true,
|
||||
"durationMs": 23141,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:alerts-telegram",
|
||||
"passed": true,
|
||||
"durationMs": 15935,
|
||||
"skippedLineCount": 10,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:auth",
|
||||
"passed": true,
|
||||
"durationMs": 11217,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:wireguard",
|
||||
"passed": true,
|
||||
"durationMs": 13537,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:ipsec",
|
||||
"passed": true,
|
||||
"durationMs": 16641,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:traffic-rate",
|
||||
"passed": true,
|
||||
"durationMs": 51851,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:traffic-flow",
|
||||
"passed": true,
|
||||
"durationMs": 53259,
|
||||
"skippedLineCount": 2,
|
||||
"unavailableSqlBranches": [
|
||||
"Monthly SQL: skip (requires an owned isolated database)",
|
||||
"IPv6 UDP/worker/SQL: skip (requires an owned isolated database)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"profile": "test:users",
|
||||
"passed": true,
|
||||
"durationMs": 7589,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:pg",
|
||||
"passed": true,
|
||||
"durationMs": 10389,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:backups",
|
||||
"passed": true,
|
||||
"durationMs": 12214,
|
||||
"skippedLineCount": 8,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:scheduler",
|
||||
"passed": true,
|
||||
"durationMs": 6700,
|
||||
"skippedLineCount": 5,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:live-maps",
|
||||
"passed": true,
|
||||
"durationMs": 28413,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:ospf-optimizer",
|
||||
"passed": true,
|
||||
"durationMs": 6984,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:recursive-routes",
|
||||
"passed": true,
|
||||
"durationMs": 4071,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:config-sync",
|
||||
"passed": true,
|
||||
"durationMs": 18996,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": [
|
||||
"network-disabled-server.test.ts: invalid IDs passed; own SQL/disabled API checks skipped (MMAPP_OWN_TEST_DB required)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"profile": "test:ros-file",
|
||||
"passed": true,
|
||||
"durationMs": 2076,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:containers",
|
||||
"passed": true,
|
||||
"durationMs": 8354,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:certificates",
|
||||
"passed": true,
|
||||
"durationMs": 16931,
|
||||
"skippedLineCount": 3,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:netflow-settings",
|
||||
"passed": true,
|
||||
"durationMs": 4969,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:netflow-purge",
|
||||
"passed": true,
|
||||
"durationMs": 2548,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:evolution",
|
||||
"passed": true,
|
||||
"durationMs": 5874,
|
||||
"skippedLineCount": 1,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:system-database",
|
||||
"passed": true,
|
||||
"durationMs": 19953,
|
||||
"skippedLineCount": 9,
|
||||
"unavailableSqlBranches": []
|
||||
},
|
||||
{
|
||||
"profile": "test:server-privacy",
|
||||
"passed": true,
|
||||
"durationMs": 5947,
|
||||
"skippedLineCount": 0,
|
||||
"unavailableSqlBranches": []
|
||||
}
|
||||
],
|
||||
"passed": true,
|
||||
"ownedDatabaseAndRoleRemoved": true,
|
||||
"testContainerRemoved": true
|
||||
}
|
||||
@@ -0,0 +1,191 @@
|
||||
{
|
||||
"date": "2026-10-15",
|
||||
"block": "12.5.257",
|
||||
"realPortal": true,
|
||||
"noMocks": true,
|
||||
"nonAuthApiWrites": 0,
|
||||
"concurrentCatalogReads": 12,
|
||||
"durationMs": 6763,
|
||||
"samples": [
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificateCount": 0
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"date": "2026-10-15",
|
||||
"block": "12.5.257",
|
||||
"realPortalLogin": true,
|
||||
"noMocks": true,
|
||||
"results": [
|
||||
{
|
||||
"path": "/api/certificates/state",
|
||||
"status": 200,
|
||||
"servers": [
|
||||
{
|
||||
"serverId": "1",
|
||||
"error": null,
|
||||
"certificates": 0
|
||||
},
|
||||
{
|
||||
"serverId": "2",
|
||||
"error": null,
|
||||
"certificates": 0
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "/api/certificates/renew-settings",
|
||||
"status": 200,
|
||||
"renewEnabled": true
|
||||
}
|
||||
],
|
||||
"views": [
|
||||
{
|
||||
"width": 1440,
|
||||
"overflow": false
|
||||
},
|
||||
{
|
||||
"width": 390,
|
||||
"overflow": false
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"nonAuthApiWrites": 0
|
||||
}
|
||||
Reference in new issue
Block a user