From e452e528e19a640212ba8833149032567f236dfb Mon Sep 17 00:00:00 2001 From: Denozordec Date: Wed, 14 Oct 2026 11:35:59 +0700 Subject: [PATCH] =?UTF-8?q?chore(test):=20=D1=81=D0=BE=D0=BF=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20REST=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B8=D0=B5=D0=BD=D1=82=D1=8B=20=D0=B8=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=B8=D1=82=D1=8C=20=D1=81=D0=B5=D1=81=D1=81?= =?UTF-8?q?=D0=B8=D0=B8=20RouterOS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../acceptance/chr-rest-correlated.mjs | 9 + docs/ux-ui-external-acceptance.md | 2 +- docs/ux-ui-plan.md | 2 +- docs/ux-ui-progress.md | 20 +- docs/ux-ui-remaining-acceptance.md | 6 +- docs/ux-ui-stage-12.md | 19 +- docs/ux-ui-test-server.md | 2 +- docs/ux-ui/acceptance/chr236-debian.json | 2613 +++++++++++++++++ docs/ux-ui/acceptance/chr236-workstation.json | 2613 +++++++++++++++++ .../acceptance/rest236-active-sessions.json | 25 + .../acceptance/rest236-session-growth.json | 57 + docs/ux-ui/acceptance/rest236-summary.json | 37 + 12 files changed, 5396 insertions(+), 9 deletions(-) create mode 100644 backend/scripts/acceptance/chr-rest-correlated.mjs create mode 100644 docs/ux-ui/acceptance/chr236-debian.json create mode 100644 docs/ux-ui/acceptance/chr236-workstation.json create mode 100644 docs/ux-ui/acceptance/rest236-active-sessions.json create mode 100644 docs/ux-ui/acceptance/rest236-session-growth.json create mode 100644 docs/ux-ui/acceptance/rest236-summary.json diff --git a/backend/scripts/acceptance/chr-rest-correlated.mjs b/backend/scripts/acceptance/chr-rest-correlated.mjs new file mode 100644 index 00000000..bda56ffc --- /dev/null +++ b/backend/scripts/acceptance/chr-rest-correlated.mjs @@ -0,0 +1,9 @@ +import assert from 'node:assert/strict';import fs from 'node:fs';import path from 'node:path';import{pathToFileURL}from'node:url';import{createHash}from'node:crypto'; +const vantage=process.env.MMAPP_TEST_VANTAGE;assert(['workstation','debian'].includes(vantage));const output=process.env.MMAPP_TEST_REPORT;assert(output);const hosts=['194.226.121.150','104.165.244.7'],root=path.resolve('backend/dist'),{MikrotikClient}=await import(pathToFileURL(root+'/services/mikrotik.js'));let rows; +if(vantage==='debian'){const{pool}=await import(pathToFileURL(root+'/db/index.js'));try{rows=(await pool.query("SELECT host,port,use_ssl,enabled,username,password FROM servers WHERE host IN ('194.226.121.150','104.165.244.7') ORDER BY host")).rows}finally{await pool.end()}}else{assert(process.env.MMAPP_TEST_CHR_USER&&process.env.MMAPP_TEST_CHR_PASSWORD);rows=hosts.map(host=>({host,port:80,use_ssl:false,enabled:true,username:process.env.MMAPP_TEST_CHR_USER,password:process.env.MMAPP_TEST_CHR_PASSWORD}))}assert.equal(rows.length,2);assert.deepEqual(rows.map(r=>r.host).sort(),[...hosts].sort());assert(rows.every(r=>r.enabled&&r.port===80&&!r.use_ssl)); +const report={date:'2026-10-14',block:'12.5.236',vantage,credentialSource:vantage==='debian'?'stored-enabled-server-rows':'explicit-owned-test-env',startedAt:new Date().toISOString(),requests:[],diagnostics:[],configurationWrites:0,passwordChanges:0,rootCauseKnown:false};const sleep=ms=>new Promise(r=>setTimeout(r,ms));const clients=new Map(rows.map(r=>[r.host,new MikrotikClient({host:r.host,port:80,useSsl:false,verifySsl:false,username:r.username,password:r.password})])); +function errorMetadata(e,body){let obj;try{obj=JSON.parse(body)}catch{}const detail=String(obj?.detail??'');return{errorName:e?.name??null,errorBodySha256:body?createHash('sha256').update(body).digest('hex'):null,errorKeys:obj&&typeof obj==='object'?Object.keys(obj).sort():[],detailCategory:/not enough permissions/i.test(detail)?'insufficient-policy':/not allowed/i.test(detail)?'not-allowed':/session closed/i.test(detail)?'session-closed':detail?'unclassified':'absent'}} +async function read(row,endpoint,mode,cycle,kind='sample'){const begin=Date.now(),record={host:row.host,path:endpoint,mode,cycle,kind,startedAt:new Date().toISOString()};let data;try{if(mode==='compiled-client'){data=await clients.get(row.host).get(endpoint,6000);record.status=200}else{const authorization='Basic '+Buffer.from(row.username+':'+row.password).toString('base64');const r=await fetch('http://'+row.host+'/rest'+endpoint,{headers:{authorization,Connection:'close'},signal:AbortSignal.timeout(6000)}),body=await r.text();record.status=r.status;record.basicChallenge=/Basic/i.test(r.headers.get('www-authenticate')??'');if(r.ok)data=JSON.parse(body);else Object.assign(record,errorMetadata(null,body))}}catch(e){record.status=e.statusCode??null;Object.assign(record,errorMetadata(e,e.body??''))}record.durationMs=Date.now()-begin;report.requests.push(record);await sleep(125);return data} +async function diagnostic(row,phase){const userRows=await read(row,'/user','compiled-client',0,'diagnostic'),users=Array.isArray(userRows)?userRows.filter(u=>u.name===row.username):[];const groups=await read(row,'/user/group','compiled-client',0,'diagnostic'),group=Array.isArray(groups)?groups.find(g=>g.name===users[0]?.group):null;const services=await read(row,'/ip/service','compiled-client',0,'diagnostic'),resource=await read(row,'/system/resource','compiled-client',0,'diagnostic'),logs=await read(row,'/log','compiled-client',0,'diagnostic');const auth=Array.isArray(logs)?logs.filter(l=>/login failure/i.test(String(l.message))):[];const events=auth.map(l=>{const message=String(l.message);return{time:l.time??null,via:message.match(/via (\S+)/)?.[1]??null,fromTestDebian:/from 161\.104\.46\.222\b/.test(message),forConfiguredUser:message.includes('for user '+row.username+' ')}});const www=Array.isArray(services)?services.filter(s=>s.name==='www'):[];report.diagnostics.push({host:row.host,phase,userPresent:users.length===1,userDisabled:users[0]?.disabled??null,userAddressRestriction:users[0]?.address??null,hasApiPolicy:group?String(group.policy).split(',').includes('api'):null,hasRestApiPolicy:group?String(group.policy).split(',').includes('rest-api'):null,wwwEnabled:www.some(s=>s.disabled==='false'),wwwMaxSessions:www.find(s=>s['max-sessions'])?.['max-sessions']??null,wwwDynamicRows:www.filter(s=>s.dynamic==='true').length,resource:resource?{version:resource.version,uptime:resource.uptime,cpuLoad:resource['cpu-load'],freeMemory:resource['free-memory']}:null,retainedAuthFailureCount:auth.length,recentFailures:events.slice(-15),retainedLogIsNotCurrentRate:true})} +function save(){const samples=report.requests.filter(r=>r.kind==='sample');report.completedAt=new Date().toISOString();report.summary={sampleRequests:samples.length,failedSamples:samples.filter(r=>r.status!==200).length,allRequests:report.requests.length,failures:report.requests.filter(r=>r.status!==200).map(r=>({host:r.host,path:r.path,mode:r.mode,status:r.status,kind:r.kind,startedAt:r.startedAt}))};fs.writeFileSync(output,JSON.stringify(report,null,2)+'\n')} +try{for(const row of rows)await diagnostic(row,'before');const started=Date.now(),paths=['/system/resource','/interface/gre','/routing/bgp/session','/routing/ospf/neighbor','/interface/wireguard/peers','/interface/vxlan'];for(let cycle=1;cycle<=8;cycle++){for(const row of rows)for(const endpoint of paths){const modes=cycle%2?['compiled-client','fetch-close']:['fetch-close','compiled-client'];for(const mode of modes){const previous=report.requests.length;await read(row,endpoint,mode,cycle);if(report.requests[previous].status!==200){await read(row,'/system/resource','fetch-close',cycle,'failure-control');await diagnostic(row,'failure-'+cycle)}}}save();console.log(JSON.stringify({vantage,cycle,samples:report.summary.sampleRequests,failed:report.summary.failedSamples}));if(cycle<8)await sleep(Math.max(0,started+cycle*12000-Date.now()))}for(const row of rows)await diagnostic(row,'after')}finally{save();console.log(JSON.stringify({vantage,summary:report.summary,rootCauseKnown:false}))} diff --git a/docs/ux-ui-external-acceptance.md b/docs/ux-ui-external-acceptance.md index 8a90e82d..57f8382c 100644 --- a/docs/ux-ui-external-acceptance.md +++ b/docs/ux-ui-external-acceptance.md @@ -1,6 +1,6 @@ # UX/UI: протокол внешней приёмки 12.5 -Актуальное продолжение 2026-10-14:230–235 — реальные S3 backup/ограниченный restore/UI, native /file/read, защита подключения/гонок и legacy restore приняты. Исправлены5 Compose variants: /app/storage/backups подключён к host data/backups.2 native CHR backups пережили force-recreate, API SHA256 matched, own files/catalog очищены; original10 rows сохранены, их ранее отсутствующие files не восстановлены. Backend ux-backup234/frontend ux-routing218 healthy. Далее236 — недоступные local files в UX/границы retention и оставшаяся матрица12.5. Этап открыт. +Актуальное продолжение 2026-10-14:236 — по приоритету пользователя проверен REST:384 paired samples из workstation/Debian +40 diagnostics, отказов0; current credentials/policies/addresses/service load исправны. На7.24.5 сохранены828/304 rest-api sessions и2 api на каждом; после3 дополнительных reads delta0. Найден vendor fix inactive REST sessions в7.25rc, это гипотеза, причинность401/500 не доказана. Runtime ux-backup234/ux-routing218 unchanged. Следующий REST шаг — корреляция сбоя/renewal или согласованный firmware control; общий следующий237 — missing local files UX. Этап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). diff --git a/docs/ux-ui-plan.md b/docs/ux-ui-plan.md index f5ebca6e..5352f153 100644 --- a/docs/ux-ui-plan.md +++ b/docs/ux-ui-plan.md @@ -1,6 +1,6 @@ # План реализации UX/UI по пятичасовым окнам -Актуальное продолжение 2026-10-14:230–235 — реальные S3 backup/ограниченный restore/UI, native /file/read, защита подключения/гонок и legacy restore приняты. Исправлены5 Compose variants: /app/storage/backups подключён к host data/backups.2 native CHR backups пережили force-recreate, API SHA256 matched, own files/catalog очищены; original10 rows сохранены, их ранее отсутствующие files не восстановлены. Backend ux-backup234/frontend ux-routing218 healthy. Далее236 — недоступные local files в UX/границы retention и оставшаяся матрица12.5. Этап открыт. +Актуальное продолжение 2026-10-14:236 — по приоритету пользователя проверен REST:384 paired samples из workstation/Debian +40 diagnostics, отказов0; current credentials/policies/addresses/service load исправны. На7.24.5 сохранены828/304 rest-api sessions и2 api на каждом; после3 дополнительных reads delta0. Найден vendor fix inactive REST sessions в7.25rc, это гипотеза, причинность401/500 не доказана. Runtime ux-backup234/ux-routing218 unchanged. Следующий REST шаг — корреляция сбоя/renewal или согласованный firmware control; общий следующий237 — missing local files UX. Этап12.5 открыт. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-14. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. diff --git a/docs/ux-ui-progress.md b/docs/ux-ui-progress.md index e8679a36..23fdca6a 100644 --- a/docs/ux-ui-progress.md +++ b/docs/ux-ui-progress.md @@ -1,6 +1,6 @@ # UX/UI: журнал реализации -Актуальное продолжение 2026-10-14:230–235 — реальные S3 backup/ограниченный restore/UI, native /file/read, защита подключения/гонок и legacy restore приняты. Исправлены5 Compose variants: /app/storage/backups подключён к host data/backups.2 native CHR backups пережили force-recreate, API SHA256 matched, own files/catalog очищены; original10 rows сохранены, их ранее отсутствующие files не восстановлены. Backend ux-backup234/frontend ux-routing218 healthy. Далее236 — недоступные local files в UX/границы retention и оставшаяся матрица12.5. Этап открыт. +Актуальное продолжение 2026-10-14:236 — по приоритету пользователя проверен REST:384 paired samples из workstation/Debian +40 diagnostics, отказов0; current credentials/policies/addresses/service load исправны. На7.24.5 сохранены828/304 rest-api sessions и2 api на каждом; после3 дополнительных reads delta0. Найден vendor fix inactive REST sessions в7.25rc, это гипотеза, причинность401/500 не доказана. Runtime ux-backup234/ux-routing218 unchanged. Следующий REST шаг — корреляция сбоя/renewal или согласованный firmware control; общий следующий237 — missing local files UX. Этап12.5 открыт. Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). @@ -36,7 +36,23 @@ | 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 | | 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 | | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | -| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–235 завершены в записанных scopes, этап открыт. Runtime backend ux-backup234/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. | +| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–236 завершены в записанных scopes, этап открыт. Runtime backend ux-backup234/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. | + +## 12.5.236 — коррелированная диагностика REST и гипотеза RouterOS-сессий (2026-10-14) + +По поручению пользователя остаток окна направлен на REST. Исторические220/224401 получены непосредственно от104.165.244.7, включая независимый HTTP Connection close; UI/кэш приложения не являются единственным источником. У старого221500 на /interface/gre не сохранён detail/body, поэтому назначить ему причину по HTTP code нельзя. + +Две vantage: workstation с явными test credentials и Debian production container со stored enabled-server rows.8 cycles ×2 hosts ×6 endpoints ×2 clients =384 samples:compiled MikrotikClient GET против independent fetch/Connection close, порядок чередуется. resource/GRE/BGP/OSPF/WireGuard/VXLAN — все200.40 diagnostic reads (user/group/service/resource/log) тоже успешны. Disabled devices не опрашивались. [Workstation](ux-ui/acceptance/chr236-workstation.json), [Debian](ux-ui/acceptance/chr236-debian.json). + +Current user enabled, address restriction empty, api/rest-api policies true; www enabled/max sessions20, dynamic connections1–2, CPU0–2%, free RAM около813–815MB. Retained auth failures9/899 до/после не выросли; recent retained failures не указывают на test-debian/configured user. Это данные текущей выборки, не исключение изменений прав/credentials в прошлом и не rate/SLA. + +/user/active показывает828 rest-api +2 api на194 и304 rest-api +2 api на104. После3 дополнительных resource reads и повторного active snapshot counts остались прежними (background polling не приостанавливался). Накопленный объём подтверждён; рост на каждом запросе/возраст/неактивность каждой записи не доказаны. [Sessions](ux-ui/acceptance/rest236-active-sessions.json), [delta0](ux-ui/acceptance/rest236-session-growth.json). + +В официальном vendor announcement7.25rc, changes since7.24.5, указано исправление удаления inactive REST API sessions (introduced7.21). [Первичный changelog](https://forum.mikrotik.com/t/7-25rc-testing-is-released/273520/1). Официальная REST документация описывает cached API login10min; новая редакция проверена на7.25, поэтому её детали не объявляются экспериментом на7.24.5. [REST docs](https://manual.mikrotik.com/docs/developer-guides/rest-api/). Это конкретная гипотеза для version/renewal control, а не доказанный root cause старых401/500. Firmware/users/services/passwords не менялись; automatic request retries не добавлены. + +Новый reproducible helper chr-rest-correlated.mjs сохраняет failure status/path/time/body SHA256/safe detail category и immediately independent control/diagnostics при сбое, не публикуя credentials/config bodies. В этой серии failure controls0, поскольку ошибки не повторились. ESLint и diff check passed, production build/deploy не требуются для acceptance script. Private workstation env удалён. [Итог/границы](ux-ui/acceptance/rest236-summary.json). + +REST пункт остаётся открытым для причинности: получить correlated failure на renewal/long window либо отдельный согласованный version control с vendor fix. Тест длительностью около нескольких минут не покрывает10-minute renewal. Общий следующий237 — UX missing local files; другие группы матрицы сохраняются. Runtime backend ux-backup234/frontend ux-routing218. Этап12.5 открыт. ## 12.5.235 — постоянное хранение .rsc и реальные копии после пересоздания Docker (2026-10-14) diff --git a/docs/ux-ui-remaining-acceptance.md b/docs/ux-ui-remaining-acceptance.md index 1ac2e5c1..13a026f0 100644 --- a/docs/ux-ui-remaining-acceptance.md +++ b/docs/ux-ui-remaining-acceptance.md @@ -1,8 +1,8 @@ # Оставшаяся внешняя приёмка — 2026-10-14 -Актуальное продолжение 2026-10-14:230–235 — реальные S3 backup/ограниченный restore/UI, native /file/read, защита подключения/гонок и legacy restore приняты. Исправлены5 Compose variants: /app/storage/backups подключён к host data/backups.2 native CHR backups пережили force-recreate, API SHA256 matched, own files/catalog очищены; original10 rows сохранены, их ранее отсутствующие files не восстановлены. Backend ux-backup234/frontend ux-routing218 healthy. Далее236 — недоступные local files в UX/границы retention и оставшаяся матрица12.5. Этап открыт. +Актуальное продолжение 2026-10-14:236 — по приоритету пользователя проверен REST:384 paired samples из workstation/Debian +40 diagnostics, отказов0; current credentials/policies/addresses/service load исправны. На7.24.5 сохранены828/304 rest-api sessions и2 api на каждом; после3 дополнительных reads delta0. Найден vendor fix inactive REST sessions в7.25rc, это гипотеза, причинность401/500 не доказана. Runtime ux-backup234/ux-routing218 unchanged. Следующий REST шаг — корреляция сбоя/renewal или согласованный firmware control; общий следующий237 — missing local files UX. Этап12.5 открыт. -Это актуальная матрица после 12.5.235. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. +Это актуальная матрица после 12.5.236. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-backup234`, frontend `ux-routing218`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. @@ -12,7 +12,7 @@ | Группа | Что уже подтверждено | Оставшийся результат / что требуется | | --- | --- | --- | -| REST и достоверность данных | Ошибки OSPF/BFD/BGP/GRE/WAN215–221 явные; latest API smoke222 прошёл | Причина единичных native401/500 неизвестна. Короткое независимое наблюдение возможно сейчас; оно не даст SLA | +| REST и достоверность данных | Ошибки OSPF/BFD/BGP/GRE/WAN215–221 явные; latest API smoke222 прошёл | Correlated236:384 samples/40 diagnostics без отказов; current policies/address/load исправны.828/304 retained REST sessions и vendor inactive-session fix — гипотеза; причинность401/500,10min renewal/version control остаются открытыми | | Клиентские ОС и внешняя сеть | CHR↔CHR/Linux, private IPv4/ULA и synthetic IPv6/IPFIX; Android full-tunnel/reconnect227 подтверждены пользователем | Windows/macOS/iOS VPN, расширенная Android приёмка, независимые WAN/multi-WAN и public IPv6; public IPv6 на текущем стенде отсутствует | | Масштаб и длительная устойчивость | Контролируемые lock/dedupe/loss/recovery и короткие native проверки | Несколько backend/worker/writers, длительный rekey/REST/traffic, physical disconnect и maximum throughput | | Внешние хранилища и jobs | Локальные API/errors/RBAC/owned SQL; реальные Portal1.3.1/Telegram195–201 и Selectel S3/client/API/ownSQL228–229 | Large native exports проверены HTTP fixture; S3 restore через UI, missing local files UX, миграция между buckets/multi-instance и retention; provider/container/Gitea/MaxMind jobs с соответствующими endpoints/аккаунтами; private/paid credentials не выдумывать | diff --git a/docs/ux-ui-stage-12.md b/docs/ux-ui-stage-12.md index 4b592f44..d8a7f2e4 100644 --- a/docs/ux-ui-stage-12.md +++ b/docs/ux-ui-stage-12.md @@ -1,6 +1,6 @@ # Этап 12: итоговая приёмка UX/UI -Актуальное продолжение 2026-10-14:230–235 — реальные S3 backup/ограниченный restore/UI, native /file/read, защита подключения/гонок и legacy restore приняты. Исправлены5 Compose variants: /app/storage/backups подключён к host data/backups.2 native CHR backups пережили force-recreate, API SHA256 matched, own files/catalog очищены; original10 rows сохранены, их ранее отсутствующие files не восстановлены. Backend ux-backup234/frontend ux-routing218 healthy. Далее236 — недоступные local files в UX/границы retention и оставшаяся матрица12.5. Этап открыт. +Актуальное продолжение 2026-10-14:236 — по приоритету пользователя проверен REST:384 paired samples из workstation/Debian +40 diagnostics, отказов0; current credentials/policies/addresses/service load исправны. На7.24.5 сохранены828/304 rest-api sessions и2 api на каждом; после3 дополнительных reads delta0. Найден vendor fix inactive REST sessions в7.25rc, это гипотеза, причинность401/500 не доказана. Runtime ux-backup234/ux-routing218 unchanged. Следующий REST шаг — корреляция сбоя/renewal или согласованный firmware control; общий следующий237 — missing local files UX. Этап12.5 открыт. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. @@ -4151,3 +4151,20 @@ Real Portal/browser API, provider local verified: создан один job ро Runtime backend ux-backup234/frontend ux-routing218 healthy; новое application image для volume-only fix не требовалось. Пароли CHR не менялись, S3 mutations0 в235, configs body/JWT не опубликованы, private local manifest удалён. Исходные10 missing local files не восстановлены и records не удалены. Force-recreate — не host reboot/power loss/fsync/DR приёмка. Далее236 — UX недоступных local files, затем version retention границы и оставшиеся7 группы матрицы; multi-instance guard не принимается. Этап12.5 открыт. + +## 12.5.236 — коррелированная диагностика REST и гипотеза RouterOS-сессий (2026-10-14) + +По поручению пользователя остаток окна направлен на REST. Исторические220/224401 получены непосредственно от104.165.244.7, включая независимый HTTP Connection close; UI/кэш приложения не являются единственным источником. У старого221500 на /interface/gre не сохранён detail/body, поэтому назначить ему причину по HTTP code нельзя. + +Две vantage: workstation с явными test credentials и Debian production container со stored enabled-server rows.8 cycles ×2 hosts ×6 endpoints ×2 clients =384 samples:compiled MikrotikClient GET против independent fetch/Connection close, порядок чередуется. resource/GRE/BGP/OSPF/WireGuard/VXLAN — все200.40 diagnostic reads (user/group/service/resource/log) тоже успешны. Disabled devices не опрашивались. [Workstation](ux-ui/acceptance/chr236-workstation.json), [Debian](ux-ui/acceptance/chr236-debian.json). + +Current user enabled, address restriction empty, api/rest-api policies true; www enabled/max sessions20, dynamic connections1–2, CPU0–2%, free RAM около813–815MB. Retained auth failures9/899 до/после не выросли; recent retained failures не указывают на test-debian/configured user. Это данные текущей выборки, не исключение изменений прав/credentials в прошлом и не rate/SLA. + +/user/active показывает828 rest-api +2 api на194 и304 rest-api +2 api на104. После3 дополнительных resource reads и повторного active snapshot counts остались прежними (background polling не приостанавливался). Накопленный объём подтверждён; рост на каждом запросе/возраст/неактивность каждой записи не доказаны. [Sessions](ux-ui/acceptance/rest236-active-sessions.json), [delta0](ux-ui/acceptance/rest236-session-growth.json). + +В официальном vendor announcement7.25rc, changes since7.24.5, указано исправление удаления inactive REST API sessions (introduced7.21). [Первичный changelog](https://forum.mikrotik.com/t/7-25rc-testing-is-released/273520/1). Официальная REST документация описывает cached API login10min; новая редакция проверена на7.25, поэтому её детали не объявляются экспериментом на7.24.5. [REST docs](https://manual.mikrotik.com/docs/developer-guides/rest-api/). Это конкретная гипотеза для version/renewal control, а не доказанный root cause старых401/500. Firmware/users/services/passwords не менялись; automatic request retries не добавлены. + +Новый reproducible helper chr-rest-correlated.mjs сохраняет failure status/path/time/body SHA256/safe detail category и immediately independent control/diagnostics при сбое, не публикуя credentials/config bodies. В этой серии failure controls0, поскольку ошибки не повторились. ESLint и diff check passed, production build/deploy не требуются для acceptance script. Private workstation env удалён. [Итог/границы](ux-ui/acceptance/rest236-summary.json). + +REST пункт остаётся открытым для причинности: получить correlated failure на renewal/long window либо отдельный согласованный version control с vendor fix. Тест длительностью около нескольких минут не покрывает10-minute renewal. Общий следующий237 — UX missing local files; другие группы матрицы сохраняются. Runtime backend ux-backup234/frontend ux-routing218. Этап12.5 открыт. + diff --git a/docs/ux-ui-test-server.md b/docs/ux-ui-test-server.md index 4505cb27..830f0ed3 100644 --- a/docs/ux-ui-test-server.md +++ b/docs/ux-ui-test-server.md @@ -1,6 +1,6 @@ # Тестовый сервер UX/UI — 2026-10-10 -Актуальное продолжение 2026-10-14:230–235 — реальные S3 backup/ограниченный restore/UI, native /file/read, защита подключения/гонок и legacy restore приняты. Исправлены5 Compose variants: /app/storage/backups подключён к host data/backups.2 native CHR backups пережили force-recreate, API SHA256 matched, own files/catalog очищены; original10 rows сохранены, их ранее отсутствующие files не восстановлены. Backend ux-backup234/frontend ux-routing218 healthy. Далее236 — недоступные local files в UX/границы retention и оставшаяся матрица12.5. Этап открыт. +Актуальное продолжение 2026-10-14:236 — по приоритету пользователя проверен REST:384 paired samples из workstation/Debian +40 diagnostics, отказов0; current credentials/policies/addresses/service load исправны. На7.24.5 сохранены828/304 rest-api sessions и2 api на каждом; после3 дополнительных reads delta0. Найден vendor fix inactive REST sessions в7.25rc, это гипотеза, причинность401/500 не доказана. Runtime ux-backup234/ux-routing218 unchanged. Следующий REST шаг — корреляция сбоя/renewal или согласованный firmware control; общий следующий237 — missing local files UX. Этап12.5 открыт. | Параметр | Проверенное состояние | | --- | --- | diff --git a/docs/ux-ui/acceptance/chr236-debian.json b/docs/ux-ui/acceptance/chr236-debian.json new file mode 100644 index 00000000..d0560134 --- /dev/null +++ b/docs/ux-ui/acceptance/chr236-debian.json @@ -0,0 +1,2613 @@ +{ + "date": "2026-10-14", + "block": "12.5.236", + "vantage": "debian", + "credentialSource": "stored-enabled-server-rows", + "startedAt": "2026-10-14T04:28:39.861Z", + "requests": [ + { + "host": "104.165.244.7", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:39.867Z", + "status": 200, + "durationMs": 138 + }, + { + "host": "104.165.244.7", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:40.131Z", + "status": 200, + "durationMs": 76 + }, + { + "host": "104.165.244.7", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:40.332Z", + "status": 200, + "durationMs": 96 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:40.554Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:40.745Z", + "status": 200, + "durationMs": 324 + }, + { + "host": "194.226.121.150", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:41.197Z", + "status": 200, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:41.329Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:41.459Z", + "status": 200, + "durationMs": 15 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:41.600Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:41.730Z", + "status": 200, + "durationMs": 78 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:41.934Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.125Z", + "status": 200, + "basicChallenge": false, + "durationMs": 153 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.403Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.594Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.850Z", + "status": 200, + "durationMs": 69 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.044Z", + "status": 200, + "basicChallenge": false, + "durationMs": 139 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.308Z", + "status": 200, + "durationMs": 78 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.512Z", + "status": 200, + "basicChallenge": false, + "durationMs": 132 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.769Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.959Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.214Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.404Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.659Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.789Z", + "status": 200, + "basicChallenge": false, + "durationMs": 12 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.926Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.055Z", + "status": 200, + "basicChallenge": false, + "durationMs": 16 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.197Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.326Z", + "status": 200, + "basicChallenge": false, + "durationMs": 10 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.461Z", + "status": 200, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.595Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.729Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:45.858Z", + "status": 200, + "basicChallenge": false, + "durationMs": 42 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:46.025Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:28:46.154Z", + "status": 200, + "basicChallenge": false, + "durationMs": 12 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:53.936Z", + "status": 200, + "basicChallenge": false, + "durationMs": 131 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:54.193Z", + "status": 200, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:54.446Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:54.700Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:54.890Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:55.144Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:55.334Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:55.588Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:55.779Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:56.035Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:56.224Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:56.478Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:56.668Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:56.802Z", + "status": 200, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:56.934Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.067Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.197Z", + "status": 200, + "basicChallenge": false, + "durationMs": 9 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.331Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.462Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.595Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.725Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.858Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:57.987Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:28:58.120Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:05.935Z", + "status": 200, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:06.190Z", + "status": 200, + "basicChallenge": false, + "durationMs": 133 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:06.449Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:06.639Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:06.892Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:07.083Z", + "status": 200, + "basicChallenge": false, + "durationMs": 132 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:07.340Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:07.531Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:07.787Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:07.977Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:08.232Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:08.422Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:08.676Z", + "status": 200, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:08.808Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:08.940Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.070Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.201Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.331Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.463Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.592Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.725Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.855Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:09.987Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:29:10.115Z", + "status": 200, + "basicChallenge": false, + "durationMs": 6 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:17.937Z", + "status": 200, + "basicChallenge": false, + "durationMs": 135 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:18.198Z", + "status": 200, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:18.454Z", + "status": 200, + "basicChallenge": false, + "durationMs": 133 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:18.712Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:18.902Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:19.158Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:19.348Z", + "status": 200, + "basicChallenge": false, + "durationMs": 131 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:19.605Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:19.796Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:20.050Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:20.240Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:20.495Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:20.685Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:20.818Z", + "status": 200, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:20.950Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.083Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.212Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.345Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.476Z", + "status": 200, + "basicChallenge": false, + "durationMs": 9 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.611Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.740Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:21.874Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:22.003Z", + "status": 200, + "basicChallenge": false, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:29:22.135Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:29.936Z", + "status": 200, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:30.190Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:30.444Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:30.633Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:30.886Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:31.077Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:31.332Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:31.523Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:31.777Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:31.967Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:32.222Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:32.412Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:32.666Z", + "status": 200, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:32.798Z", + "status": 200, + "basicChallenge": false, + "durationMs": 9 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:32.935Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.064Z", + "status": 200, + "basicChallenge": false, + "durationMs": 11 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.200Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.331Z", + "status": 200, + "basicChallenge": false, + "durationMs": 10 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.466Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.596Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.729Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.857Z", + "status": 200, + "basicChallenge": false, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:33.988Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:29:34.116Z", + "status": 200, + "basicChallenge": false, + "durationMs": 6 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:41.936Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:42.192Z", + "status": 200, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:42.446Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:42.700Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:42.890Z", + "status": 200, + "basicChallenge": false, + "durationMs": 132 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:43.147Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:43.338Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:43.593Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:43.784Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:44.037Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:44.227Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:44.480Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:44.670Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:44.802Z", + "status": 200, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:44.935Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.068Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.197Z", + "status": 200, + "basicChallenge": false, + "durationMs": 9 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.331Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.460Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.593Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.723Z", + "status": 200, + "basicChallenge": false, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.854Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:45.983Z", + "status": 200, + "basicChallenge": false, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:29:46.114Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:53.936Z", + "status": 200, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:54.189Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:54.445Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:54.635Z", + "status": 200, + "basicChallenge": false, + "durationMs": 131 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:54.892Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:55.083Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:55.338Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:55.530Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:55.784Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:55.975Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:56.229Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:56.419Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:56.675Z", + "status": 200, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:56.807Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:56.940Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.069Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.202Z", + "status": 200, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.334Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.468Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.599Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.731Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:57.860Z", + "status": 200, + "basicChallenge": false, + "durationMs": 18 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:58.004Z", + "status": 200, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:29:58.138Z", + "status": 200, + "basicChallenge": false, + "durationMs": 5 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:05.937Z", + "status": 200, + "basicChallenge": false, + "durationMs": 132 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:06.194Z", + "status": 200, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:06.448Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:06.703Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:06.893Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:07.147Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:07.338Z", + "status": 200, + "basicChallenge": false, + "durationMs": 130 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:07.593Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:07.784Z", + "status": 200, + "basicChallenge": false, + "durationMs": 129 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:08.038Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:08.229Z", + "status": 200, + "basicChallenge": false, + "durationMs": 128 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:08.482Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:08.672Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:08.805Z", + "status": 200, + "durationMs": 6 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:08.936Z", + "status": 200, + "basicChallenge": false, + "durationMs": 10 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.072Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.201Z", + "status": 200, + "basicChallenge": false, + "durationMs": 9 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.335Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.465Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.599Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.729Z", + "status": 200, + "basicChallenge": false, + "durationMs": 8 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.863Z", + "status": 200, + "durationMs": 3 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:09.991Z", + "status": 200, + "basicChallenge": false, + "durationMs": 7 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:30:10.123Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "104.165.244.7", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:10.254Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:10.445Z", + "status": 200, + "durationMs": 66 + }, + { + "host": "104.165.244.7", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:10.637Z", + "status": 200, + "durationMs": 81 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:10.844Z", + "status": 200, + "durationMs": 65 + }, + { + "host": "104.165.244.7", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:11.038Z", + "status": 200, + "durationMs": 334 + }, + { + "host": "194.226.121.150", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:11.498Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:11.628Z", + "status": 200, + "durationMs": 5 + }, + { + "host": "194.226.121.150", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:11.758Z", + "status": 200, + "durationMs": 11 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:11.895Z", + "status": 200, + "durationMs": 4 + }, + { + "host": "194.226.121.150", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:30:12.025Z", + "status": 200, + "durationMs": 122 + } + ], + "diagnostics": [ + { + "host": "104.165.244.7", + "phase": "before", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 1, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "1d22h12m31s", + "cpuLoad": "0", + "freeMemory": "813305856" + }, + "retainedAuthFailureCount": 899, + "recentFailures": [ + { + "time": "2026-10-14 06:23:26", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:28", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:30", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:32", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:05", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:10", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:15", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:21", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:47", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:48", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:49", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + } + ], + "retainedLogIsNotCurrentRate": true + }, + { + "host": "194.226.121.150", + "phase": "before", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 2, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "5d14h26m12s", + "cpuLoad": "1", + "freeMemory": "814923776" + }, + "retainedAuthFailureCount": 9, + "recentFailures": [ + { + "time": "2026-10-13 19:54:09", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:10", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:11", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:13", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:14", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:16", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:18", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:20", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:21", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + } + ], + "retainedLogIsNotCurrentRate": true + }, + { + "host": "104.165.244.7", + "phase": "after", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 1, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "1d22h14m1s", + "cpuLoad": "1", + "freeMemory": "813047808" + }, + "retainedAuthFailureCount": 899, + "recentFailures": [ + { + "time": "2026-10-14 06:23:26", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:28", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:30", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:32", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:05", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:10", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:15", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:21", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:47", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:48", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:49", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + } + ], + "retainedLogIsNotCurrentRate": true + }, + { + "host": "194.226.121.150", + "phase": "after", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 1, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "5d14h27m42s", + "cpuLoad": "2", + "freeMemory": "814899200" + }, + "retainedAuthFailureCount": 9, + "recentFailures": [ + { + "time": "2026-10-13 19:54:09", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:10", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:11", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:13", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:14", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:16", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:18", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:20", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:21", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + } + ], + "retainedLogIsNotCurrentRate": true + } + ], + "configurationWrites": 0, + "passwordChanges": 0, + "rootCauseKnown": false, + "completedAt": "2026-10-14T04:30:12.274Z", + "summary": { + "sampleRequests": 192, + "failedSamples": 0, + "allRequests": 212, + "failures": [] + } +} diff --git a/docs/ux-ui/acceptance/chr236-workstation.json b/docs/ux-ui/acceptance/chr236-workstation.json new file mode 100644 index 00000000..46998c95 --- /dev/null +++ b/docs/ux-ui/acceptance/chr236-workstation.json @@ -0,0 +1,2613 @@ +{ + "date": "2026-10-14", + "block": "12.5.236", + "vantage": "workstation", + "credentialSource": "explicit-owned-test-env", + "startedAt": "2026-10-14T04:27:11.149Z", + "requests": [ + { + "host": "194.226.121.150", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:11.150Z", + "status": 200, + "durationMs": 360 + }, + { + "host": "194.226.121.150", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:11.640Z", + "status": 200, + "durationMs": 56 + }, + { + "host": "194.226.121.150", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:11.824Z", + "status": 200, + "durationMs": 64 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:12.022Z", + "status": 200, + "durationMs": 56 + }, + { + "host": "194.226.121.150", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:12.206Z", + "status": 200, + "durationMs": 291 + }, + { + "host": "104.165.244.7", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:12.635Z", + "status": 200, + "durationMs": 470 + }, + { + "host": "104.165.244.7", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:13.231Z", + "status": 200, + "durationMs": 111 + }, + { + "host": "104.165.244.7", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:13.476Z", + "status": 200, + "durationMs": 134 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:13.737Z", + "status": 200, + "durationMs": 111 + }, + { + "host": "104.165.244.7", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:27:13.982Z", + "status": 200, + "durationMs": 610 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:14.719Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:14.902Z", + "status": 200, + "basicChallenge": false, + "durationMs": 116 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:15.147Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:15.330Z", + "status": 200, + "basicChallenge": false, + "durationMs": 108 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:15.574Z", + "status": 200, + "durationMs": 56 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:15.756Z", + "status": 200, + "basicChallenge": false, + "durationMs": 111 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:15.998Z", + "status": 200, + "durationMs": 56 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:16.182Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:16.426Z", + "status": 200, + "durationMs": 55 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:16.610Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:16.855Z", + "status": 200, + "durationMs": 55 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:17.038Z", + "status": 200, + "basicChallenge": false, + "durationMs": 120 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:17.298Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:17.542Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:17.894Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:18.138Z", + "status": 200, + "basicChallenge": false, + "durationMs": 215 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:18.491Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:18.737Z", + "status": 200, + "basicChallenge": false, + "durationMs": 215 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:19.088Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:19.332Z", + "status": 200, + "basicChallenge": false, + "durationMs": 222 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:19.682Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:19.925Z", + "status": 200, + "basicChallenge": false, + "durationMs": 222 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:20.277Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 1, + "kind": "sample", + "startedAt": "2026-10-14T04:27:20.522Z", + "status": 200, + "basicChallenge": false, + "durationMs": 220 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:26.724Z", + "status": 200, + "basicChallenge": false, + "durationMs": 109 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:26.967Z", + "status": 200, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:27.211Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:27.455Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:27.637Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:27.882Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:28.066Z", + "status": 200, + "basicChallenge": false, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:28.310Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:28.493Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:28.737Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:28.919Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:29.161Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:29.343Z", + "status": 200, + "basicChallenge": false, + "durationMs": 221 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:29.694Z", + "status": 200, + "durationMs": 216 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:30.042Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:30.392Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:30.637Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:30.985Z", + "status": 200, + "durationMs": 108 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:31.231Z", + "status": 200, + "basicChallenge": false, + "durationMs": 227 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:31.595Z", + "status": 200, + "durationMs": 108 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:31.835Z", + "status": 200, + "basicChallenge": false, + "durationMs": 217 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:32.183Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:32.427Z", + "status": 200, + "basicChallenge": false, + "durationMs": 1222 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 2, + "kind": "sample", + "startedAt": "2026-10-14T04:27:33.781Z", + "status": 200, + "durationMs": 115 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:38.728Z", + "status": 200, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:38.973Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:39.218Z", + "status": 200, + "durationMs": 52 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:39.402Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:39.646Z", + "status": 200, + "durationMs": 56 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:39.830Z", + "status": 200, + "basicChallenge": false, + "durationMs": 113 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:40.075Z", + "status": 200, + "durationMs": 55 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:40.259Z", + "status": 200, + "basicChallenge": false, + "durationMs": 138 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:40.533Z", + "status": 200, + "durationMs": 56 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:40.716Z", + "status": 200, + "basicChallenge": false, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:40.958Z", + "status": 200, + "durationMs": 61 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:41.156Z", + "status": 200, + "basicChallenge": false, + "durationMs": 1121 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:42.412Z", + "status": 200, + "durationMs": 220 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:42.765Z", + "status": 200, + "basicChallenge": false, + "durationMs": 216 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:43.118Z", + "status": 200, + "durationMs": 119 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:43.363Z", + "status": 200, + "basicChallenge": false, + "durationMs": 244 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:43.744Z", + "status": 200, + "durationMs": 112 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:43.990Z", + "status": 200, + "basicChallenge": false, + "durationMs": 233 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:44.358Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:44.604Z", + "status": 200, + "basicChallenge": false, + "durationMs": 229 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:44.972Z", + "status": 200, + "durationMs": 108 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:45.219Z", + "status": 200, + "basicChallenge": false, + "durationMs": 314 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:45.662Z", + "status": 200, + "durationMs": 108 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 3, + "kind": "sample", + "startedAt": "2026-10-14T04:27:45.906Z", + "status": 200, + "basicChallenge": false, + "durationMs": 248 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:50.723Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:50.966Z", + "status": 200, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:51.206Z", + "status": 200, + "basicChallenge": false, + "durationMs": 110 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:51.449Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:51.631Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:51.872Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:52.053Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:52.297Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:52.478Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:52.721Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:52.902Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:53.146Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:53.327Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:53.676Z", + "status": 200, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:54.027Z", + "status": 200, + "basicChallenge": false, + "durationMs": 215 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:54.375Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:54.620Z", + "status": 200, + "basicChallenge": false, + "durationMs": 217 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:54.971Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:55.213Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:55.562Z", + "status": 200, + "durationMs": 111 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:55.806Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:56.157Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:56.402Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 4, + "kind": "sample", + "startedAt": "2026-10-14T04:27:56.752Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:02.727Z", + "status": 200, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:02.971Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:03.202Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:03.386Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:03.630Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:03.814Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:04.059Z", + "status": 200, + "durationMs": 55 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:04.241Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:04.484Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:04.668Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:04.912Z", + "status": 200, + "durationMs": 55 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:05.094Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:05.338Z", + "status": 200, + "durationMs": 217 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:05.690Z", + "status": 200, + "basicChallenge": false, + "durationMs": 217 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:06.040Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:06.286Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:06.639Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:06.885Z", + "status": 200, + "basicChallenge": false, + "durationMs": 216 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:07.235Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:07.479Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:07.830Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:08.076Z", + "status": 200, + "basicChallenge": false, + "durationMs": 215 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:08.428Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 5, + "kind": "sample", + "startedAt": "2026-10-14T04:28:08.674Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:14.731Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:14.975Z", + "status": 200, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:15.220Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:15.464Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:15.648Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:15.893Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:16.076Z", + "status": 200, + "basicChallenge": false, + "durationMs": 108 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:16.317Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:16.501Z", + "status": 200, + "basicChallenge": false, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:16.731Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:16.914Z", + "status": 200, + "basicChallenge": false, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:17.158Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:17.342Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:17.693Z", + "status": 200, + "durationMs": 220 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:18.045Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:18.397Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:18.643Z", + "status": 200, + "basicChallenge": false, + "durationMs": 221 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:18.996Z", + "status": 200, + "durationMs": 111 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:19.241Z", + "status": 200, + "basicChallenge": false, + "durationMs": 222 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:19.591Z", + "status": 200, + "durationMs": 112 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:19.834Z", + "status": 200, + "basicChallenge": false, + "durationMs": 262 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:20.230Z", + "status": 200, + "durationMs": 140 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:20.504Z", + "status": 200, + "basicChallenge": false, + "durationMs": 1268 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 6, + "kind": "sample", + "startedAt": "2026-10-14T04:28:21.906Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:26.733Z", + "status": 200, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:26.976Z", + "status": 200, + "basicChallenge": false, + "durationMs": 110 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:27.219Z", + "status": 200, + "durationMs": 52 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:27.401Z", + "status": 200, + "basicChallenge": false, + "durationMs": 114 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:27.645Z", + "status": 200, + "durationMs": 123 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:27.902Z", + "status": 200, + "basicChallenge": false, + "durationMs": 158 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:28.190Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:28.372Z", + "status": 200, + "basicChallenge": false, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:28.603Z", + "status": 200, + "durationMs": 52 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:28.786Z", + "status": 200, + "basicChallenge": false, + "durationMs": 105 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:29.030Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:29.210Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:29.451Z", + "status": 200, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:29.801Z", + "status": 200, + "basicChallenge": false, + "durationMs": 220 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:30.150Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:30.396Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:30.750Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:30.995Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:31.348Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:31.593Z", + "status": 200, + "basicChallenge": false, + "durationMs": 216 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:31.944Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:32.188Z", + "status": 200, + "basicChallenge": false, + "durationMs": 217 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:32.540Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 7, + "kind": "sample", + "startedAt": "2026-10-14T04:28:32.784Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:38.732Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:38.977Z", + "status": 200, + "durationMs": 104 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:39.206Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:39.450Z", + "status": 200, + "durationMs": 52 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:39.632Z", + "status": 200, + "basicChallenge": false, + "durationMs": 107 + }, + { + "host": "194.226.121.150", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:39.874Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:40.057Z", + "status": 200, + "basicChallenge": false, + "durationMs": 109 + }, + { + "host": "194.226.121.150", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:40.301Z", + "status": 200, + "durationMs": 54 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:40.484Z", + "status": 200, + "basicChallenge": false, + "durationMs": 109 + }, + { + "host": "194.226.121.150", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:40.728Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:40.912Z", + "status": 200, + "basicChallenge": false, + "durationMs": 106 + }, + { + "host": "194.226.121.150", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:41.156Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:41.340Z", + "status": 200, + "basicChallenge": false, + "durationMs": 220 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:41.691Z", + "status": 200, + "durationMs": 217 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.043Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/gre", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.395Z", + "status": 200, + "durationMs": 108 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.640Z", + "status": 200, + "basicChallenge": false, + "durationMs": 219 + }, + { + "host": "104.165.244.7", + "path": "/routing/bgp/session", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:42.992Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.237Z", + "status": 200, + "basicChallenge": false, + "durationMs": 222 + }, + { + "host": "104.165.244.7", + "path": "/routing/ospf/neighbor", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.588Z", + "status": 200, + "durationMs": 111 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:43.833Z", + "status": 200, + "basicChallenge": false, + "durationMs": 218 + }, + { + "host": "104.165.244.7", + "path": "/interface/wireguard/peers", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.185Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "fetch-close", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.429Z", + "status": 200, + "basicChallenge": false, + "durationMs": 220 + }, + { + "host": "104.165.244.7", + "path": "/interface/vxlan", + "mode": "compiled-client", + "cycle": 8, + "kind": "sample", + "startedAt": "2026-10-14T04:28:44.780Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "194.226.121.150", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:45.031Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:45.224Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:45.407Z", + "status": 200, + "durationMs": 59 + }, + { + "host": "194.226.121.150", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:45.606Z", + "status": 200, + "durationMs": 53 + }, + { + "host": "194.226.121.150", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:45.789Z", + "status": 200, + "durationMs": 260 + }, + { + "host": "104.165.244.7", + "path": "/user", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:46.186Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/user/group", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:46.430Z", + "status": 200, + "durationMs": 109 + }, + { + "host": "104.165.244.7", + "path": "/ip/service", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:46.672Z", + "status": 200, + "durationMs": 122 + }, + { + "host": "104.165.244.7", + "path": "/system/resource", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:46.932Z", + "status": 200, + "durationMs": 110 + }, + { + "host": "104.165.244.7", + "path": "/log", + "mode": "compiled-client", + "cycle": 0, + "kind": "diagnostic", + "startedAt": "2026-10-14T04:28:47.176Z", + "status": 200, + "durationMs": 597 + } + ], + "diagnostics": [ + { + "host": "194.226.121.150", + "phase": "before", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 1, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "5d14h24m42s", + "cpuLoad": "1", + "freeMemory": "814858240" + }, + "retainedAuthFailureCount": 9, + "recentFailures": [ + { + "time": "2026-10-13 19:54:09", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:10", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:11", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:13", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:14", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:16", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:18", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:20", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:21", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + } + ], + "retainedLogIsNotCurrentRate": true + }, + { + "host": "104.165.244.7", + "phase": "before", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 1, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "1d22h11m4s", + "cpuLoad": "0", + "freeMemory": "813547520" + }, + "retainedAuthFailureCount": 899, + "recentFailures": [ + { + "time": "2026-10-14 06:23:26", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:28", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:30", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:32", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:05", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:10", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:15", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:21", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:47", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:48", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:49", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + } + ], + "retainedLogIsNotCurrentRate": true + }, + { + "host": "194.226.121.150", + "phase": "after", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 2, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "5d14h26m16s", + "cpuLoad": "1", + "freeMemory": "814923776" + }, + "retainedAuthFailureCount": 9, + "recentFailures": [ + { + "time": "2026-10-13 19:54:09", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:10", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:11", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-13 19:54:13", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:14", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:16", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:18", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:20", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-13 19:54:21", + "via": "ftp", + "fromTestDebian": false, + "forConfiguredUser": false + } + ], + "retainedLogIsNotCurrentRate": true + }, + { + "host": "104.165.244.7", + "phase": "after", + "userPresent": true, + "userDisabled": "false", + "userAddressRestriction": "", + "hasApiPolicy": true, + "hasRestApiPolicy": true, + "wwwEnabled": true, + "wwwMaxSessions": "20", + "wwwDynamicRows": 2, + "resource": { + "version": "7.24.5 (stable)", + "uptime": "1d22h12m37s", + "cpuLoad": "0", + "freeMemory": "813015040" + }, + "retainedAuthFailureCount": 899, + "recentFailures": [ + { + "time": "2026-10-14 06:23:26", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:28", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:30", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:32", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:46", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:23:56", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:05", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:10", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:15", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:21", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": false + }, + { + "time": "2026-10-14 06:24:47", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:48", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + }, + { + "time": "2026-10-14 06:24:49", + "via": "ssh", + "fromTestDebian": false, + "forConfiguredUser": true + } + ], + "retainedLogIsNotCurrentRate": true + } + ], + "configurationWrites": 0, + "passwordChanges": 0, + "rootCauseKnown": false, + "completedAt": "2026-10-14T04:28:47.909Z", + "summary": { + "sampleRequests": 192, + "failedSamples": 0, + "allRequests": 212, + "failures": [] + } +} diff --git a/docs/ux-ui/acceptance/rest236-active-sessions.json b/docs/ux-ui/acceptance/rest236-active-sessions.json new file mode 100644 index 00000000..d6536a94 --- /dev/null +++ b/docs/ux-ui/acceptance/rest236-active-sessions.json @@ -0,0 +1,25 @@ +{ + "date": "2026-10-14", + "block": "12.5.236", + "devices": [ + { + "host": "104.165.244.7", + "activeSessions": 306, + "byVia": { + "rest-api": 304, + "api": 2 + }, + "forConfiguredUser": 306 + }, + { + "host": "194.226.121.150", + "activeSessions": 830, + "byVia": { + "rest-api": 828, + "api": 2 + }, + "forConfiguredUser": 830 + } + ], + "configurationWrites": 0 +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/rest236-session-growth.json b/docs/ux-ui/acceptance/rest236-session-growth.json new file mode 100644 index 00000000..f57b1c09 --- /dev/null +++ b/docs/ux-ui/acceptance/rest236-session-growth.json @@ -0,0 +1,57 @@ +{ + "date": "2026-10-14", + "block": "12.5.236", + "devices": [ + { + "host": "104.165.244.7", + "before": { + "total": 306, + "rest": 304, + "api": 2 + }, + "after": { + "total": 306, + "rest": 304, + "api": 2 + }, + "restDelta": 0, + "explicitReadsBetweenSnapshots": 3, + "backgroundPollingNotPaused": true, + "recordKeys": [ + ".id", + "address", + "group", + "name", + "radius", + "via", + "when" + ] + }, + { + "host": "194.226.121.150", + "before": { + "total": 830, + "rest": 828, + "api": 2 + }, + "after": { + "total": 830, + "rest": 828, + "api": 2 + }, + "restDelta": 0, + "explicitReadsBetweenSnapshots": 3, + "backgroundPollingNotPaused": true, + "recordKeys": [ + ".id", + "address", + "group", + "name", + "radius", + "via", + "when" + ] + } + ], + "configurationWrites": 0 +} \ No newline at end of file diff --git a/docs/ux-ui/acceptance/rest236-summary.json b/docs/ux-ui/acceptance/rest236-summary.json new file mode 100644 index 00000000..a3f9706e --- /dev/null +++ b/docs/ux-ui/acceptance/rest236-summary.json @@ -0,0 +1,37 @@ +{ + "date": "2026-10-14", + "block": "12.5.236", + "samples": 384, + "failedSamples": 0, + "diagnosticReads": 40, + "disabledDeviceReads": 0, + "configurationWrites": 0, + "passwordChanges": 0, + "findings": { + "currentCredentialsAndPoliciesWork": true, + "persistentAddressRestrictionObserved": false, + "currentWwwSessionsBelowLimit": true, + "retainedRestSessions": { + "194.226.121.150": 828, + "104.165.244.7": 304 + }, + "internalApiSessionsPerDevice": 2, + "restGrowthDuringThreeAdditionalReads": 0 + }, + "rootCauseKnown": false, + "routerOs": "7.24.5", + "candidate": { + "kind": "inactive-rest-session-cleanup", + "status": "vendor-fixed-related-defect-not-proven-cause-of-historical-errors", + "source": "https://forum.mikrotik.com/t/7-25rc-testing-is-released/273520/1", + "fixedInAnnouncement": "7.25rc changes since 7.24.5", + "introducedSince": "7.21" + }, + "limits": [ + "Old500 detail body was not recorded", + "No failure occurred during current correlated observation", + "No 10-minute login renewal or firmware comparison", + "Stored failure logs are retained history, not current request rate", + "Current valid credentials/policies do not establish historical state" + ] +}