fix(docs): указать даты выполнения в заголовках этапов
This commit is contained in:
1 parent
a56f555c25
commit
b0e114b56d
2 files changed
+55
-55
No files matched your search
+28
-28
@@ -13,7 +13,7 @@
|
||||
- Локально доступны моки. Проверки операций должны идти по обычному API-пути с подменой HTTP-ответов в тестах: встроенный mock-режим обходит запросы и не доказывает корректность live-ветки.
|
||||
- Реальное применение RouterOS, сетевой опрос и экспорт сертификатов требуют отдельной приёмки в тестовом окружении. Не считать их проверенными по мокам.
|
||||
- Перед продолжением читать git status и новые коммиты; сохранять изменения других задач.
|
||||
- После каждого блока добавлять полную запись в этот журнал над предыдущей записью. Обновления строки продолжения недостаточно. Подробные документы этапов сохранять согласованными с журналом.
|
||||
- После каждого блока добавлять полную запись в этот журнал над предыдущей записью; в заголовке указывать дату выполнения в формате (ГГГГ-ММ-ДД). Обновления строки продолжения недостаточно. Подробные документы этапов сохранять согласованными с журналом.
|
||||
|
||||
## Состояние этапов
|
||||
|
||||
@@ -34,13 +34,13 @@
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | В работе. Локальные блоки до12.3.78.1 завершены. Общая main1176/1176 на579e816 и context221/221 наa3fcba0 прошли; последующий функциональный delta проверен73browser/8context. Следующий12.3.79; внешняя12.5 не выполнена. |
|
||||
|
||||
## 12.3.78.1 — удаление неиспользуемого кода прежней таблицы
|
||||
## 12.3.78.1 — удаление неиспользуемого кода прежней таблицы (2026-10-07)
|
||||
|
||||
2026-10-07. Из uptime удалены неиспользуемые MiniBar/resBarColor/resPctColor/SortIcon/ResSortKey,2импорта и чистое вычислениеy1,3неактуальных eslint-disable directives. Reference search и предыдущий lint подтверждали отсутствие использования; активные render/API/measurement paths не менялись. Установленные ReUI primitives/hooks/theme не изменены.
|
||||
|
||||
Targeted lint страницы/helpers/tests теперь0errors/0warnings (до этого9warnings), non-incremental TypeScript и production frontend build passed. Для удаления неиспользуемых объявлений не добавлены повторяющие реализацию тесты; функциональный78 delta73browser/8context/14pure+backend HTTP/RBAC сохранён в предыдущем блоке. Следующий79: runtime command body schema до DB/native. Внешняя12.5 не выполнена; полная матрица относится к точным ранее указанным HEAD.
|
||||
|
||||
## 12.3.78 — снимок при изменении пары и приоритет истории
|
||||
## 12.3.78 — снимок при изменении пары и приоритет истории (2026-10-07)
|
||||
|
||||
2026-10-07. Catalog replacement читает и блокирует существующие probe rows внутри прежней транзакции/advisory lock. Смена source/destination или новый id сбрасывает9наблюдаемых полей вnull, перестановка/enable и та же пара сохраняют measurements. История не удаляется. Frontend публикует configuration только после подтверждения; той же паре берёт последние observations из текущего state вместо readonly копии старого draft. Новый target получаетnull. Общий emptySpeedProbeObservations переиспользован через contracts; ReUI primitives/theme/composition сохранены.
|
||||
|
||||
@@ -50,13 +50,13 @@ Targeted lint страницы/helpers/tests теперь0errors/0warnings (до
|
||||
|
||||
Этот delta выполнен после общих main579e816/contexta3fcba0; общие результаты не переименованы в проверку нового HEAD. Следующий79: POST command body ещё использует parseInt/enum defaults; проверить строгий DTO до DB/native, сохранив валидные ad-hoc/scheduled сценарии и существующие команды/права. Полный CAS параметров пробы и реальные native timestamps также не объявлены проверенными. Внешняя12.5 отдельно.
|
||||
|
||||
## 12.4.9 — общая context регрессия после speed ownership
|
||||
## 12.4.9 — общая context регрессия после speed ownership (2026-10-07)
|
||||
|
||||
2026-10-07, HEADa3fcba0.221/221passed,26files,0unexpected/skipped/flaky,7.5min. Edge/1worker/retries0/maxFailures12. [Итог context](ux-ui/acceptance/context-final-2026-10-07.json) сохранён отдельно от старых матриц; source tmp/ux-context-final-20261007.json. Смена backend/mode, ABA/late data/write/permission, закрытие scope и checkpoint прошли.
|
||||
|
||||
Main1176 на579e816 и backend ownership delta25pure/5browser наa3fcba0 остаются разными доказательствами, HEAD не подменён. Следующий78: при смене пары adapter upsert и frontend optimistic publish сохраняли старые observations; исправить после общего прогона и проверить профиль. Внешняя12.5 всё ещё не выполнена.
|
||||
|
||||
## 12.3.77 — пара устройств и атомарная запись speed-run
|
||||
## 12.3.77 — пара устройств и атомарная запись speed-run (2026-10-07)
|
||||
|
||||
2026-10-07. Preflight сверяет probeId/srcServerId/dstServerId до создания RouterOS client/команды, mismatch/deleted даёт409. UPDATE snapshot success/error содержит id AND source AND destination и RETURNING id. Если пара изменилась/проба удалена за время native test, её snapshot не обновляется, история actual endpoints сохраняется с probeId=null. Snapshot и run insert теперь внутри одной Drizzle transaction для success и failure. Ad-hoc run без probeId сохраняет историю без обновления пробы. Команды, параметры, locks, permissions/schema не менялись.
|
||||
|
||||
@@ -64,13 +64,13 @@ Main1176 на579e816 и backend ownership delta25pure/5browser наa3fcba0 ос
|
||||
|
||||
Полный main1176 относится к579e816 до backend delta; frontend runtime после него не менялся, добавлен1профильный409тест. Следующий12.4.9context; после него12.3.78: adapter каталога сохраняет observations по id, нужно проверить смену пары и local publish после config save. Текущий77защищает пару при запуске/результате, не является CAS полной версии параметров пробы.
|
||||
|
||||
## 12.4.8 — общая main регрессия после исправлений оптимизатора/скорости
|
||||
## 12.4.8 — общая main регрессия после исправлений оптимизатора/скорости (2026-10-07)
|
||||
|
||||
2026-10-07. Runtime HEAD579e816:1176/1176passed,0unexpected/skipped/flaky,34.9min. Edge/1worker/retries0/maxFailures12. После старта добавлен только внешний протокол docs5fedf7a; runtime diff579e816→current проверен пустым. [Итог main](ux-ui/acceptance/main-final-2026-10-07.json) записан отдельно от исторического12.4.6. Сырой JSON сохранён в tmp/ux-main-final-20261007.json. Исторические PNG, перегенерированные тестами, восстановлены по проверенному списку tmp/ux-main-regenerated-screens-20261007.json. Чужие skill/AGENTS/config/cache изменения не включены.
|
||||
|
||||
Этот общий прогон содержит новые large pool/site captions, direction/scope/nullable POST и6mobile geometry cases. Старый terminal focus race в этом прогоне не повторился. Source review дополнительно нашёл обновление speed probe только по id без endpoint ownership; snapshot update и run insert были отдельными операциями. Следующий небольшой12.3.77 защищает привязку пары и атомарность этих двух записей, без смены RouterOS команд; затем12.4.9 полныйcontext. Внешняя12.5 отдельно.
|
||||
|
||||
## 12.5.0 — подготовка внешнего протокола
|
||||
## 12.5.0 — подготовка внешнего протокола (2026-10-07)
|
||||
|
||||
2026-10-07. [Протокол12.5](ux-ui-external-acceptance.md) подготовлен по фактическим backend routes/services/migrations: PG bootstrap0008/0009, backup/restore/rollback и writer lifecycle; outbox claim/dedupe/CAS/status-history; native bandwidth terminal/direction/scope, OSPF и остальные сетевые операции; реальные роли/интеграции. Каждая строка задаёт независимое подтверждение результата и очищенные артефакты. Локальные ссылки проверены. Внешние операции не выполнялись, credentials/dumps не читались и не сохранялись.
|
||||
|
||||
@@ -78,7 +78,7 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
12.4.8 main1176 продолжает выполняться на runtime source HEAD579e816. Этот блок меняет только docs; исходники/конфигурация тестов не изменились после старта. Дальше завершить main, сохранить результат и запустить12.4.9context.12.5 не принята.
|
||||
|
||||
## 12.3.76 — читаемая мобильная WAN/JH матрица
|
||||
## 12.3.76 — читаемая мобильная WAN/JH матрица (2026-10-07)
|
||||
|
||||
2026-10-07. Геометрический baseline320px подтвердил дефект: viewport right303,pinned right197,cell right397 (200px колонка рядом с180px WAN). Пропорции ColumnDef на телефоне теперь112/160, desktop180/200 сохранены (actual table fill может расширять размеры). Hook useIsMobile и installed ReUI DataGridShell/ScrollArea/Table переиспользованы, primitive/hook/theme не менялись. Имя/интерфейс WAN ограничены truncate/min-w-0; полное значение остаётся DOM text/title и доступно поиску.
|
||||
|
||||
@@ -86,7 +86,7 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
Доказательства: [геометрия до/после](ux-ui/acceptance/matrix-geometry-2026-10-07.json), [экран320px](ux-ui/screens/optimizer-matrix-readable-320.png) просмотрен. Historic9optimizer и2speed PNG восстановлены; предыдущие снимки не переписаны. Следующий12.4.8main/12.4.9context повтор на новом HEAD. Внешняя12.5 не выполнена.
|
||||
|
||||
## 12.3.75 — направление скоростных входов OSPF
|
||||
## 12.3.75 — направление скоростных входов OSPF (2026-10-07)
|
||||
|
||||
2026-10-07. Источник выбирается через srcServerId текущего роутера, поэтому единый pure getter читает RX как DL и TX как UL. Getter используется raw observed и model speeds; route builder вызывает модельный helper вместо прежнего обратного сопоставления. Raw zero/null/fraction/source/date сохраняются. Модельные округление, floor1 и traffic fallback сохранены; formula Cost, pingWeight, unique probe assignment и порядок операций не менялись. Рекомендации Cost могут измениться из-за исправленных asymmetric inputs. Traffic fallback RX→DL/TX→UL уже был верен. Дата speed остаётсяnull, Ping date не подставляется.
|
||||
|
||||
@@ -94,7 +94,7 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
Следующий76: на320px проверить видимость всей соседней metric cell за pinnedWAN, исправить column sizing при подтверждённой проблеме. Общая main/context регрессия прежних HEAD требует обновления позже;12.5 остаётся внешней.
|
||||
|
||||
## 12.3.74 — подтверждённое завершение bandwidth-test
|
||||
## 12.3.74 — подтверждённое завершение bandwidth-test (2026-10-07)
|
||||
|
||||
2026-10-07. Pure guard проверяет структуру native rows, все известные failure statuses и последний сообщённый status. Только done testing допускает дальнейший расчёт, after-ping и DB success write. Connecting/running, отсутствие статуса, неизвестный status, malformed response или error/failure/trap marker отклоняются с неизвестным результатом; native failures имеют краткие русские сообщения. Числовой enum не принимается как строковое подтверждение. Подтверждённый one-direction result может иметь null на другой стороне и0 на измеренной.
|
||||
|
||||
@@ -102,7 +102,7 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
Источник native statuses: [RouterOS CLI bandwidth-test](https://manual.mikrotik.com/docs/cli-reference/tool/bandwidth-test/). Последний reported done допускает последующие rows без status, но любые failure markers отклоняются даже после completion. Реальный REST shape/версия RouterOS и PG writes требуют12.5. Следующие75direction OSPF и76mobile geometry.
|
||||
|
||||
## 12.3.73 — неизвестная скорость и подтверждение POST
|
||||
## 12.3.73 — неизвестная скорость и подтверждение POST (2026-10-07)
|
||||
|
||||
2026-10-07. Backend parser возвращает null для отсутствующих/невалидных скоростей, переводит RouterOS SI bits/s в Мбит/с и сохраняет явный total-average 0 вместо замены средним. Серии включают только валидные значения; отсутствующие samples не получают нулей, временная геометрия пропусков здесь не реализована. Поля БД уже nullable, миграции и переписывания исторических записей нет. Frontend проверяет ok/result/runId и nullable finite nonnegative rates до публикации ответа. Контекст проверяется раньше DTO, поздний ответ чужого источника игнорируется. Running averages null; Math.round(null) исключён. Ошибка сохраняет предыдущие probe averages и подтверждённую историю.
|
||||
|
||||
@@ -110,7 +110,7 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
Следующий74: native terminal status ещё не проверяется перед done/DB write.75OSPF direction и76mobile metric geometry остаются. DTO доказывает целостность ответа, но не факт выполнения на устройстве. Реальная RouterOS/PG приёмка12.5 отдельно.
|
||||
|
||||
## 12.3.72 — область скоростного снимка и единицы
|
||||
## 12.3.72 — область скоростного снимка и единицы (2026-10-07)
|
||||
|
||||
2026-10-07. Матрица с probe snapshot явно объясняет:скорость — пара устройств, привязка WAN расчётная, DL кHome/UL отHome. В existing «Как читать расчёт» добавлена роль srcInterface для Ping после теста и выбор пути скорости маршрутизацией устройства. Скорости и model limits подписаны Мбит/с. Новых RouterOS параметров, routing rules, методов или API операций нет.
|
||||
|
||||
@@ -118,7 +118,7 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
Остаются73missing→0/nullable consumer,74native terminal status,75OSPF direction. Чтение frontend consumer подтвердило ещё Math.round(null)→0 и доверие POST без runtime DTO; фиксировать73 вместе с producer. Границы мобильного pinnedWAN и соседней metric cell требуют отдельного76geometry теста, а не только проверки первого столбца. Внешняя12.5 отдельно.
|
||||
|
||||
## 12.3.71 — направление измерений DL/UL
|
||||
## 12.3.71 — направление измерений DL/UL (2026-10-07)
|
||||
|
||||
2026-10-07. Для Home→JH RX клиентского bandwidth-test отображается как DL к Home, TX как UL от Home. JH→Exit использует тот же смысл; для reverse Exit→JH клиент на дальней стороне, поэтому TX→DL/RX→UL. Raw getter сохраняет nullable/zero/decimal и исходную дату; модельные maxDl/maxUl применяются к правильной стороне. Команды RouterOS, параметры теста, подбор probe IDs и правила операций не менялись. Ввод/трактовка скоростных данных исправлены по источнику srcClient и RouterOS CLI docs (ссылка в observed audit).
|
||||
|
||||
@@ -126,13 +126,13 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
|
||||
Наблюдения по-прежнему не доказывают конкретный WAN bandwidth-test: следующее72scope labels. Backend producer missing→0/terminal status и OSPF metrics/route builder TX→DL требуют73–75. OSPF traffic fallback уже используетRX→DL, измеренная дата speed-probe намеренноnull и не требует изменения. Real12.5 отдельно.
|
||||
|
||||
## 12.3.70 — аудит источника и смысла observed metrics
|
||||
## 12.3.70 — аудит источника и смысла observed metrics (2026-10-07)
|
||||
|
||||
2026-10-07. Код сопоставлен с первичной RouterOS bandwidth-test документацией. Подтверждены неверное TX→DL, неподтверждённая связь btest с srcInterface/WAN, missing→0/explicit0→mean и отсутствие проверки terminal status перед success write. Это новые ограничения, которые ранее проверенные mock snapshots не доказывали. Отдельный протокол/таблица/схема: docs/ux-ui/optimizer-observed-audit-2026-10-07.md.
|
||||
|
||||
Только read-only audit/docs, без DB/RouterOS/сетевых операций. Дальше71direction mapping,72scope labels,73nullable rate parser/producer/DTO,74terminal confirmation. Фактические команды, права и routing rules не меняются этой серией; real12.5 отдельно. Исторические0 не переписывать автоматически.
|
||||
|
||||
## 12.3.69 — lookup leg и исключение ненужных расчётов без WAN
|
||||
## 12.3.69 — lookup leg и исключение ненужных расчётов без WAN (2026-10-07)
|
||||
|
||||
2026-10-07. WAN/JH map сохраняет первый matching leg, lookup вынесен из Exit loop. JH/Exit legs не строятся, если нет настроенного WAN: их не может использовать ни один full route. Порядок WAN/JH/Exit, сортировка/ties, raw source identity, all routes и unknown community indices сохранены.13pure tests прошли, включая1230 assignment oracle fixtures и новые проверки8route probe ownership/ties/zeroWAN.12browser (large homes/routes/observed/tables) passed; non-incremental typecheck до dev, targeted lint и production build успешны.
|
||||
|
||||
@@ -140,13 +140,13 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
|
||||
После чтения реального producer обнаружены следующие вопросы достоверности:source btest выполняется на srcClient,TX/RX экспортируются без переименования,optimizer пока читаетTX какDL. srcInterface передаётся только after-ping, не bandwidthTest; поле не доказывает WAN скоростного теста. Producer parser/fallback отсутствующую скорость превращает в0, а explicit avg0 может заменяться mean series. Следующий12.3.70 фиксирует аудит с первичными RouterOS источниками и планирует точечные исправления данных/подписей. Команды/права/правила сетевых операций не менялись; real PG/RouterOS/integrations12.5 не выполнялись.
|
||||
|
||||
## 12.3.68 — bounded CPU-профиль генерации полных маршрутов
|
||||
## 12.3.68 — bounded CPU-профиль генерации полных маршрутов (2026-10-07)
|
||||
|
||||
2026-10-07. Pure child process без API/DB/браузера/сети, product≤100000/dimensions1–1000/timeout10s/V8heap256MB.1000WAN×1JH×1Exit1000routes≈16.9ms/heapDelta1.8MB;10×100×100100000routes≈329.6ms/22.0MB;100×10×100≈266.7ms/27.1MB. Первый измеренный прогон; точные повторные значения и source SHA256 в docs/ux-ui/acceptance/optimizer-routes-baseline-2026-10-07.json. Heap delta не peak/retained memory, время не production p95/SLA. Проверены count/first-last IDs/bestFirst/сохранение отсутствующих наблюдений. ESLint скрипта прошёл.
|
||||
|
||||
Baseline в UI не запускался. Повторный Array.find по1000wanJhLegs на каждую из100000комбинаций даёт лишние линейные сканирования. Следующий12.3.69: map lookup с сохранением первого matching leg и порядка routes/ties, профильный repeat. Полный product всё ещё хранится/сортируется в памяти; опасную произвольную размерность этот профиль не принимает. Далее аудит TX/RX и связи wildcard-пробы с конкретным WAN, прежде чем объявлять observed correctness закрытой. Внешняя12.5 отдельно.
|
||||
|
||||
## 12.3.67 — краткие и достоверные KPI-подписи площадок
|
||||
## 12.3.67 — краткие и достоверные KPI-подписи площадок (2026-10-07)
|
||||
|
||||
2026-10-07. В существующем ReUI Stats12/KpiStatGrid footer переиспользован ReUI Badge outline/sm. Короткие уникальные названия (≤3 и≤24символов) показываются без повторов; большой/длинный список заменяется точным количеством площадок. Отдельно виден count узлов без площадки: пустые/whitespace/нормализованный — не считаются реальной площадкой. Нет полного join большого каталога. Неизвестный каталог сообщает «Площадки неизвестны»; нулевой topology pool — «Нет узлов в расчёте», потому что live topology исключает offline/disabled, а устройства могут существовать в inventory. Права/выбор узлов/расчёт/источники не менялись.
|
||||
|
||||
@@ -154,7 +154,7 @@ Baseline в UI не запускался. Повторный Array.find по1000
|
||||
|
||||
Далее12.3.68 pure child CPU profile full-route product≤100000/timeout10s/memory cap; не грузить тяжёлый baseline в UI. Остаточные DFS worst-case/full-route memory/native selector и внешняя12.5 не объявляются принятыми. Общая main/context регрессия относится к ранее записанным HEAD; текущий footer delta проверен профильными16+2.
|
||||
|
||||
## 12.3.66 — точный выбор проб из большого pool
|
||||
## 12.3.66 — точный выбор проб из большого pool (2026-10-07)
|
||||
|
||||
2026-10-07. Score matrix вычисляется только при exact DFS≤7WAN/pool≥WAN, с единым временем ранжирования на назначение JH. Сырые наблюдения/даты не меняются, greedy fallback сохранён. Допустимый score-first greedy путь даёт только lower total, не готовое назначение. Пока DFS не нашёл реальный witness, равные верхние границы НЕ отсекаются; первое равное назначение остаётся в исходном pool order. Node stop требует реального bestAssign. Для каждого кандидата child upper выводится из topK максимумов текущего узла с исключением занятой пробы; уже проигрышные siblings не пересканируют весь pool. Forced pick сохраняется, даже если ветвь отсечена.
|
||||
|
||||
@@ -164,13 +164,13 @@ Pure child CPU1000: equal1217.5→15.6ms,varied7967.5→14.5ms,freshness10с tim
|
||||
|
||||
Следующий12.3.67: KPI captions JH/Exit (повторы/пустая площадка/unknown), затем separate full-route CPU profile. Общая main/context регрессия12.4.6/7 относится к прежним HEAD; этот delta принят профильными51+8. Внешняя12.5 не выполнена.
|
||||
|
||||
## 12.3.65 — CPU-профили pool1000
|
||||
## 12.3.65 — CPU-профили pool1000 (2026-10-04)
|
||||
|
||||
2026-10-04, UI/source расчёта не менялись. Child script принимает integer count20–1000, hard timeout10с, без API/DB/браузера/сети.7WAN×1000: equal1217.5ms (IDs p0..6), varied7967.5ms (p13..19), freshness не завершился за10с, процесс остановлен. Startup отдельно ~0.4s. Freshness создаёт1000 разных возрастов, будущие timestamps не используются. ESLint скрипта прошёл; корректность ID проверяется после успешного завершения.
|
||||
|
||||
Это оставшийся CPU риск, а не performance приёмка. В current DFS повторяются Date.parse/trim/score и оценка upper для ветвей, уже достигших максимум. Следующий12.3.66: score cache только для bounded WAN≤7 DFS с одним snapshot time и early stop при достижении node upper, preserving first tie/order/forced picks/greedy fallback. Проверить1200 legacy oracle fixtures, raw observations, profiles20/1000. Худшая комбинаторика и весь full-route product по-прежнему не ограничены.
|
||||
|
||||
## 12.3.64 — компактная текстовая сводка WAN
|
||||
## 12.3.64 — компактная текстовая сводка WAN (2026-10-04)
|
||||
|
||||
2026-10-04. Baseline1000WAN:31783chars/13695px высоты summary на320px, хотя grid уже50rows/1419DOM. В HomeCard теперь preview первых3 WAN с прежними ISP/IP, точный remaining/total и понятная ссылка в copy на существующую вкладку WAN×JH. Для ≤3WAN описание не сокращено. Исходный массив/расчёт/поиск/таблица не срезаются.
|
||||
|
||||
@@ -178,13 +178,13 @@ Final1000WAN:134chars/86.5px высоты summary; WAN10:130chars/86.5px. В т
|
||||
|
||||
Общие main/context доказательства относятся к прежним HEAD; этот небольшой текстовый delta проверен профильными сценариями. Исторический context-delta(a558412/36) сохранён отдельно от нового context-final-delta(b1f8326/221), чтобы ссылки12.4.3 не изменили смысл. Следующий12.3.65 — pure CPU7WAN×1000pool с hard timeout; не запускать в UI. KPI captions/native selector и худшая DFS/full-route комбинация не приняты этим блоком. Внешняя12.5 остаётся.
|
||||
|
||||
## 12.4.7 — общая context регрессия после delta
|
||||
## 12.4.7 — общая context регрессия после delta (2026-10-04)
|
||||
|
||||
2026-10-04, HEADb1f8326.221/221passed/26files за15.8min,0unexpected/0skipped/0flaky,Edge/1worker/retries0/maxFailures12. Включены Firewall context и все поздние read/write/backend/mode/ABA/checkpoint сценарии. Evidence docs/ux-ui/acceptance/context-final-delta-2026-10-04.json. Terminal context прошёл на исправленном source. Перегенерированных tracked screenshots нет.
|
||||
|
||||
Main12.4.6 относится к991f2b3:1161/1162; единственный focus race исправлен и проверен20+15 в12.4.6.1. Полный main после этого маленького исправления не повторялся. Внешняя12.5 PG/RouterOS/integrations не выполнена; stage12 не завершён. Следующий12.3.64 — высота сводки1000WAN, затем дополнительные CPU/pool профили.
|
||||
|
||||
## 12.4.6.1 — исправление гонки фокуса терминала
|
||||
## 12.4.6.1 — исправление гонки фокуса терминала (2026-10-04)
|
||||
|
||||
2026-10-04. requestAnimationFrame из finally заменён pendingFocus ref и DOM effect после commit. Поле получает focus только после снятия disabled; unmounted/blocked terminal не перехватывает фокус. Зависимость от lines покрывает быстрый запрос, даже когда executing=true/false попадают в один React batch. Порядок запросов, права, ownership и сохранение команд не менялись.
|
||||
|
||||
@@ -192,13 +192,13 @@ Main12.4.6 относится к991f2b3:1161/1162; единственный focu
|
||||
|
||||
Это профильное закрытие единственного сбоя main12.4.6, не новый полный main прогон на исправленном HEAD. Следующий12.4.7 —221 context/26files (актуальная discovery; прежняя матрица213/25). Внешняя12.5 остаётся.
|
||||
|
||||
## 12.4.6 — общая main регрессия после больших каталогов
|
||||
## 12.4.6 — общая main регрессия после больших каталогов (2026-10-04)
|
||||
|
||||
2026-10-04, HEAD991f2b3.1162 сценария/190 файлов:1161passed,1unexpected,0skipped/0flaky за55.2min. Edge/1worker/retries0/maxFailures12. Единственный сбой terminal-data: поле не получило focus после успешного повтора BFD error. Вероятная гонка requestAnimationFrame с React commit/re-enable. Общая матрица НЕ объявляется полностью пройденной. Доказательство docs/ux-ui/acceptance/main-delta-2026-10-04.json; trace/error сохранены в tmp перед следующими тестами. Перегенерированные этим прогоном исторические PNG восстановлены по явному списку tmp/ux-main-regenerated-screens.json; собственные новые матричные/Community screenshots сохранены.
|
||||
|
||||
Все новые большие профили, Firewall/OSPF/optimizer сценарии вошли в этот общий прогон. Статический аудит дополнительно выявил полный join1000WAN в шапке HomeCard и полные site-строки JH/Exit в KPI: число DOM nodes не измеряет высоту текстовых сводок. Следующий12.4.6.1 — фокус после commit и профильный repeat; затем12.4.7 context. Внешняя12.5 отдельно.
|
||||
|
||||
## 12.3.63 — весь Community-каталог с ограниченным отображением
|
||||
## 12.3.63 — весь Community-каталог с ограниченным отображением (2026-10-04)
|
||||
|
||||
2026-10-04. Удалён скрытый slice24 после фильтра sourceServerId; ownership и расчётная семантика сохранены. ReUI DataGrid pages50/full search/communityName/gateway/path, exact counts, full-model sort, fixed widths/horizontalScroll/pinnedCommunity. Row key формируется до фильтрации из прежнего home/community/index; pins сохраняются при search/sort/страницах/refresh. Global рекомендаций count теперь относится ко всем правилам. Live режим по-прежнему не применяет BGP-рекомендации; симуляция доступна только demo.
|
||||
|
||||
@@ -206,11 +206,11 @@ Main12.4.6 относится к991f2b3:1161/1162; единственный focu
|
||||
|
||||
Осталось5manualPagination:true: scheduler11 fixedkeys, live GRE pools пусты/demo ограничен fixtures, probes schedule толькоdemo, subusers не подключён, trafficflows серверныйtop50 принят с честным указанием среза. Не мигрировать искусственно недостижимые live каталоги. Дальше12.4.6/12.4.7 — повтор общей main/context матрицы после delta. Внешняя12.5 не выполнена.
|
||||
|
||||
## 12.3.62 — исходный скрытый срез Community
|
||||
## 12.3.62 — исходный скрытый срез Community (2026-10-04)
|
||||
|
||||
2026-10-04. Live API fixture1000 правил Home1/1WAN/1JH/безExit, strict servers/rules DTO. UI показывает BGP community(24),24rows/504tableDOM/1197pageDOM/1916ms dev-ready. Это не performance-успех:976 правил вообще исключены до grid, counts не показывают реальный источник.1 browser/test lint passed, API writes отсутствуют. Следующий12.3.63 удаляет срез и ограничивает отображение pages50, сохраняя unknown indices безExit.
|
||||
|
||||
## 12.3.61 — точное отсечение перебора проб
|
||||
## 12.3.61 — точное отсечение перебора проб (2026-10-04)
|
||||
|
||||
2026-10-04. DFS сохранил порядок WAN/pool, обязательный выбор совместимой пробы и первое назначение при равных totals. Отсекаются только ветви, чья верхняя граница не превосходит найденного bestSum. Две релаксации: сумма независимых максимумов remainingWAN и сумма наибольших remainingCount максимумов уникальных probe IDs. Каждое допустимое завершение ограничено обеими оценками; минимум также верхняя граница. Никакого изменения правил scores, fallback greedy для >7WAN/недостаточного pool, выбора интерфейсов, API или сетевых операций.
|
||||
|
||||
@@ -218,7 +218,7 @@ Main12.4.6 относится к991f2b3:1161/1162; единственный focu
|
||||
|
||||
Это профили7WAN×20, а не гарантия для любого размера/набора: DFS всё ещё экспоненциальный в худшем случае, исходный pool не ограничен; large mixed-interface/live нагрузка остаётся предметом production измерения. Следующий12.3.62 — скрытый срез24commRecs.
|
||||
|
||||
## 12.3.60 — ограниченное отображение WAN matrix
|
||||
## 12.3.60 — ограниченное отображение WAN matrix (2026-10-04)
|
||||
|
||||
2026-10-04. ReUI DataGrid/TanStack v9: клиентские страницы50WAN, окно5JH, поиск по полному WAN/JH каталогу, точные filtered/total counts. Fixed widths/горизонтальный DataGridScrollArea/закреплённый WAN; страницы сохраняются при refresh и нормализуются при сжатии каталога. Best score берётся из всех legs циклом без spread; Map WAN→JH сохраняет первый matching leg, как прежний find. Raw unknown/zero/даты и модель остаются раздельными. API writes отсутствуют.
|
||||
|
||||
@@ -226,7 +226,7 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
|
||||
Проверены12browser + повтор2 после lint-правки, TypeScript без incremental, targeted ESLint, production build, ReUI validate_usage/checklist. Мобильные снимки docs/ux-ui/screens/optimizer-wan-matrix-{1000,100jh}-320.png просмотрены. Поиск последних объектов, последний диапазон, cache/refresh/clamp,320px/pinnedWAN и WCAG axe приняты. Общая регрессия после delta ещё требуется.6 manualPagination:true остаются; CPU DFS и срез24 commRecs не исправлены этим блоком.
|
||||
|
||||
## 12.3.59 — отдельные профили матрицы и CPU
|
||||
## 12.3.59 — отдельные профили матрицы и CPU (2026-10-04)
|
||||
|
||||
2026-10-04. Live API подменён строгими DTO, без Exit и API mutations. Два браузерных профиля прошли: WAN1000×JH1 — 1000 строк,4 столбца,28019 DOM таблицы,28712 DOM страницы,4977мс dev-ready,108917байт; WAN10×JH100 — 10 строк,103 столбца,9803 DOM таблицы,10595 DOM страницы,2258мс dev-ready,16593байт. Время dev измеряет также загрузку/компиляцию и не является production benchmark.
|
||||
|
||||
|
||||
+27
-27
@@ -671,14 +671,14 @@ buildLiveOptimizerData/assignProbesForWanJh делает DFS, когда WAN<=7
|
||||
commRecs строятся через filter(sourceServerId).slice(0,24), а HomeCard подписывает BGP community только длиной среза. Нужны полный source count/явное сообщение24 изN; нельзя выдавать24 за весь каталог или менять правила применения. Локальная вкладка карточки сбрасывается при pagination, native OSPF select1000 options остаётся. Общая main/context после delta и реальная внешняя12.5 ещё не закрыты. Этот блок — карта приёмки, не доказательство нагрузочной готовности. Product build a16bfae уже passed; для документации повтор не нужен. Следующий12.3.59 — указанные bounded profiles/CPU timeout. Локальный коммит без push.
|
||||
|
||||
|
||||
## 12.3.59 — отдельные профили матрицы и CPU
|
||||
## 12.3.59 — отдельные профили матрицы и CPU (2026-10-04)
|
||||
|
||||
2026-10-04. Live API подменён строгими DTO, без Exit и API mutations. Два браузерных профиля прошли: WAN1000×JH1 — 1000 строк,4 столбца,28019 DOM таблицы,28712 DOM страницы,4977мс dev-ready,108917байт; WAN10×JH100 — 10 строк,103 столбца,9803 DOM таблицы,10595 DOM страницы,2258мс dev-ready,16593байт. Время dev измеряет также загрузку/компиляцию и не является production benchmark.
|
||||
|
||||
Чистый расчёт7WAN×20 wildcard probes воспроизводится scripts/performance/optimizer-probes-profile.mjs, в отдельном child process с жёстким timeout10000мс. Расчёт не завершился за timeout; тяжёлый DFS нельзя воспроизводить в UI. Нет DB/API/сетевых операций. Следующий12.3.60 — страницы50WAN и ограниченное окно JH, поиск по полному каталогу, проверка обновления/сжатия и320px. Семантику назначения probes этим блоком не меняем.
|
||||
|
||||
|
||||
## 12.3.60 — ограниченное отображение WAN matrix
|
||||
## 12.3.60 — ограниченное отображение WAN matrix (2026-10-04)
|
||||
|
||||
2026-10-04. ReUI DataGrid/TanStack v9: клиентские страницы50WAN, окно5JH, поиск по полному WAN/JH каталогу, точные filtered/total counts. Fixed widths/горизонтальный DataGridScrollArea/закреплённый WAN; страницы сохраняются при refresh и нормализуются при сжатии каталога. Best score берётся из всех legs циклом без spread; Map WAN→JH сохраняет первый matching leg, как прежний find. Raw unknown/zero/даты и модель остаются раздельными. API writes отсутствуют.
|
||||
|
||||
@@ -687,7 +687,7 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
Проверены12browser + повтор2 после lint-правки, TypeScript без incremental, targeted ESLint, production build, ReUI validate_usage/checklist. Мобильные снимки docs/ux-ui/screens/optimizer-wan-matrix-{1000,100jh}-320.png просмотрены. Поиск последних объектов, последний диапазон, cache/refresh/clamp,320px/pinnedWAN и WCAG axe приняты. Общая регрессия после delta ещё требуется.6 manualPagination:true остаются; CPU DFS и срез24 commRecs не исправлены этим блоком.
|
||||
|
||||
|
||||
## 12.3.61 — точное отсечение перебора проб
|
||||
## 12.3.61 — точное отсечение перебора проб (2026-10-04)
|
||||
|
||||
2026-10-04. DFS сохранил порядок WAN/pool, обязательный выбор совместимой пробы и первое назначение при равных totals. Отсекаются только ветви, чья верхняя граница не превосходит найденного bestSum. Две релаксации: сумма независимых максимумов remainingWAN и сумма наибольших remainingCount максимумов уникальных probe IDs. Каждое допустимое завершение ограничено обеими оценками; минимум также верхняя граница. Никакого изменения правил scores, fallback greedy для >7WAN/недостаточного pool, выбора интерфейсов, API или сетевых операций.
|
||||
|
||||
@@ -696,12 +696,12 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
Это профили7WAN×20, а не гарантия для любого размера/набора: DFS всё ещё экспоненциальный в худшем случае, исходный pool не ограничен; large mixed-interface/live нагрузка остаётся предметом production измерения. Следующий12.3.62 — скрытый срез24commRecs.
|
||||
|
||||
|
||||
## 12.3.62 — исходный скрытый срез Community
|
||||
## 12.3.62 — исходный скрытый срез Community (2026-10-04)
|
||||
|
||||
2026-10-04. Live API fixture1000 правил Home1/1WAN/1JH/безExit, strict servers/rules DTO. UI показывает BGP community(24),24rows/504tableDOM/1197pageDOM/1916ms dev-ready. Это не performance-успех:976 правил вообще исключены до grid, counts не показывают реальный источник.1 browser/test lint passed, API writes отсутствуют. Следующий12.3.63 удаляет срез и ограничивает отображение pages50, сохраняя unknown indices безExit.
|
||||
|
||||
|
||||
## 12.3.63 — весь Community-каталог с ограниченным отображением
|
||||
## 12.3.63 — весь Community-каталог с ограниченным отображением (2026-10-04)
|
||||
|
||||
2026-10-04. Удалён скрытый slice24 после фильтра sourceServerId; ownership и расчётная семантика сохранены. ReUI DataGrid pages50/full search/communityName/gateway/path, exact counts, full-model sort, fixed widths/horizontalScroll/pinnedCommunity. Row key формируется до фильтрации из прежнего home/community/index; pins сохраняются при search/sort/страницах/refresh. Global рекомендаций count теперь относится ко всем правилам. Live режим по-прежнему не применяет BGP-рекомендации; симуляция доступна только demo.
|
||||
|
||||
@@ -710,14 +710,14 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
Осталось5manualPagination:true: scheduler11 fixedkeys, live GRE pools пусты/demo ограничен fixtures, probes schedule толькоdemo, subusers не подключён, trafficflows серверныйtop50 принят с честным указанием среза. Не мигрировать искусственно недостижимые live каталоги. Дальше12.4.6/12.4.7 — повтор общей main/context матрицы после delta. Внешняя12.5 не выполнена.
|
||||
|
||||
|
||||
## 12.4.6 — общая main регрессия после больших каталогов
|
||||
## 12.4.6 — общая main регрессия после больших каталогов (2026-10-04)
|
||||
|
||||
2026-10-04, HEAD991f2b3.1162 сценария/190 файлов:1161passed,1unexpected,0skipped/0flaky за55.2min. Edge/1worker/retries0/maxFailures12. Единственный сбой terminal-data: поле не получило focus после успешного повтора BFD error. Вероятная гонка requestAnimationFrame с React commit/re-enable. Общая матрица НЕ объявляется полностью пройденной. Доказательство docs/ux-ui/acceptance/main-delta-2026-10-04.json; trace/error сохранены в tmp перед следующими тестами. Перегенерированные этим прогоном исторические PNG восстановлены по явному списку tmp/ux-main-regenerated-screens.json; собственные новые матричные/Community screenshots сохранены.
|
||||
|
||||
Все новые большие профили, Firewall/OSPF/optimizer сценарии вошли в этот общий прогон. Статический аудит дополнительно выявил полный join1000WAN в шапке HomeCard и полные site-строки JH/Exit в KPI: число DOM nodes не измеряет высоту текстовых сводок. Следующий12.4.6.1 — фокус после commit и профильный repeat; затем12.4.7 context. Внешняя12.5 отдельно.
|
||||
|
||||
|
||||
## 12.4.6.1 — исправление гонки фокуса терминала
|
||||
## 12.4.6.1 — исправление гонки фокуса терминала (2026-10-04)
|
||||
|
||||
2026-10-04. requestAnimationFrame из finally заменён pendingFocus ref и DOM effect после commit. Поле получает focus только после снятия disabled; unmounted/blocked terminal не перехватывает фокус. Зависимость от lines покрывает быстрый запрос, даже когда executing=true/false попадают в один React batch. Порядок запросов, права, ownership и сохранение команд не менялись.
|
||||
|
||||
@@ -726,14 +726,14 @@ WAN1000×JH1:1000→50rows,28019→1419tableDOM,28712→2149pageDOM,2264ms dev-r
|
||||
Это профильное закрытие единственного сбоя main12.4.6, не новый полный main прогон на исправленном HEAD. Следующий12.4.7 —221 context/26files (актуальная discovery; прежняя матрица213/25). Внешняя12.5 остаётся.
|
||||
|
||||
|
||||
## 12.4.7 — общая context регрессия после delta
|
||||
## 12.4.7 — общая context регрессия после delta (2026-10-04)
|
||||
|
||||
2026-10-04, HEADb1f8326.221/221passed/26files за15.8min,0unexpected/0skipped/0flaky,Edge/1worker/retries0/maxFailures12. Включены Firewall context и все поздние read/write/backend/mode/ABA/checkpoint сценарии. Evidence docs/ux-ui/acceptance/context-final-delta-2026-10-04.json. Terminal context прошёл на исправленном source. Перегенерированных tracked screenshots нет.
|
||||
|
||||
Main12.4.6 относится к991f2b3:1161/1162; единственный focus race исправлен и проверен20+15 в12.4.6.1. Полный main после этого маленького исправления не повторялся. Внешняя12.5 PG/RouterOS/integrations не выполнена; stage12 не завершён. Следующий12.3.64 — высота сводки1000WAN, затем дополнительные CPU/pool профили.
|
||||
|
||||
|
||||
## 12.3.64 — компактная текстовая сводка WAN
|
||||
## 12.3.64 — компактная текстовая сводка WAN (2026-10-04)
|
||||
|
||||
2026-10-04. Baseline1000WAN:31783chars/13695px высоты summary на320px, хотя grid уже50rows/1419DOM. В HomeCard теперь preview первых3 WAN с прежними ISP/IP, точный remaining/total и понятная ссылка в copy на существующую вкладку WAN×JH. Для ≤3WAN описание не сокращено. Исходный массив/расчёт/поиск/таблица не срезаются.
|
||||
|
||||
@@ -742,14 +742,14 @@ Final1000WAN:134chars/86.5px высоты summary; WAN10:130chars/86.5px. В т
|
||||
Общие main/context доказательства относятся к прежним HEAD; этот небольшой текстовый delta проверен профильными сценариями. Исторический context-delta(a558412/36) сохранён отдельно от нового context-final-delta(b1f8326/221), чтобы ссылки12.4.3 не изменили смысл. Следующий12.3.65 — pure CPU7WAN×1000pool с hard timeout; не запускать в UI. KPI captions/native selector и худшая DFS/full-route комбинация не приняты этим блоком. Внешняя12.5 остаётся.
|
||||
|
||||
|
||||
## 12.3.65 — CPU-профили pool1000
|
||||
## 12.3.65 — CPU-профили pool1000 (2026-10-04)
|
||||
|
||||
2026-10-04, UI/source расчёта не менялись. Child script принимает integer count20–1000, hard timeout10с, без API/DB/браузера/сети.7WAN×1000: equal1217.5ms (IDs p0..6), varied7967.5ms (p13..19), freshness не завершился за10с, процесс остановлен. Startup отдельно ~0.4s. Freshness создаёт1000 разных возрастов, будущие timestamps не используются. ESLint скрипта прошёл; корректность ID проверяется после успешного завершения.
|
||||
|
||||
Это оставшийся CPU риск, а не performance приёмка. В current DFS повторяются Date.parse/trim/score и оценка upper для ветвей, уже достигших максимум. Следующий12.3.66: score cache только для bounded WAN≤7 DFS с одним snapshot time и early stop при достижении node upper, preserving first tie/order/forced picks/greedy fallback. Проверить1200 legacy oracle fixtures, raw observations, profiles20/1000. Худшая комбинаторика и весь full-route product по-прежнему не ограничены.
|
||||
|
||||
|
||||
## 12.3.66 — точный выбор проб из большого pool
|
||||
## 12.3.66 — точный выбор проб из большого pool (2026-10-07)
|
||||
|
||||
2026-10-07. Score matrix вычисляется только при exact DFS≤7WAN/pool≥WAN, с единым временем ранжирования на назначение JH. Сырые наблюдения/даты не меняются, greedy fallback сохранён. Допустимый score-first greedy путь даёт только lower total, не готовое назначение. Пока DFS не нашёл реальный witness, равные верхние границы НЕ отсекаются; первое равное назначение остаётся в исходном pool order. Node stop требует реального bestAssign. Для каждого кандидата child upper выводится из topK максимумов текущего узла с исключением занятой пробы; уже проигрышные siblings не пересканируют весь pool. Forced pick сохраняется, даже если ветвь отсечена.
|
||||
|
||||
@@ -760,7 +760,7 @@ Pure child CPU1000: equal1217.5→15.6ms,varied7967.5→14.5ms,freshness10с tim
|
||||
Следующий12.3.67: KPI captions JH/Exit (повторы/пустая площадка/unknown), затем separate full-route CPU profile. Общая main/context регрессия12.4.6/7 относится к прежним HEAD; этот delta принят профильными51+8. Внешняя12.5 не выполнена.
|
||||
|
||||
|
||||
## 12.3.67 — краткие и достоверные KPI-подписи площадок
|
||||
## 12.3.67 — краткие и достоверные KPI-подписи площадок (2026-10-07)
|
||||
|
||||
2026-10-07. В существующем ReUI Stats12/KpiStatGrid footer переиспользован ReUI Badge outline/sm. Короткие уникальные названия (≤3 и≤24символов) показываются без повторов; большой/длинный список заменяется точным количеством площадок. Отдельно виден count узлов без площадки: пустые/whitespace/нормализованный — не считаются реальной площадкой. Нет полного join большого каталога. Неизвестный каталог сообщает «Площадки неизвестны»; нулевой topology pool — «Нет узлов в расчёте», потому что live topology исключает offline/disabled, а устройства могут существовать в inventory. Права/выбор узлов/расчёт/источники не менялись.
|
||||
|
||||
@@ -769,14 +769,14 @@ Pure child CPU1000: equal1217.5→15.6ms,varied7967.5→14.5ms,freshness10с tim
|
||||
Далее12.3.68 pure child CPU profile full-route product≤100000/timeout10s/memory cap; не грузить тяжёлый baseline в UI. Остаточные DFS worst-case/full-route memory/native selector и внешняя12.5 не объявляются принятыми. Общая main/context регрессия относится к ранее записанным HEAD; текущий footer delta проверен профильными16+2.
|
||||
|
||||
|
||||
## 12.3.68 — bounded CPU-профиль генерации полных маршрутов
|
||||
## 12.3.68 — bounded CPU-профиль генерации полных маршрутов (2026-10-07)
|
||||
|
||||
2026-10-07. Pure child process без API/DB/браузера/сети, product≤100000/dimensions1–1000/timeout10s/V8heap256MB.1000WAN×1JH×1Exit1000routes≈16.9ms/heapDelta1.8MB;10×100×100100000routes≈329.6ms/22.0MB;100×10×100≈266.7ms/27.1MB. Первый измеренный прогон; точные повторные значения и source SHA256 в docs/ux-ui/acceptance/optimizer-routes-baseline-2026-10-07.json. Heap delta не peak/retained memory, время не production p95/SLA. Проверены count/first-last IDs/bestFirst/сохранение отсутствующих наблюдений. ESLint скрипта прошёл.
|
||||
|
||||
Baseline в UI не запускался. Повторный Array.find по1000wanJhLegs на каждую из100000комбинаций даёт лишние линейные сканирования. Следующий12.3.69: map lookup с сохранением первого matching leg и порядка routes/ties, профильный repeat. Полный product всё ещё хранится/сортируется в памяти; опасную произвольную размерность этот профиль не принимает. Далее аудит TX/RX и связи wildcard-пробы с конкретным WAN, прежде чем объявлять observed correctness закрытой. Внешняя12.5 отдельно.
|
||||
|
||||
|
||||
## 12.3.69 — lookup leg и исключение ненужных расчётов без WAN
|
||||
## 12.3.69 — lookup leg и исключение ненужных расчётов без WAN (2026-10-07)
|
||||
|
||||
2026-10-07. WAN/JH map сохраняет первый matching leg, lookup вынесен из Exit loop. JH/Exit legs не строятся, если нет настроенного WAN: их не может использовать ни один full route. Порядок WAN/JH/Exit, сортировка/ties, raw source identity, all routes и unknown community indices сохранены.13pure tests прошли, включая1230 assignment oracle fixtures и новые проверки8route probe ownership/ties/zeroWAN.12browser (large homes/routes/observed/tables) passed; non-incremental typecheck до dev, targeted lint и production build успешны.
|
||||
|
||||
@@ -785,14 +785,14 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
После чтения реального producer обнаружены следующие вопросы достоверности:source btest выполняется на srcClient,TX/RX экспортируются без переименования,optimizer пока читаетTX какDL. srcInterface передаётся только after-ping, не bandwidthTest; поле не доказывает WAN скоростного теста. Producer parser/fallback отсутствующую скорость превращает в0, а explicit avg0 может заменяться mean series. Следующий12.3.70 фиксирует аудит с первичными RouterOS источниками и планирует точечные исправления данных/подписей. Команды/права/правила сетевых операций не менялись; real PG/RouterOS/integrations12.5 не выполнялись.
|
||||
|
||||
|
||||
## 12.3.70 — аудит источника и смысла observed metrics
|
||||
## 12.3.70 — аудит источника и смысла observed metrics (2026-10-07)
|
||||
|
||||
2026-10-07. Код сопоставлен с первичной RouterOS bandwidth-test документацией. Подтверждены неверное TX→DL, неподтверждённая связь btest с srcInterface/WAN, missing→0/explicit0→mean и отсутствие проверки terminal status перед success write. Это новые ограничения, которые ранее проверенные mock snapshots не доказывали. Отдельный протокол/таблица/схема: docs/ux-ui/optimizer-observed-audit-2026-10-07.md.
|
||||
|
||||
Только read-only audit/docs, без DB/RouterOS/сетевых операций. Дальше71direction mapping,72scope labels,73nullable rate parser/producer/DTO,74terminal confirmation. Фактические команды, права и routing rules не меняются этой серией; real12.5 отдельно. Исторические0 не переписывать автоматически.
|
||||
|
||||
|
||||
## 12.3.71 — направление измерений DL/UL
|
||||
## 12.3.71 — направление измерений DL/UL (2026-10-07)
|
||||
|
||||
2026-10-07. Для Home→JH RX клиентского bandwidth-test отображается как DL к Home, TX как UL от Home. JH→Exit использует тот же смысл; для reverse Exit→JH клиент на дальней стороне, поэтому TX→DL/RX→UL. Raw getter сохраняет nullable/zero/decimal и исходную дату; модельные maxDl/maxUl применяются к правильной стороне. Команды RouterOS, параметры теста, подбор probe IDs и правила операций не менялись. Ввод/трактовка скоростных данных исправлены по источнику srcClient и RouterOS CLI docs (ссылка в observed audit).
|
||||
|
||||
@@ -801,7 +801,7 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
Наблюдения по-прежнему не доказывают конкретный WAN bandwidth-test: следующее72scope labels. Backend producer missing→0/terminal status и OSPF metrics/route builder TX→DL требуют73–75. OSPF traffic fallback уже используетRX→DL, измеренная дата speed-probe намеренноnull и не требует изменения. Real12.5 отдельно.
|
||||
|
||||
|
||||
## 12.3.72 — область скоростного снимка и единицы
|
||||
## 12.3.72 — область скоростного снимка и единицы (2026-10-07)
|
||||
|
||||
2026-10-07. Матрица с probe snapshot явно объясняет:скорость — пара устройств, привязка WAN расчётная, DL кHome/UL отHome. В existing «Как читать расчёт» добавлена роль srcInterface для Ping после теста и выбор пути скорости маршрутизацией устройства. Скорости и model limits подписаны Мбит/с. Новых RouterOS параметров, routing rules, методов или API операций нет.
|
||||
|
||||
@@ -810,7 +810,7 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
Остаются73missing→0/nullable consumer,74native terminal status,75OSPF direction. Чтение frontend consumer подтвердило ещё Math.round(null)→0 и доверие POST без runtime DTO; фиксировать73 вместе с producer. Границы мобильного pinnedWAN и соседней metric cell требуют отдельного76geometry теста, а не только проверки первого столбца. Внешняя12.5 отдельно.
|
||||
|
||||
|
||||
## 12.3.73 — неизвестная скорость и подтверждение POST
|
||||
## 12.3.73 — неизвестная скорость и подтверждение POST (2026-10-07)
|
||||
|
||||
2026-10-07. Backend parser возвращает null для отсутствующих/невалидных скоростей, переводит RouterOS SI bits/s в Мбит/с и сохраняет явный total-average 0 вместо замены средним. Серии включают только валидные значения; отсутствующие samples не получают нулей, временная геометрия пропусков здесь не реализована. Поля БД уже nullable, миграции и переписывания исторических записей нет. Frontend проверяет ok/result/runId и nullable finite nonnegative rates до публикации ответа. Контекст проверяется раньше DTO, поздний ответ чужого источника игнорируется. Running averages null; Math.round(null) исключён. Ошибка сохраняет предыдущие probe averages и подтверждённую историю.
|
||||
|
||||
@@ -819,7 +819,7 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
Следующий74: native terminal status ещё не проверяется перед done/DB write.75OSPF direction и76mobile metric geometry остаются. DTO доказывает целостность ответа, но не факт выполнения на устройстве. Реальная RouterOS/PG приёмка12.5 отдельно.
|
||||
|
||||
|
||||
## 12.3.74 — подтверждённое завершение bandwidth-test
|
||||
## 12.3.74 — подтверждённое завершение bandwidth-test (2026-10-07)
|
||||
|
||||
2026-10-07. Pure guard проверяет структуру native rows, все известные failure statuses и последний сообщённый status. Только done testing допускает дальнейший расчёт, after-ping и DB success write. Connecting/running, отсутствие статуса, неизвестный status, malformed response или error/failure/trap marker отклоняются с неизвестным результатом; native failures имеют краткие русские сообщения. Числовой enum не принимается как строковое подтверждение. Подтверждённый one-direction result может иметь null на другой стороне и0 на измеренной.
|
||||
|
||||
@@ -828,7 +828,7 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
Источник native statuses: [RouterOS CLI bandwidth-test](https://manual.mikrotik.com/docs/cli-reference/tool/bandwidth-test/). Последний reported done допускает последующие rows без status, но любые failure markers отклоняются даже после completion. Реальный REST shape/версия RouterOS и PG writes требуют12.5. Следующие75direction OSPF и76mobile geometry.
|
||||
|
||||
|
||||
## 12.3.75 — направление скоростных входов OSPF
|
||||
## 12.3.75 — направление скоростных входов OSPF (2026-10-07)
|
||||
|
||||
2026-10-07. Источник выбирается через srcServerId текущего роутера, поэтому единый pure getter читает RX как DL и TX как UL. Getter используется raw observed и model speeds; route builder вызывает модельный helper вместо прежнего обратного сопоставления. Raw zero/null/fraction/source/date сохраняются. Модельные округление, floor1 и traffic fallback сохранены; formula Cost, pingWeight, unique probe assignment и порядок операций не менялись. Рекомендации Cost могут измениться из-за исправленных asymmetric inputs. Traffic fallback RX→DL/TX→UL уже был верен. Дата speed остаётсяnull, Ping date не подставляется.
|
||||
|
||||
@@ -837,7 +837,7 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
Следующий76: на320px проверить видимость всей соседней metric cell за pinnedWAN, исправить column sizing при подтверждённой проблеме. Общая main/context регрессия прежних HEAD требует обновления позже;12.5 остаётся внешней.
|
||||
|
||||
|
||||
## 12.3.76 — читаемая мобильная WAN/JH матрица
|
||||
## 12.3.76 — читаемая мобильная WAN/JH матрица (2026-10-07)
|
||||
|
||||
2026-10-07. Геометрический baseline320px подтвердил дефект: viewport right303,pinned right197,cell right397 (200px колонка рядом с180px WAN). Пропорции ColumnDef на телефоне теперь112/160, desktop180/200 сохранены (actual table fill может расширять размеры). Hook useIsMobile и installed ReUI DataGridShell/ScrollArea/Table переиспользованы, primitive/hook/theme не менялись. Имя/интерфейс WAN ограничены truncate/min-w-0; полное значение остаётся DOM text/title и доступно поиску.
|
||||
|
||||
@@ -846,7 +846,7 @@ CPU final:1000routes13.3ms;100000(10×100×100)49.7ms;100000(100×10×100)44.0ms
|
||||
Доказательства: [геометрия до/после](ux-ui/acceptance/matrix-geometry-2026-10-07.json), [экран320px](ux-ui/screens/optimizer-matrix-readable-320.png) просмотрен. Historic9optimizer и2speed PNG восстановлены; предыдущие снимки не переписаны. Следующий12.4.8main/12.4.9context повтор на новом HEAD. Внешняя12.5 не выполнена.
|
||||
|
||||
|
||||
## 12.5.0 — подготовка внешнего протокола
|
||||
## 12.5.0 — подготовка внешнего протокола (2026-10-07)
|
||||
|
||||
2026-10-07. [Протокол12.5](ux-ui-external-acceptance.md) подготовлен по фактическим backend routes/services/migrations: PG bootstrap0008/0009, backup/restore/rollback и writer lifecycle; outbox claim/dedupe/CAS/status-history; native bandwidth terminal/direction/scope, OSPF и остальные сетевые операции; реальные роли/интеграции. Каждая строка задаёт независимое подтверждение результата и очищенные артефакты. Локальные ссылки проверены. Внешние операции не выполнялись, credentials/dumps не читались и не сохранялись.
|
||||
|
||||
@@ -855,14 +855,14 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
12.4.8 main1176 продолжает выполняться на runtime source HEAD579e816. Этот блок меняет только docs; исходники/конфигурация тестов не изменились после старта. Дальше завершить main, сохранить результат и запустить12.4.9context.12.5 не принята.
|
||||
|
||||
|
||||
## 12.4.8 — общая main регрессия после исправлений оптимизатора/скорости
|
||||
## 12.4.8 — общая main регрессия после исправлений оптимизатора/скорости (2026-10-07)
|
||||
|
||||
2026-10-07. Runtime HEAD579e816:1176/1176passed,0unexpected/skipped/flaky,34.9min. Edge/1worker/retries0/maxFailures12. После старта добавлен только внешний протокол docs5fedf7a; runtime diff579e816→current проверен пустым. [Итог main](ux-ui/acceptance/main-final-2026-10-07.json) записан отдельно от исторического12.4.6. Сырой JSON сохранён в tmp/ux-main-final-20261007.json. Исторические PNG, перегенерированные тестами, восстановлены по проверенному списку tmp/ux-main-regenerated-screens-20261007.json. Чужие skill/AGENTS/config/cache изменения не включены.
|
||||
|
||||
Этот общий прогон содержит новые large pool/site captions, direction/scope/nullable POST и6mobile geometry cases. Старый terminal focus race в этом прогоне не повторился. Source review дополнительно нашёл обновление speed probe только по id без endpoint ownership; snapshot update и run insert были отдельными операциями. Следующий небольшой12.3.77 защищает привязку пары и атомарность этих двух записей, без смены RouterOS команд; затем12.4.9 полныйcontext. Внешняя12.5 отдельно.
|
||||
|
||||
|
||||
## 12.3.77 — пара устройств и атомарная запись speed-run
|
||||
## 12.3.77 — пара устройств и атомарная запись speed-run (2026-10-07)
|
||||
|
||||
2026-10-07. Preflight сверяет probeId/srcServerId/dstServerId до создания RouterOS client/команды, mismatch/deleted даёт409. UPDATE snapshot success/error содержит id AND source AND destination и RETURNING id. Если пара изменилась/проба удалена за время native test, её snapshot не обновляется, история actual endpoints сохраняется с probeId=null. Snapshot и run insert теперь внутри одной Drizzle transaction для success и failure. Ad-hoc run без probeId сохраняет историю без обновления пробы. Команды, параметры, locks, permissions/schema не менялись.
|
||||
|
||||
@@ -871,14 +871,14 @@ Source review: stopScheduler очищает таймеры, stopTrafficFlowListe
|
||||
Полный main1176 относится к579e816 до backend delta; frontend runtime после него не менялся, добавлен1профильный409тест. Следующий12.4.9context; после него12.3.78: adapter каталога сохраняет observations по id, нужно проверить смену пары и local publish после config save. Текущий77защищает пару при запуске/результате, не является CAS полной версии параметров пробы.
|
||||
|
||||
|
||||
## 12.4.9 — общая context регрессия после speed ownership
|
||||
## 12.4.9 — общая context регрессия после speed ownership (2026-10-07)
|
||||
|
||||
2026-10-07, HEADa3fcba0.221/221passed,26files,0unexpected/skipped/flaky,7.5min. Edge/1worker/retries0/maxFailures12. [Итог context](ux-ui/acceptance/context-final-2026-10-07.json) сохранён отдельно от старых матриц; source tmp/ux-context-final-20261007.json. Смена backend/mode, ABA/late data/write/permission, закрытие scope и checkpoint прошли.
|
||||
|
||||
Main1176 на579e816 и backend ownership delta25pure/5browser наa3fcba0 остаются разными доказательствами, HEAD не подменён. Следующий78: при смене пары adapter upsert и frontend optimistic publish сохраняли старые observations; исправить после общего прогона и проверить профиль. Внешняя12.5 всё ещё не выполнена.
|
||||
|
||||
|
||||
## 12.3.78 — снимок при изменении пары и приоритет истории
|
||||
## 12.3.78 — снимок при изменении пары и приоритет истории (2026-10-07)
|
||||
|
||||
2026-10-07. Catalog replacement читает и блокирует существующие probe rows внутри прежней транзакции/advisory lock. Смена source/destination или новый id сбрасывает9наблюдаемых полей вnull, перестановка/enable и та же пара сохраняют measurements. История не удаляется. Frontend публикует configuration только после подтверждения; той же паре берёт последние observations из текущего state вместо readonly копии старого draft. Новый target получаетnull. Общий emptySpeedProbeObservations переиспользован через contracts; ReUI primitives/theme/composition сохранены.
|
||||
|
||||
@@ -889,7 +889,7 @@ Main1176 на579e816 и backend ownership delta25pure/5browser наa3fcba0 ос
|
||||
Этот delta выполнен после общих main579e816/contexta3fcba0; общие результаты не переименованы в проверку нового HEAD. Следующий79: POST command body ещё использует parseInt/enum defaults; проверить строгий DTO до DB/native, сохранив валидные ad-hoc/scheduled сценарии и существующие команды/права. Полный CAS параметров пробы и реальные native timestamps также не объявлены проверенными. Внешняя12.5 отдельно.
|
||||
|
||||
|
||||
## 12.3.78.1 — удаление неиспользуемого кода прежней таблицы
|
||||
## 12.3.78.1 — удаление неиспользуемого кода прежней таблицы (2026-10-07)
|
||||
|
||||
2026-10-07. Из uptime удалены неиспользуемые MiniBar/resBarColor/resPctColor/SortIcon/ResSortKey,2импорта и чистое вычислениеy1,3неактуальных eslint-disable directives. Reference search и предыдущий lint подтверждали отсутствие использования; активные render/API/measurement paths не менялись. Установленные ReUI primitives/hooks/theme не изменены.
|
||||
|
||||
|
||||
Reference in new issue
Block a user