fix(traffic): ограничивать доверие скорости после пропусков
This commit is contained in:
1 parent
9603048bd8
commit
493c30bebc
21 files changed
+1367
-22
No files matched your search
@@ -2,7 +2,7 @@
|
||||
|
||||
Это актуальная матрица после 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) проверены; пароли не менялись.
|
||||
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-gap185`, frontend `ux-warning183`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
|
||||
|
||||
| Раздел | Подтверждено | Осталось / условие завершения |
|
||||
| --- | --- | --- |
|
||||
@@ -1099,3 +1099,21 @@ Backend TypeScript/build, [source455/524](ux-ui/acceptance/traffic-membership-so
|
||||
Точный следующий шаг: передавать длительность последней пары 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.185 — доверие текущей скорости после длительного пропуска (2026-10-13)
|
||||
|
||||
Завершает baseline185 от2026-10-12. Builder сообщает measurementIntervalMs последней пары counter samples; для агрегата используется максимальный интервал всех составляющих, отсутствие interval в одной из новых составляющих даёт null. applyTrafficFreshness разрешает текущую counter-derived скорость только при положительном конечном interval≤3×max(5s,configured period). Это тот же запас3периода, что у TTL. При периоде30s граница90s включительно; более длинный или неизвестный интервал даёт unknown и понятную причину. Историческое среднее и подтверждённые counter bytes сохраняются.
|
||||
|
||||
Collector использует тот же предел в observedTrafficRate: после длинного пропуска snapshot не содержит sumRxMbps/sumTxMbps как измеренную текущую скорость. Следующая нормальная пара восстанавливает current, включая measured0. Native SSE monitor-traffic не изменён; native link status не зависит от длительности counter pair. Legacy вручную сформированная meta без interval сохраняет прежнюю совместимость; production builder выдаёт interval/null явно. Это не подтверждение native identity или полного billing за период.
|
||||
|
||||
| Состояние | Схема | Проверка |
|
||||
| --- | --- | --- |
|
||||
|30s/90s | свежая пара → current | unit threshold |
|
||||
|90.001s/1h/24h | history+known bytes → текущая скорость неизвестна | unit, own SQL, UI1440/320 |
|
||||
| Новый poll после пропуска | нормальная пара → current0 допустим | own collector/SQL recovery |
|
||||
|
||||
Unit threshold/invalid interval/merge/collector guards, backend/application TypeScript и ESLint passed.6 E2E14.7s (2new gap+2binding freshness+2peer warnings) passed. UI использует существующий ReUI Alert/base-nova без новой темы или компонентов. [Owned SQL](ux-ui/acceptance/traffic-gap-sql-2026-10-13.json):58 cases9counter+14history+10TCP SSE+10volume+15status/37008ms, no unavailable skip.3 новые cases: API сохраняет1MiB/history при120s gap, API recovery30s возвращает current и2MiB, actual fixture collector long gap не выдаёт current sum и второй poll подтверждает0. Первоначальный SQL запуск выявил fixture duplicate PK при переносе всех исторических timestamps; fixture оставляет только последнюю волну перед сдвигом. Ошибка не выдана за passed, обе временные базы/роли удалены. Последняя ownDB mm_accept_166_1791827374886/role/container удалена и отсутствие проверено.
|
||||
|
||||
[Source456/524](ux-ui/acceptance/traffic-gap-source-2026-10-13.json)/[compiled1040](ux-ui/acceptance/traffic-gap-compiled-2026-10-13.json) SHA256 parity. Backend production ux-gap185 [healthy/imageIds](ux-ui/acceptance/traffic-gap-runtime-2026-10-13.json), frontend ux-warning183 без исходных изменений/повторной сборки. Только backend.env tag, rollback backend ux-history184/frontend ux-warning183; secret env copy0, migration0. [Actual API](ux-ui/acceptance/traffic-gap-api-2026-10-13.json)/[production UI1440/320](ux-ui/acceptance/traffic-gap-deployed-2026-10-13.json) passed с actual live и backend receipt labels, no errors/overflow. Checker не отправлял новых native commands и не создавал отказ на CHR. Password/config/message changes0.
|
||||
|
||||
Следующий186 — provenance native interface/peer identity и конфигурации источника: positive counter difference по одному прежнему имени не доказывает непрерывность после пересоздания/смены устройства. Старую историю не переписывать по догадке. Общая12.5 и внешние зависимости остаются открыты. Локальный коммит без push.
|
||||
Reference in new issue
Block a user