From 9603048bd84f90e8b07bb1603495531ebe15a34e Mon Sep 17 00:00:00 2001 From: Denozordec Date: Mon, 12 Oct 2026 23:02:31 +0700 Subject: [PATCH] =?UTF-8?q?chore(docs):=20=D0=B7=D0=B0=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=B3=D1=80?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=86=D1=83=20=D0=B4=D0=BE=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=81=D0=BA=D0=BE=D1=80=D0=BE=D1=81=D1=82=D0=B8?= =?UTF-8?q?=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20=D0=BF=D1=80=D0=BE=D0=BF?= =?UTF-8?q?=D1=83=D1=81=D0=BA=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ux-ui-external-acceptance.md | 17 ++++++++-- docs/ux-ui-plan.md | 6 ++-- docs/ux-ui-progress.md | 15 +++++++- docs/ux-ui-remaining-acceptance.md | 15 +++++++- docs/ux-ui-stage-12.md | 15 +++++++- docs/ux-ui-test-server.md | 15 +++++++- .../traffic-gap-baseline-2026-10-12.json | 34 +++++++++++++++++++ 7 files changed, 108 insertions(+), 9 deletions(-) create mode 100644 docs/ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 7a1c1e6b..7aab8f1a 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.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). @@ -696,7 +696,7 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). @@ -2171,3 +2171,16 @@ TypeScript/backend build/ESLint прошли.4 E2E11.2s:2 новых на1440/32 Backend TypeScript/build, [source455/524](ux-ui/acceptance/traffic-membership-source-2026-10-12.json), [compiled1040](ux-ui/acceptance/traffic-membership-compiled-2026-10-12.json) SHA256 parity passed. Backend ux-history184 [healthy/imageId verified](ux-ui/acceptance/traffic-membership-runtime-2026-10-12.json), frontend ux-warning183 без исходных изменений/повторной сборки. Только backend.env tag; rollback both ux-warning183. [Actual API](ux-ui/acceptance/traffic-membership-api-2026-10-12.json)/[production browser1440/320](ux-ui/acceptance/traffic-membership-deployed-2026-10-12.json) passed с actual live/receipt labels, без ошибок/overflow. Checker не менял credentials/config и не отключал реальные интерфейсы CHR.2 CHR доступны по последнему native182; новые native commands API-checker0, messages0. Следующий185 — оценка покрытия периода при пропусках и смене идентичности/пересоздании интерфейса. Подтверждённые bytes остаются учтённым объёмом, не полным billing за период; восстановление идентичности по одному имени не доказано.12.5/внешние интеграции открыты. Локальный коммит без push. + +## 12.5.185 — граница доверия скорости после пропусков: baseline (2026-10-12) + +Блок начат; реализация и приёмка не завершены. [Чистый read-only пример](ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json) проверил один и тот же достоверный delta1MiB между двумя counters с интервалами30s,90s,1h,24h. Учтённый объём во всех случаях1MiB — корректное свойство counter difference. Но observations.rxNow=true также для среднего за1h/24h; длительность последнего интервала пока не влияет на доверие текущей скорости. Это не native monitor-traffic: среднее за интервал не доказывает instantaneous rate в конце интервала.4 baseline cases не являются4 новыми принятыми production сценариями. + +| Интервал | Текущий mask сейчас | Что проверить | +| --- | --- | --- | +|30s/90s | true | допустимый предел относительно trafficSettings.intervalSec | +|1h/24h | true | текущая скорость unknown при слишком длинном интервале; history и known bytes сохраняются | + +Точный следующий шаг: передавать длительность последней пары measurements в provenance и ограничить current counter-derived rate согласованным пределом относительно collector period. Аналогичный guard нужен в snapshot collector, чтобы новое чтение после длительного сбоя не объявляло старое среднее текущей скоростью. Подтвердить normal/threshold/long gap/recovery/reset на собственном SQL/HTTP и UI. Не подменять average/unknown нулём и не менять actual SSE monitor rate. Отдельно остаётся неоднозначность пересоздания интерфейса с прежним именем и увеличившимся counter: существующая sample identity не доказывает непрерывность. + +Стенд остаётся backend ux-history184/frontend ux-warning183, source/runtime184 не менялись. Аудит не обращался к CHR/DB, writes0/native commands0, пароли/конфигурация не менялись. Состояние сохранено локальным коммитом без push для продолжения185 после сброса лимита. diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index 0efda2e2..8b459e61 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,12 +1,12 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-12. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. ## Актуальная точка продолжения — 2026-10-12 -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. Этапы0–11 завершены в локальных границах журнала. История выполненных внешних блоков и доказательства сохранены в [журнале](ux-ui-stage-12.md) и [протоколе](ux-ui-external-acceptance.md). Реальная Telegram доставка, Portal SSO, multi-instance и оставшиеся профильные сетевые ограничения открыты. @@ -371,6 +371,6 @@ flowchart LR ## 12.5.77 — основной блок IPsec (2026-10-09) -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md). diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index 095321df..7c09b6fc 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -38,6 +38,19 @@ | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–168 и ограничения ниже. Runtime backend ux-month149/frontend ux-sessions150. | +## 12.5.185 — граница доверия скорости после пропусков: baseline (2026-10-12) + +Блок начат; реализация и приёмка не завершены. [Чистый read-only пример](ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json) проверил один и тот же достоверный delta1MiB между двумя counters с интервалами30s,90s,1h,24h. Учтённый объём во всех случаях1MiB — корректное свойство counter difference. Но observations.rxNow=true также для среднего за1h/24h; длительность последнего интервала пока не влияет на доверие текущей скорости. Это не native monitor-traffic: среднее за интервал не доказывает instantaneous rate в конце интервала.4 baseline cases не являются4 новыми принятыми production сценариями. + +| Интервал | Текущий mask сейчас | Что проверить | +| --- | --- | --- | +|30s/90s | true | допустимый предел относительно trafficSettings.intervalSec | +|1h/24h | true | текущая скорость unknown при слишком длинном интервале; history и known bytes сохраняются | + +Точный следующий шаг: передавать длительность последней пары measurements в provenance и ограничить current counter-derived rate согласованным пределом относительно collector period. Аналогичный guard нужен в snapshot collector, чтобы новое чтение после длительного сбоя не объявляло старое среднее текущей скоростью. Подтвердить normal/threshold/long gap/recovery/reset на собственном SQL/HTTP и UI. Не подменять average/unknown нулём и не менять actual SSE monitor rate. Отдельно остаётся неоднозначность пересоздания интерфейса с прежним именем и увеличившимся counter: существующая sample identity не доказывает непрерывность. + +Стенд остаётся backend ux-history184/frontend ux-warning183, source/runtime184 не менялись. Аудит не обращался к CHR/DB, writes0/native commands0, пароли/конфигурация не менялись. Состояние сохранено локальным коммитом без push для продолжения185 после сброса лимита. + ## 12.5.184 — сохранение истории после отключения интерфейса (2026-10-12) [Read-only baseline](ux-ui/acceptance/traffic-membership-baseline-2026-10-12.json) воспроизвёл потерю истории: ether1 имеет2048 known bytes, ether2 — measured0; когда последнее состояние ether1 inactive или disabled, серверная сумма становится0, тогда как explicit interface detail сохраняет2048. Active control даёт2048 в обоих случаях. Это следствие фильтра по последнему running/disabled, а не ошибка RouterOS counters. diff --git a/docs/ux-ui-remaining-acceptance.md b/docs/ux-ui-remaining-acceptance.md index dca3d936..0559829d 100644 --- a/docs/ux-ui-remaining-acceptance.md +++ b/docs/ux-ui-remaining-acceptance.md @@ -1,6 +1,6 @@ # Оставшаяся внешняя приёмка — 2026-10-12 -Это актуальная матрица после 12.5.184. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. +Это актуальная матрица после 12.5.185. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-history184`, frontend `ux-warning183`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. @@ -1086,3 +1086,16 @@ TypeScript/backend build/ESLint прошли.4 E2E11.2s:2 новых на1440/32 Backend TypeScript/build, [source455/524](ux-ui/acceptance/traffic-membership-source-2026-10-12.json), [compiled1040](ux-ui/acceptance/traffic-membership-compiled-2026-10-12.json) SHA256 parity passed. Backend ux-history184 [healthy/imageId verified](ux-ui/acceptance/traffic-membership-runtime-2026-10-12.json), frontend ux-warning183 без исходных изменений/повторной сборки. Только backend.env tag; rollback both ux-warning183. [Actual API](ux-ui/acceptance/traffic-membership-api-2026-10-12.json)/[production browser1440/320](ux-ui/acceptance/traffic-membership-deployed-2026-10-12.json) passed с actual live/receipt labels, без ошибок/overflow. Checker не менял credentials/config и не отключал реальные интерфейсы CHR.2 CHR доступны по последнему native182; новые native commands API-checker0, messages0. Следующий185 — оценка покрытия периода при пропусках и смене идентичности/пересоздании интерфейса. Подтверждённые bytes остаются учтённым объёмом, не полным billing за период; восстановление идентичности по одному имени не доказано.12.5/внешние интеграции открыты. Локальный коммит без push. + +## 12.5.185 — граница доверия скорости после пропусков: baseline (2026-10-12) + +Блок начат; реализация и приёмка не завершены. [Чистый read-only пример](ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json) проверил один и тот же достоверный delta1MiB между двумя counters с интервалами30s,90s,1h,24h. Учтённый объём во всех случаях1MiB — корректное свойство counter difference. Но observations.rxNow=true также для среднего за1h/24h; длительность последнего интервала пока не влияет на доверие текущей скорости. Это не native monitor-traffic: среднее за интервал не доказывает instantaneous rate в конце интервала.4 baseline cases не являются4 новыми принятыми production сценариями. + +| Интервал | Текущий mask сейчас | Что проверить | +| --- | --- | --- | +|30s/90s | true | допустимый предел относительно trafficSettings.intervalSec | +|1h/24h | true | текущая скорость unknown при слишком длинном интервале; history и known bytes сохраняются | + +Точный следующий шаг: передавать длительность последней пары measurements в provenance и ограничить current counter-derived rate согласованным пределом относительно collector period. Аналогичный guard нужен в snapshot collector, чтобы новое чтение после длительного сбоя не объявляло старое среднее текущей скоростью. Подтвердить normal/threshold/long gap/recovery/reset на собственном SQL/HTTP и UI. Не подменять average/unknown нулём и не менять actual SSE monitor rate. Отдельно остаётся неоднозначность пересоздания интерфейса с прежним именем и увеличившимся counter: существующая sample identity не доказывает непрерывность. + +Стенд остаётся backend ux-history184/frontend ux-warning183, source/runtime184 не менялись. Аудит не обращался к CHR/DB, writes0/native commands0, пароли/конфигурация не менялись. Состояние сохранено локальным коммитом без push для продолжения185 после сброса лимита. diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 35585ade..302cb372 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-12: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Актуальное продолжение 2026-10-12: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -3476,3 +3476,16 @@ TypeScript/backend build/ESLint прошли.4 E2E11.2s:2 новых на1440/32 Backend TypeScript/build, [source455/524](ux-ui/acceptance/traffic-membership-source-2026-10-12.json), [compiled1040](ux-ui/acceptance/traffic-membership-compiled-2026-10-12.json) SHA256 parity passed. Backend ux-history184 [healthy/imageId verified](ux-ui/acceptance/traffic-membership-runtime-2026-10-12.json), frontend ux-warning183 без исходных изменений/повторной сборки. Только backend.env tag; rollback both ux-warning183. [Actual API](ux-ui/acceptance/traffic-membership-api-2026-10-12.json)/[production browser1440/320](ux-ui/acceptance/traffic-membership-deployed-2026-10-12.json) passed с actual live/receipt labels, без ошибок/overflow. Checker не менял credentials/config и не отключал реальные интерфейсы CHR.2 CHR доступны по последнему native182; новые native commands API-checker0, messages0. Следующий185 — оценка покрытия периода при пропусках и смене идентичности/пересоздании интерфейса. Подтверждённые bytes остаются учтённым объёмом, не полным billing за период; восстановление идентичности по одному имени не доказано.12.5/внешние интеграции открыты. Локальный коммит без push. + +## 12.5.185 — граница доверия скорости после пропусков: baseline (2026-10-12) + +Блок начат; реализация и приёмка не завершены. [Чистый read-only пример](ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json) проверил один и тот же достоверный delta1MiB между двумя counters с интервалами30s,90s,1h,24h. Учтённый объём во всех случаях1MiB — корректное свойство counter difference. Но observations.rxNow=true также для среднего за1h/24h; длительность последнего интервала пока не влияет на доверие текущей скорости. Это не native monitor-traffic: среднее за интервал не доказывает instantaneous rate в конце интервала.4 baseline cases не являются4 новыми принятыми production сценариями. + +| Интервал | Текущий mask сейчас | Что проверить | +| --- | --- | --- | +|30s/90s | true | допустимый предел относительно trafficSettings.intervalSec | +|1h/24h | true | текущая скорость unknown при слишком длинном интервале; history и known bytes сохраняются | + +Точный следующий шаг: передавать длительность последней пары measurements в provenance и ограничить current counter-derived rate согласованным пределом относительно collector period. Аналогичный guard нужен в snapshot collector, чтобы новое чтение после длительного сбоя не объявляло старое среднее текущей скоростью. Подтвердить normal/threshold/long gap/recovery/reset на собственном SQL/HTTP и UI. Не подменять average/unknown нулём и не менять actual SSE monitor rate. Отдельно остаётся неоднозначность пересоздания интерфейса с прежним именем и увеличившимся counter: существующая sample identity не доказывает непрерывность. + +Стенд остаётся backend ux-history184/frontend ux-warning183, source/runtime184 не менялись. Аудит не обращался к CHR/DB, writes0/native commands0, пароли/конфигурация не менялись. Состояние сохранено локальным коммитом без push для продолжения185 после сброса лимита. diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 6ad3dac2..ca42d58d 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -1,6 +1,6 @@ # Тестовый сервер UX/UI — 2026-10-10 -Сервер161.104.46.222: завершён12.5.184 — история и учтённые объёмы сервера не исчезают после inactive/disabled interface. Baseline/fixed3,ownSQL55/36245ms/backend build/source455+524/1040compiled/API/browser2 passed. Backend ux-history184 healthy, frontend ux-warning183 без изменений; ownDB/role/container удалены. Следующий185 — непрерывность периода/идентичность интерфейса;12.5 открыта. +Сервер161.104.46.222: завершён12.5.184, backend ux-history184/frontend ux-warning183 healthy. Начат185: baseline4 воспроизводит current mask для среднего counter rate за30s/90s/1h/24h; это не исправлено и не принято. Следующий шаг — ограничить доверие текущей counter-derived скорости длительностью интервала, сохраняя подтверждённые bytes/history.12.5 открыта. | Параметр | Проверенное состояние | | --- | --- | @@ -1902,3 +1902,16 @@ TypeScript/backend build/ESLint прошли.4 E2E11.2s:2 новых на1440/32 Backend TypeScript/build, [source455/524](ux-ui/acceptance/traffic-membership-source-2026-10-12.json), [compiled1040](ux-ui/acceptance/traffic-membership-compiled-2026-10-12.json) SHA256 parity passed. Backend ux-history184 [healthy/imageId verified](ux-ui/acceptance/traffic-membership-runtime-2026-10-12.json), frontend ux-warning183 без исходных изменений/повторной сборки. Только backend.env tag; rollback both ux-warning183. [Actual API](ux-ui/acceptance/traffic-membership-api-2026-10-12.json)/[production browser1440/320](ux-ui/acceptance/traffic-membership-deployed-2026-10-12.json) passed с actual live/receipt labels, без ошибок/overflow. Checker не менял credentials/config и не отключал реальные интерфейсы CHR.2 CHR доступны по последнему native182; новые native commands API-checker0, messages0. Следующий185 — оценка покрытия периода при пропусках и смене идентичности/пересоздании интерфейса. Подтверждённые bytes остаются учтённым объёмом, не полным billing за период; восстановление идентичности по одному имени не доказано.12.5/внешние интеграции открыты. Локальный коммит без push. + +## 12.5.185 — граница доверия скорости после пропусков: baseline (2026-10-12) + +Блок начат; реализация и приёмка не завершены. [Чистый read-only пример](ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json) проверил один и тот же достоверный delta1MiB между двумя counters с интервалами30s,90s,1h,24h. Учтённый объём во всех случаях1MiB — корректное свойство counter difference. Но observations.rxNow=true также для среднего за1h/24h; длительность последнего интервала пока не влияет на доверие текущей скорости. Это не native monitor-traffic: среднее за интервал не доказывает instantaneous rate в конце интервала.4 baseline cases не являются4 новыми принятыми production сценариями. + +| Интервал | Текущий mask сейчас | Что проверить | +| --- | --- | --- | +|30s/90s | true | допустимый предел относительно trafficSettings.intervalSec | +|1h/24h | true | текущая скорость unknown при слишком длинном интервале; history и known bytes сохраняются | + +Точный следующий шаг: передавать длительность последней пары measurements в provenance и ограничить current counter-derived rate согласованным пределом относительно collector period. Аналогичный guard нужен в snapshot collector, чтобы новое чтение после длительного сбоя не объявляло старое среднее текущей скоростью. Подтвердить normal/threshold/long gap/recovery/reset на собственном SQL/HTTP и UI. Не подменять average/unknown нулём и не менять actual SSE monitor rate. Отдельно остаётся неоднозначность пересоздания интерфейса с прежним именем и увеличившимся counter: существующая sample identity не доказывает непрерывность. + +Стенд остаётся backend ux-history184/frontend ux-warning183, source/runtime184 не менялись. Аудит не обращался к CHR/DB, writes0/native commands0, пароли/конфигурация не менялись. Состояние сохранено локальным коммитом без push для продолжения185 после сброса лимита. diff --git a/docs/ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json b/docs/ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json new file mode 100644 index 00000000..fcf8a739 --- /dev/null +++ b/docs/ux-ui/acceptance/traffic-gap-baseline-2026-10-12.json @@ -0,0 +1,34 @@ +{ + "date": "2026-10-12", + "block": "12.5.185", + "status": "Baseline only; current-rate interval confidence is not accepted", + "cases": [ + { + "intervalMs": 30000, + "averageRxMbps": 0.2796202666666667, + "currentMask": true, + "accountedBytes": 1048576 + }, + { + "intervalMs": 90000, + "averageRxMbps": 0.09320675555555556, + "currentMask": true, + "accountedBytes": 1048576 + }, + { + "intervalMs": 3600000, + "averageRxMbps": 0.002330168888888889, + "currentMask": true, + "accountedBytes": 1048576 + }, + { + "intervalMs": 86400000, + "averageRxMbps": 0.00009709037037037037, + "currentMask": true, + "accountedBytes": 1048576 + } + ], + "interpretation": "Counter difference over a long gap is an interval average, not an instantaneous measurement. DTO current mask currently has no interval confidence bound.", + "writes": 0, + "nativeCommands": 0 +}