fix(netflow): исключить специальные IPv4 из внешнего обогащения
This commit is contained in:
1 parent
f3156b44cf
commit
b619ef208e
14 files changed
+448
-81
No files matched your search
@@ -1,6 +1,6 @@
|
||||
# UX/UI: протокол внешней приёмки 12.5
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.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-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.12.5 открыт.
|
||||
|
||||
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
|
||||
|
||||
@@ -1499,3 +1499,15 @@ Own issuer chain удалена только после доказательст
|
||||
Реальный production RIPE service в отдельном процессе, без чтения/записи рабочего кеша, обогатил194.226.121.150 и104.165.244.7: network-info/maxmind-geo-lite/as-overview200, prefix/ASN/holder/country/coordinates получены. Это provider metadata, не гарантия физического положения хоста и не complete NetFlow pipeline. Дополнительный no-fetch контроль с198.18.139.1 failed: benchmark IPv4 ошибочно отправлен upstream. Private192.168/loopback контроль не вызвал запросов; public cache hits проверяются отдельно в следующем блоке. Этот отказ сохранён, весь RIPE test не объявлен success. [Регрессия, compiled hashes и partial RIPE](ux-ui/acceptance/regression-runtime-ripe-2026-10-11.json).
|
||||
|
||||
Перед регрессией сохранены586 existing evidence files.125 автоматически изменённых файлов восстановлены; все исходные SHA256 совпали, включая восемь pre-existing dirty GRE/VXLAN PNG. Новые135–138 evidence не затёрты. Подробные временные logs/snapshots в ignored tmp; побочные generated screenshots не включены в коммит. Source/runtime не менялись; backend/frontend ux-log133. Следующий140 — исправление фильтра специальных IPv4 согласно IANA, профильные backend/flow проверки, build/deploy и повторный live RIPE.12.5 открыт.
|
||||
|
||||
## 12.5.140 — специальные IPv4, RIPE и изолированная SQL-приёмка (2026-10-11)
|
||||
|
||||
Исправлен isNonPublicIp: benchmark198.18/15, TEST-NET ranges, reserved240/4 и non-global IETF assignments исключены из внешнего RIPE lookup. Глобальные PCP/TURN anycast192.0.0.9/10 сохранены eligible. Фиксированные CIDR masks вычисляются один раз; hot flow predicate больше не разбирает строки CIDR/адреса для каждого range. IPFIX tuples, NAT, network config и DB schema не менялись.31 boundary/exception checks и stale public-cache bypass/no-fetch тесты passed; [IANA](https://www.iana.org/assignments/iana-ipv4-special-registry/).
|
||||
|
||||
Local test:traffic-flow (20 scripts) exit0, но шесть SQL modules включали PG skips — не объявлены pass. Все шесть затем проверены against production candidate в четырёх собственных temporary PostgreSQL DBs. Parent создаёт exact own DB, child проверяет current_database до test import, DATABASE_PATH/GEOIP_DIR вынесены в ephemeral container; original DB/legacy SQLite не использовались fixtures. Все четыре DB удалены с owner/prefix check, включая failed runs.
|
||||
|
||||
Initial failures сохранены и исправлены в tests: analytics зависел от чужого hardcoded server7 (FK); теперь создаётся own server, все SQL scoped, finally cleanup. Map-hops использовал TEST-NET как вымышленные публичные сервисы; fixtures получили eligible synthetic IPv4, assertions не ослаблены. Statistics не создавал historical server_snapshots partition; теперь создаёт exact fixed-date partition. Ingest/analytics/map-hops/purge/facts-rebuild/statistics SQL modules passed across bounded runs; прошедшие modules без необходимости не повторялись. Mock upstream failure fixture перенесён с TEST-NET на eligible address и явно подтверждает реальный вызов stub.
|
||||
|
||||
Changed-file ESLint, backend production build, RIPE/IP profile tests passed. Реальный production RIPE service снова обогатил два публичных IP; повторный public cache hit и special/private controls дают0 дополнительных requests. Действует backend ux-ripe140/frontend ux-log133; backend/PG healthy. Все984 emitted outputs совпали с candidate Docker, actual deployed IP service SHA256 совпал; private rollback env/old image сохранены. [Полные попытки/проверки/границы](ux-ui/acceptance/flow-special-ipv4-2026-10-11.json).
|
||||
|
||||
Readonly live traffic/statistics smoke320: rendering200/no overflow/pageerror0. При этом traffic отправил initial requests /api/traffic/servers/srv1 и /interfaces, оба400/id is required; это existing mock-id hydration/catalog gate defect, не часть IPv4 fix и не скрытый success. [Smoke](ux-ui/acceptance/browser-flow-special-ip-2026-10-11.json). Следующий141 — gate live fetch до подтверждённого numeric server id/catalog. IPv6 special ranges — отдельно. Full UI1465 accepted139 до backend-only140; backend/SQL/live delta проверены отдельно, frontend не менялся.12.5 открыт.
|
||||
+3
-3
@@ -1,12 +1,12 @@
|
||||
# План реализации UX/UI по пятичасовым окнам
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.12.5 открыт.
|
||||
|
||||
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-10. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
|
||||
|
||||
## Актуальная точка продолжения — 2026-10-10
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.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-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.12.5 открыт.
|
||||
|
||||
Подробный объём, протоколы, схема и ограничения: [12.5.77 в журнале](ux-ui-progress.md).
|
||||
+14
-2
@@ -1,6 +1,6 @@
|
||||
# UX/UI: журнал реализации
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.12.5 открыт.
|
||||
|
||||
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
|
||||
|
||||
@@ -36,7 +36,19 @@
|
||||
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
|
||||
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
|
||||
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–139 и ограничения ниже. Runtime backend/frontend ux-log133. |
|
||||
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка завершена в границах12.3.83; внешняя12.5 в работе, выполненные блоки1–140 и ограничения ниже. Runtime backend ux-ripe140/frontend ux-log133. |
|
||||
|
||||
## 12.5.140 — специальные IPv4, RIPE и изолированная SQL-приёмка (2026-10-11)
|
||||
|
||||
Исправлен isNonPublicIp: benchmark198.18/15, TEST-NET ranges, reserved240/4 и non-global IETF assignments исключены из внешнего RIPE lookup. Глобальные PCP/TURN anycast192.0.0.9/10 сохранены eligible. Фиксированные CIDR masks вычисляются один раз; hot flow predicate больше не разбирает строки CIDR/адреса для каждого range. IPFIX tuples, NAT, network config и DB schema не менялись.31 boundary/exception checks и stale public-cache bypass/no-fetch тесты passed; [IANA](https://www.iana.org/assignments/iana-ipv4-special-registry/).
|
||||
|
||||
Local test:traffic-flow (20 scripts) exit0, но шесть SQL modules включали PG skips — не объявлены pass. Все шесть затем проверены against production candidate в четырёх собственных temporary PostgreSQL DBs. Parent создаёт exact own DB, child проверяет current_database до test import, DATABASE_PATH/GEOIP_DIR вынесены в ephemeral container; original DB/legacy SQLite не использовались fixtures. Все четыре DB удалены с owner/prefix check, включая failed runs.
|
||||
|
||||
Initial failures сохранены и исправлены в tests: analytics зависел от чужого hardcoded server7 (FK); теперь создаётся own server, все SQL scoped, finally cleanup. Map-hops использовал TEST-NET как вымышленные публичные сервисы; fixtures получили eligible synthetic IPv4, assertions не ослаблены. Statistics не создавал historical server_snapshots partition; теперь создаёт exact fixed-date partition. Ingest/analytics/map-hops/purge/facts-rebuild/statistics SQL modules passed across bounded runs; прошедшие modules без необходимости не повторялись. Mock upstream failure fixture перенесён с TEST-NET на eligible address и явно подтверждает реальный вызов stub.
|
||||
|
||||
Changed-file ESLint, backend production build, RIPE/IP profile tests passed. Реальный production RIPE service снова обогатил два публичных IP; повторный public cache hit и special/private controls дают0 дополнительных requests. Действует backend ux-ripe140/frontend ux-log133; backend/PG healthy. Все984 emitted outputs совпали с candidate Docker, actual deployed IP service SHA256 совпал; private rollback env/old image сохранены. [Полные попытки/проверки/границы](ux-ui/acceptance/flow-special-ipv4-2026-10-11.json).
|
||||
|
||||
Readonly live traffic/statistics smoke320: rendering200/no overflow/pageerror0. При этом traffic отправил initial requests /api/traffic/servers/srv1 и /interfaces, оба400/id is required; это existing mock-id hydration/catalog gate defect, не часть IPv4 fix и не скрытый success. [Smoke](ux-ui/acceptance/browser-flow-special-ip-2026-10-11.json). Следующий141 — gate live fetch до подтверждённого numeric server id/catalog. IPv6 special ranges — отдельно. Full UI1465 accepted139 до backend-only140; backend/SQL/live delta проверены отдельно, frontend не менялся.12.5 открыт.
|
||||
|
||||
## 12.5.139 — общая регрессия, сверка Docker и реальный RIPE (2026-10-11)
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Оставшаяся внешняя приёмка — 2026-10-11
|
||||
|
||||
Это актуальная матрица после 12.5.139. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
Это актуальная матрица после 12.5.140. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
|
||||
|
||||
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-log133`, frontend `ux-log133`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
|
||||
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-ripe140`, frontend `ux-log133`; production lab использует AUTH_REQUIRED=false. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
|
||||
|
||||
| Раздел | Подтверждено | Осталось / условие завершения |
|
||||
| --- | --- | --- |
|
||||
@@ -17,8 +17,8 @@
|
||||
| BGP | Established83, exact /32 exchange/API/UI/administrative withdrawal92, BFD primary GRE loss/alternate/recovery93 | Hold timer/TCP loss безBFD принят104; packet loss в переходе, разные внешние peers/WAN policy, IPv6/scale. Два логических пути используют тот же public WAN; physical redundancy не принята |
|
||||
| Recursive routes | Production PUT/change/own history restore88, disabled guards, partial/unknown/applied outcomes, live формы/контекст | Автоматический rollback/retry, durable receipts и несколько экземпляров отсутствуют; PUT не является idempotent noop. Полная произвольная legacy catalog миграция не принята |
|
||||
| Diagnostics/terminal | Allowlist/native reads, Ping/trace/route/MTU/DNS, actual avg-rtt, disabled guards, JWT/live PC/mobile89; real default memory tail/log limits/API/UI133 | DNS использует backend resolver; MTU — ограниченная оценка, не гарантированный максимум. Stop ожидания не доказывает остановку RouterOS команды; arbitrary CLI и physical disconnect не приняты |
|
||||
| Portal/интеграции | Локальные и isolated JWT guards; UI/API error states в границах журналов | Настоящий Portal issuer/login/отзыв прав; внешние RIPE/MaxMind/S3/container/certificate jobs и Gitea delivery требуют отдельных тестовых endpoints/аккаунтов. Не отправлять сообщения и не публиковать релиз без соответствующего поручения |
|
||||
| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | SDK special IPv4 guard fix140 и его профильная проверка/deployment; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию |
|
||||
| Portal/интеграции | Локальные и isolated JWT guards; UI/API error states в границах журналов | Настоящий Portal issuer/login/отзыв прав; RIPE SDK two-IP/no-fetch passed140, полный flow pipeline/local licensed MaxMind/S3/container/certificate jobs и Gitea delivery требуют отдельных тестовых endpoints/аккаунтов. Не отправлять сообщения и не публиковать релиз без соответствующего поручения |
|
||||
| Общая приёмка | Локальная12.3.83; UI1244/context221/compiled984 parity139; профильные build/E2E/live проверки последующих блоков | Traffic initial live mock-id gate141; IPv6 special ranges; последующие изменения проверять отдельно; scoped axe не означает полную WCAG сертификацию |
|
||||
|
||||
Доказательства и точные ограничения: [полная история этапа12](ux-ui-stage-12.md), [внешний протокол](ux-ui-external-acceptance.md), [BGP93](ux-ui/acceptance/bgp-failover-2026-10-10.json), [паспорт стенда](ux-ui-test-server.md). Невыполненные пункты не являются все блокерами данного лабораторного сценария: для выпуска необходимо явно определить требуемые конфигурации и принять их либо согласовать ограничение.
|
||||
|
||||
@@ -414,3 +414,15 @@ Own issuer chain удалена только после доказательст
|
||||
Реальный production RIPE service в отдельном процессе, без чтения/записи рабочего кеша, обогатил194.226.121.150 и104.165.244.7: network-info/maxmind-geo-lite/as-overview200, prefix/ASN/holder/country/coordinates получены. Это provider metadata, не гарантия физического положения хоста и не complete NetFlow pipeline. Дополнительный no-fetch контроль с198.18.139.1 failed: benchmark IPv4 ошибочно отправлен upstream. Private192.168/loopback контроль не вызвал запросов; public cache hits проверяются отдельно в следующем блоке. Этот отказ сохранён, весь RIPE test не объявлен success. [Регрессия, compiled hashes и partial RIPE](ux-ui/acceptance/regression-runtime-ripe-2026-10-11.json).
|
||||
|
||||
Перед регрессией сохранены586 existing evidence files.125 автоматически изменённых файлов восстановлены; все исходные SHA256 совпали, включая восемь pre-existing dirty GRE/VXLAN PNG. Новые135–138 evidence не затёрты. Подробные временные logs/snapshots в ignored tmp; побочные generated screenshots не включены в коммит. Source/runtime не менялись; backend/frontend ux-log133. Следующий140 — исправление фильтра специальных IPv4 согласно IANA, профильные backend/flow проверки, build/deploy и повторный live RIPE.12.5 открыт.
|
||||
|
||||
## 12.5.140 — специальные IPv4, RIPE и изолированная SQL-приёмка (2026-10-11)
|
||||
|
||||
Исправлен isNonPublicIp: benchmark198.18/15, TEST-NET ranges, reserved240/4 и non-global IETF assignments исключены из внешнего RIPE lookup. Глобальные PCP/TURN anycast192.0.0.9/10 сохранены eligible. Фиксированные CIDR masks вычисляются один раз; hot flow predicate больше не разбирает строки CIDR/адреса для каждого range. IPFIX tuples, NAT, network config и DB schema не менялись.31 boundary/exception checks и stale public-cache bypass/no-fetch тесты passed; [IANA](https://www.iana.org/assignments/iana-ipv4-special-registry/).
|
||||
|
||||
Local test:traffic-flow (20 scripts) exit0, но шесть SQL modules включали PG skips — не объявлены pass. Все шесть затем проверены against production candidate в четырёх собственных temporary PostgreSQL DBs. Parent создаёт exact own DB, child проверяет current_database до test import, DATABASE_PATH/GEOIP_DIR вынесены в ephemeral container; original DB/legacy SQLite не использовались fixtures. Все четыре DB удалены с owner/prefix check, включая failed runs.
|
||||
|
||||
Initial failures сохранены и исправлены в tests: analytics зависел от чужого hardcoded server7 (FK); теперь создаётся own server, все SQL scoped, finally cleanup. Map-hops использовал TEST-NET как вымышленные публичные сервисы; fixtures получили eligible synthetic IPv4, assertions не ослаблены. Statistics не создавал historical server_snapshots partition; теперь создаёт exact fixed-date partition. Ingest/analytics/map-hops/purge/facts-rebuild/statistics SQL modules passed across bounded runs; прошедшие modules без необходимости не повторялись. Mock upstream failure fixture перенесён с TEST-NET на eligible address и явно подтверждает реальный вызов stub.
|
||||
|
||||
Changed-file ESLint, backend production build, RIPE/IP profile tests passed. Реальный production RIPE service снова обогатил два публичных IP; повторный public cache hit и special/private controls дают0 дополнительных requests. Действует backend ux-ripe140/frontend ux-log133; backend/PG healthy. Все984 emitted outputs совпали с candidate Docker, actual deployed IP service SHA256 совпал; private rollback env/old image сохранены. [Полные попытки/проверки/границы](ux-ui/acceptance/flow-special-ipv4-2026-10-11.json).
|
||||
|
||||
Readonly live traffic/statistics smoke320: rendering200/no overflow/pageerror0. При этом traffic отправил initial requests /api/traffic/servers/srv1 и /interfaces, оба400/id is required; это existing mock-id hydration/catalog gate defect, не часть IPv4 fix и не скрытый success. [Smoke](ux-ui/acceptance/browser-flow-special-ip-2026-10-11.json). Следующий141 — gate live fetch до подтверждённого numeric server id/catalog. IPv6 special ranges — отдельно. Full UI1465 accepted139 до backend-only140; backend/SQL/live delta проверены отдельно, frontend не менялся.12.5 открыт.
|
||||
+13
-1
@@ -1,6 +1,6 @@
|
||||
# Этап 12: итоговая приёмка UX/UI
|
||||
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Актуальное продолжение 2026-10-11: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.12.5 открыт.
|
||||
|
||||
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
|
||||
|
||||
@@ -2804,3 +2804,15 @@ Own issuer chain удалена только после доказательст
|
||||
Реальный production RIPE service в отдельном процессе, без чтения/записи рабочего кеша, обогатил194.226.121.150 и104.165.244.7: network-info/maxmind-geo-lite/as-overview200, prefix/ASN/holder/country/coordinates получены. Это provider metadata, не гарантия физического положения хоста и не complete NetFlow pipeline. Дополнительный no-fetch контроль с198.18.139.1 failed: benchmark IPv4 ошибочно отправлен upstream. Private192.168/loopback контроль не вызвал запросов; public cache hits проверяются отдельно в следующем блоке. Этот отказ сохранён, весь RIPE test не объявлен success. [Регрессия, compiled hashes и partial RIPE](ux-ui/acceptance/regression-runtime-ripe-2026-10-11.json).
|
||||
|
||||
Перед регрессией сохранены586 existing evidence files.125 автоматически изменённых файлов восстановлены; все исходные SHA256 совпали, включая восемь pre-existing dirty GRE/VXLAN PNG. Новые135–138 evidence не затёрты. Подробные временные logs/snapshots в ignored tmp; побочные generated screenshots не включены в коммит. Source/runtime не менялись; backend/frontend ux-log133. Следующий140 — исправление фильтра специальных IPv4 согласно IANA, профильные backend/flow проверки, build/deploy и повторный live RIPE.12.5 открыт.
|
||||
|
||||
## 12.5.140 — специальные IPv4, RIPE и изолированная SQL-приёмка (2026-10-11)
|
||||
|
||||
Исправлен isNonPublicIp: benchmark198.18/15, TEST-NET ranges, reserved240/4 и non-global IETF assignments исключены из внешнего RIPE lookup. Глобальные PCP/TURN anycast192.0.0.9/10 сохранены eligible. Фиксированные CIDR masks вычисляются один раз; hot flow predicate больше не разбирает строки CIDR/адреса для каждого range. IPFIX tuples, NAT, network config и DB schema не менялись.31 boundary/exception checks и stale public-cache bypass/no-fetch тесты passed; [IANA](https://www.iana.org/assignments/iana-ipv4-special-registry/).
|
||||
|
||||
Local test:traffic-flow (20 scripts) exit0, но шесть SQL modules включали PG skips — не объявлены pass. Все шесть затем проверены against production candidate в четырёх собственных temporary PostgreSQL DBs. Parent создаёт exact own DB, child проверяет current_database до test import, DATABASE_PATH/GEOIP_DIR вынесены в ephemeral container; original DB/legacy SQLite не использовались fixtures. Все четыре DB удалены с owner/prefix check, включая failed runs.
|
||||
|
||||
Initial failures сохранены и исправлены в tests: analytics зависел от чужого hardcoded server7 (FK); теперь создаётся own server, все SQL scoped, finally cleanup. Map-hops использовал TEST-NET как вымышленные публичные сервисы; fixtures получили eligible synthetic IPv4, assertions не ослаблены. Statistics не создавал historical server_snapshots partition; теперь создаёт exact fixed-date partition. Ingest/analytics/map-hops/purge/facts-rebuild/statistics SQL modules passed across bounded runs; прошедшие modules без необходимости не повторялись. Mock upstream failure fixture перенесён с TEST-NET на eligible address и явно подтверждает реальный вызов stub.
|
||||
|
||||
Changed-file ESLint, backend production build, RIPE/IP profile tests passed. Реальный production RIPE service снова обогатил два публичных IP; повторный public cache hit и special/private controls дают0 дополнительных requests. Действует backend ux-ripe140/frontend ux-log133; backend/PG healthy. Все984 emitted outputs совпали с candidate Docker, actual deployed IP service SHA256 совпал; private rollback env/old image сохранены. [Полные попытки/проверки/границы](ux-ui/acceptance/flow-special-ipv4-2026-10-11.json).
|
||||
|
||||
Readonly live traffic/statistics smoke320: rendering200/no overflow/pageerror0. При этом traffic отправил initial requests /api/traffic/servers/srv1 и /interfaces, оба400/id is required; это existing mock-id hydration/catalog gate defect, не часть IPv4 fix и не скрытый success. [Smoke](ux-ui/acceptance/browser-flow-special-ip-2026-10-11.json). Следующий141 — gate live fetch до подтверждённого numeric server id/catalog. IPv6 special ranges — отдельно. Full UI1465 accepted139 до backend-only140; backend/SQL/live delta проверены отдельно, frontend не менялся.12.5 открыт.
|
||||
@@ -1,6 +1,6 @@
|
||||
# Тестовый сервер UX/UI — 2026-10-10
|
||||
|
||||
Сервер161.104.46.222: завершён12.5.139 — общая UI1244/1244 и context221/221 (1465 unique, без retry),984 emitted backend outputs совпали с Docker ux-log133.125 generated evidence files restored, исходные hashes сохранены. RIPE real2IPs enrichment positive, reserved198.18 no-fetch control failed. Следующий140 — исправить специальные IPv4 ranges, профильные проверки/build/deploy/live RIPE.12.5 открыт.
|
||||
Сервер161.104.46.222: завершён12.5.140 — special IPv4 RIPE guard fixed,31 boundary cases/stale-cache/no-fetch checks;20 local flow scripts exit0 с честными PG skips,6 unique SQL modules passed в own DBs/removed4. Live RIPE passed,compiled984 parity; backend ux-ripe140/frontend ux-log133. Smoke выявил initial traffic srv1→400, не скрыт. Следующий141 — gate live traffic до numeric/catalog-confirmed ID; IPv6 registry отдельно.12.5 открыт.
|
||||
|
||||
| Параметр | Проверенное состояние |
|
||||
| --- | --- |
|
||||
@@ -14,7 +14,7 @@
|
||||
| PostgreSQL | postgres:18-alpine,18.6;mmapp-test-postgres healthy;SELECT version() passed |
|
||||
| Данные | Отдельный Compose project mmapp-test,том mmapp-test_mmapp-pgdata и каталог ./data |
|
||||
| Доступ | PostgreSQL не публикуется;frontend3000/backend8000 привязаны к127.0.0.1 после запуска |
|
||||
| Образы приложения | mmapp-test/backend:ux-log133 и mmapp-test/frontend:ux-log133; запущены |
|
||||
| Образы приложения | mmapp-test/backend:ux-ripe140 и mmapp-test/frontend:ux-log133; запущены |
|
||||
|
||||
Compose SHA256:3052bd6ab5d9865f97605cebfb5ff27a4410cd3357b81153a65a87fb7c92582f. OptionalBACKEND_IMAGE_TAG позволяетобновлятьbackendотдельно. Локальный и удалённый файлы совпали. Шаблоны: [Compose](../deploy/docker-compose.test.yml), [env без секретов](../deploy/env.test.example).
|
||||
|
||||
@@ -1230,3 +1230,15 @@ Own issuer chain удалена только после доказательст
|
||||
Реальный production RIPE service в отдельном процессе, без чтения/записи рабочего кеша, обогатил194.226.121.150 и104.165.244.7: network-info/maxmind-geo-lite/as-overview200, prefix/ASN/holder/country/coordinates получены. Это provider metadata, не гарантия физического положения хоста и не complete NetFlow pipeline. Дополнительный no-fetch контроль с198.18.139.1 failed: benchmark IPv4 ошибочно отправлен upstream. Private192.168/loopback контроль не вызвал запросов; public cache hits проверяются отдельно в следующем блоке. Этот отказ сохранён, весь RIPE test не объявлен success. [Регрессия, compiled hashes и partial RIPE](ux-ui/acceptance/regression-runtime-ripe-2026-10-11.json).
|
||||
|
||||
Перед регрессией сохранены586 existing evidence files.125 автоматически изменённых файлов восстановлены; все исходные SHA256 совпали, включая восемь pre-existing dirty GRE/VXLAN PNG. Новые135–138 evidence не затёрты. Подробные временные logs/snapshots в ignored tmp; побочные generated screenshots не включены в коммит. Source/runtime не менялись; backend/frontend ux-log133. Следующий140 — исправление фильтра специальных IPv4 согласно IANA, профильные backend/flow проверки, build/deploy и повторный live RIPE.12.5 открыт.
|
||||
|
||||
## 12.5.140 — специальные IPv4, RIPE и изолированная SQL-приёмка (2026-10-11)
|
||||
|
||||
Исправлен isNonPublicIp: benchmark198.18/15, TEST-NET ranges, reserved240/4 и non-global IETF assignments исключены из внешнего RIPE lookup. Глобальные PCP/TURN anycast192.0.0.9/10 сохранены eligible. Фиксированные CIDR masks вычисляются один раз; hot flow predicate больше не разбирает строки CIDR/адреса для каждого range. IPFIX tuples, NAT, network config и DB schema не менялись.31 boundary/exception checks и stale public-cache bypass/no-fetch тесты passed; [IANA](https://www.iana.org/assignments/iana-ipv4-special-registry/).
|
||||
|
||||
Local test:traffic-flow (20 scripts) exit0, но шесть SQL modules включали PG skips — не объявлены pass. Все шесть затем проверены against production candidate в четырёх собственных temporary PostgreSQL DBs. Parent создаёт exact own DB, child проверяет current_database до test import, DATABASE_PATH/GEOIP_DIR вынесены в ephemeral container; original DB/legacy SQLite не использовались fixtures. Все четыре DB удалены с owner/prefix check, включая failed runs.
|
||||
|
||||
Initial failures сохранены и исправлены в tests: analytics зависел от чужого hardcoded server7 (FK); теперь создаётся own server, все SQL scoped, finally cleanup. Map-hops использовал TEST-NET как вымышленные публичные сервисы; fixtures получили eligible synthetic IPv4, assertions не ослаблены. Statistics не создавал historical server_snapshots partition; теперь создаёт exact fixed-date partition. Ingest/analytics/map-hops/purge/facts-rebuild/statistics SQL modules passed across bounded runs; прошедшие modules без необходимости не повторялись. Mock upstream failure fixture перенесён с TEST-NET на eligible address и явно подтверждает реальный вызов stub.
|
||||
|
||||
Changed-file ESLint, backend production build, RIPE/IP profile tests passed. Реальный production RIPE service снова обогатил два публичных IP; повторный public cache hit и special/private controls дают0 дополнительных requests. Действует backend ux-ripe140/frontend ux-log133; backend/PG healthy. Все984 emitted outputs совпали с candidate Docker, actual deployed IP service SHA256 совпал; private rollback env/old image сохранены. [Полные попытки/проверки/границы](ux-ui/acceptance/flow-special-ipv4-2026-10-11.json).
|
||||
|
||||
Readonly live traffic/statistics smoke320: rendering200/no overflow/pageerror0. При этом traffic отправил initial requests /api/traffic/servers/srv1 и /interfaces, оба400/id is required; это existing mock-id hydration/catalog gate defect, не часть IPv4 fix и не скрытый success. [Smoke](ux-ui/acceptance/browser-flow-special-ip-2026-10-11.json). Следующий141 — gate live fetch до подтверждённого numeric server id/catalog. IPv6 special ranges — отдельно. Full UI1465 accepted139 до backend-only140; backend/SQL/live delta проверены отдельно, frontend не менялся.12.5 открыт.
|
||||
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"runtime": {
|
||||
"backend": "ux-ripe140",
|
||||
"frontend": "ux-log133"
|
||||
},
|
||||
"cases": [
|
||||
{
|
||||
"path": "/traffic",
|
||||
"width": 320,
|
||||
"httpStatus": 200,
|
||||
"noOverflow": true,
|
||||
"apiResponses": [
|
||||
200,
|
||||
200,
|
||||
400,
|
||||
400,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "/statistics",
|
||||
"width": 320,
|
||||
"httpStatus": 200,
|
||||
"noOverflow": true,
|
||||
"apiResponses": [
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200,
|
||||
200
|
||||
]
|
||||
}
|
||||
],
|
||||
"pageErrors": [],
|
||||
"bounds": [
|
||||
"Read-only smoke on empty/current lab catalogs; no full NetFlow pipeline or throughput claim"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,216 @@
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"block": "12.5.140",
|
||||
"runtime": {
|
||||
"backend": "ux-ripe140",
|
||||
"frontend": "ux-log133",
|
||||
"backendHealthy": true,
|
||||
"postgresHealthy": true,
|
||||
"frontendRunning": true
|
||||
},
|
||||
"checks": {
|
||||
"localTrafficFlowSeriesExit": 0,
|
||||
"localPostgresSkipped": true,
|
||||
"localRipeTestPassed": true,
|
||||
"ipv4BoundaryTestsPassed": true,
|
||||
"eslintChangedFilesPassed": true,
|
||||
"backendProductionBuildPassed": true,
|
||||
"isolatedSqlUniqueModulesPassed": [
|
||||
"traffic-flow-ingest",
|
||||
"traffic-flow-analytics",
|
||||
"traffic-flow-map-hops",
|
||||
"traffic-flow-purge",
|
||||
"traffic-flow-facts-rebuild",
|
||||
"statistics-aggregate"
|
||||
],
|
||||
"temporaryDatabasesRemoved": 4,
|
||||
"compiledBackendOutputsMatched": 984,
|
||||
"compiledMissing": 0,
|
||||
"compiledDifferent": 0
|
||||
},
|
||||
"hashes": {
|
||||
"ipServiceSource": "b164a6e50e61d235855c0888e3f178162fbb46affbef5cc534189401d7d14865",
|
||||
"compiledIpService": "583b1ec8ee3f05d2a0a4e72ccd358cc3ecffd006aa4332dbdc72f63903dbbfd6",
|
||||
"sourceAndRuntimeMatched": true
|
||||
},
|
||||
"sqlAttempts": [
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"name": "mm_accept_140_1791697211345",
|
||||
"tests": [
|
||||
{
|
||||
"module": "traffic-flow-ingest",
|
||||
"passed": true,
|
||||
"output": "traffic-flow-ingest.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
},
|
||||
{
|
||||
"module": "traffic-flow-analytics",
|
||||
"passed": false,
|
||||
"error": "Command failed: /usr/local/bin/node /app/backend/acceptance/pg140-runner.mjs /app/backend/acceptance/pg140-tests/traffic-flow-analytics.mjs\nSQLite → PostgreSQL: файл /tmp/mm_accept_140_1791697211345/empty.db не найден, база после wipe остаётся пустой (defaults settings)\ninsert or update on table \"flow_daily_dims_m_202609\" violates foreign key constraint \"flow_daily_dims_server_id_fkey\"\n",
|
||||
"output": "",
|
||||
"stderr": "SQLite → PostgreSQL: файл /tmp/mm_accept_140_1791697211345/empty.db не найден, база после wipe остаётся пустой (defaults settings)\ninsert or update on table \"flow_daily_dims_m_202609\" violates foreign key constraint \"flow_daily_dims_server_id_fkey\"\n"
|
||||
}
|
||||
],
|
||||
"databaseRemoved": true
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"name": "mm_accept_140_1791697661858",
|
||||
"tests": [
|
||||
{
|
||||
"module": "traffic-flow-ingest",
|
||||
"passed": true,
|
||||
"output": "traffic-flow-ingest.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
},
|
||||
{
|
||||
"module": "traffic-flow-analytics",
|
||||
"passed": true,
|
||||
"output": "traffic-flow-analytics.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
},
|
||||
{
|
||||
"module": "traffic-flow-map-hops",
|
||||
"passed": false,
|
||||
"error": "Command failed: /usr/local/bin/node /app/backend/acceptance/pg140-runner.mjs /app/backend/acceptance/pg140-tests/traffic-flow-map-hops.mjs\nSQLite → PostgreSQL: файл /tmp/mm_accept_140_1791697661858/empty.db не найден, база после wipe остаётся пустой (defaults settings)\nтоп-8 брендов на карте\n\n2 !== 8\n\n",
|
||||
"output": "traffic-flow-map-hops.test.ts: pickMapServices ok\ntraffic-flow-map-hops.test.ts: hops ok\n",
|
||||
"stderr": "SQLite → PostgreSQL: файл /tmp/mm_accept_140_1791697661858/empty.db не найден, база после wipe остаётся пустой (defaults settings)\nтоп-8 брендов на карте\n\n2 !== 8\n\n"
|
||||
}
|
||||
],
|
||||
"databaseRemoved": true
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"name": "mm_accept_140_1791697879954",
|
||||
"tests": [
|
||||
{
|
||||
"module": "traffic-flow-map-hops",
|
||||
"passed": true,
|
||||
"output": "traffic-flow-map-hops.test.ts: pickMapServices ok\ntraffic-flow-map-hops.test.ts: hops ok\ntraffic-flow-map-hops.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
},
|
||||
{
|
||||
"module": "traffic-flow-purge",
|
||||
"passed": true,
|
||||
"output": "traffic-flow-purge.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
},
|
||||
{
|
||||
"module": "traffic-flow-facts-rebuild",
|
||||
"passed": true,
|
||||
"output": "traffic-flow-facts-rebuild.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
},
|
||||
{
|
||||
"module": "statistics-aggregate",
|
||||
"passed": false,
|
||||
"error": "Command failed: /usr/local/bin/node /app/backend/acceptance/pg140-runner.mjs /app/backend/acceptance/pg140-tests/statistics-aggregate.mjs\nSQLite → PostgreSQL: файл /tmp/mm_accept_140_1791697879954/empty.db не найден, база после wipe остаётся пустой (defaults settings)\nno partition of relation \"server_snapshots\" found for row\n",
|
||||
"output": "",
|
||||
"stderr": "SQLite → PostgreSQL: файл /tmp/mm_accept_140_1791697879954/empty.db не найден, база после wipe остаётся пустой (defaults settings)\nno partition of relation \"server_snapshots\" found for row\n"
|
||||
}
|
||||
],
|
||||
"databaseRemoved": true
|
||||
},
|
||||
{
|
||||
"date": "2026-10-11",
|
||||
"name": "mm_accept_140_1791698055809",
|
||||
"tests": [
|
||||
{
|
||||
"module": "statistics-aggregate",
|
||||
"passed": true,
|
||||
"output": "statistics-aggregate.test.ts: ok\nISOLATED_SQL_TEST_COMPLETE\n"
|
||||
}
|
||||
],
|
||||
"databaseRemoved": true
|
||||
}
|
||||
],
|
||||
"liveRipe": {
|
||||
"date": "2026-10-11",
|
||||
"runtime": "ux-ripe140",
|
||||
"requests": [
|
||||
{
|
||||
"path": "/data/network-info/data.json",
|
||||
"resource": "104.165.244.7",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/data/network-info/data.json",
|
||||
"resource": "194.226.121.150",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/data/maxmind-geo-lite/data.json",
|
||||
"resource": "194.226.121.0/24",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/data/maxmind-geo-lite/data.json",
|
||||
"resource": "104.165.244.0/24",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/data/as-overview/data.json",
|
||||
"resource": "AS41745",
|
||||
"status": 200
|
||||
},
|
||||
{
|
||||
"path": "/data/as-overview/data.json",
|
||||
"resource": "AS41745",
|
||||
"status": 200
|
||||
}
|
||||
],
|
||||
"cases": [
|
||||
{
|
||||
"ip": "194.226.121.150",
|
||||
"prefix": "194.226.121.0/24",
|
||||
"asn": 41745,
|
||||
"country": "RU",
|
||||
"lat": 55.7487,
|
||||
"lng": 37.6187,
|
||||
"holder": "FORTIS-AS Baykov Ilya Sergeevich",
|
||||
"ok": true,
|
||||
"fetchedAt": 1791697689859
|
||||
},
|
||||
{
|
||||
"ip": "104.165.244.7",
|
||||
"prefix": "104.165.244.0/24",
|
||||
"asn": 41745,
|
||||
"country": "PL",
|
||||
"lat": 52.2299,
|
||||
"lng": 21.0093,
|
||||
"holder": "FORTIS-AS Baykov Ilya Sergeevich",
|
||||
"ok": true,
|
||||
"fetchedAt": 1791697689949
|
||||
}
|
||||
],
|
||||
"cacheHitsNoFetch": true,
|
||||
"success": true
|
||||
},
|
||||
"browserSmoke": {
|
||||
"protocol": "browser-flow-special-ip-2026-10-11.json",
|
||||
"pageRenderingAndNoOverflowPassed": true,
|
||||
"apiFailures": [
|
||||
{
|
||||
"path": "/api/traffic/servers/srv1",
|
||||
"status": 400,
|
||||
"error": "id is required"
|
||||
},
|
||||
{
|
||||
"path": "/api/traffic/servers/srv1/interfaces",
|
||||
"status": 400,
|
||||
"error": "id is required"
|
||||
}
|
||||
],
|
||||
"nextFix": "Gate live traffic fetches until confirmed numeric server id/catalog"
|
||||
},
|
||||
"bounds": [
|
||||
"IPv4 eligible-public predicate updated using IANA non-global special ranges; PCP/TURN192.0.0.9/10 remain eligible; global reachability not guaranteed by eligibility",
|
||||
"Fixed ranges parsed once for hot flow paths; no IPFIX tuple/NAT/network config/DB schema change",
|
||||
"Stale seeded public metadata for special IPv4 bypassed; special IPv4/private/cache-hit enqueue produces no RIPE requests",
|
||||
"Initial SQL failures retained: hardcoded server7/missing FK fixture; documentation IPs used as public service fixtures; missing historical snapshot partition",
|
||||
"Test fixtures fixed without weakening data/assertions: owned server+scoped cleanup, eligible synthetic public IPs, partition for fixed test date",
|
||||
"Six unique DB modules accepted across bounded runs, not six fresh successes in one run; local skips not counted as passes",
|
||||
"Own temporary databases created/dropped with owner/prefix checks; child current_database checked before tests; working DB/legacy SQLite untouched",
|
||||
"All984 production outputs match candidate and actual deployed IP service hash; no frontend rebuild because frontend source unchanged",
|
||||
"Read-only UI smoke has no page errors/overflow but two existing initial mock-id400 requests; not a fully green API loading acceptance",
|
||||
"IPv6 special registry handling and the traffic initial live-id gate remain separate work"
|
||||
],
|
||||
"references": [
|
||||
"https://www.iana.org/assignments/iana-ipv4-special-registry/"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user