@sleep2agi/agent-network-dashboard 0.5.3-preview.240 → 0.5.3-preview.242
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/build-manifest.json +3 -3
- package/.next/diagnostics/route-bundle-stats.json +5 -5
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +1 -1
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin/page_client-reference-manifest.js +1 -1
- package/.next/server/app/admin.html +2 -2
- package/.next/server/app/admin.rsc +2 -2
- package/.next/server/app/admin.segments/_full.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_head.segment.rsc +1 -1
- package/.next/server/app/admin.segments/_index.segment.rsc +2 -2
- package/.next/server/app/admin.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/admin.segments/admin/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/admin.segments/admin.segment.rsc +1 -1
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/.next/server/app/login.html +2 -2
- package/.next/server/app/login.rsc +3 -3
- package/.next/server/app/login.segments/_full.segment.rsc +3 -3
- package/.next/server/app/login.segments/_head.segment.rsc +1 -1
- package/.next/server/app/login.segments/_index.segment.rsc +2 -2
- package/.next/server/app/login.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/login.segments/login.segment.rsc +1 -1
- package/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/logs.html +2 -2
- package/.next/server/app/logs.rsc +2 -2
- package/.next/server/app/logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/logs.segments/logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/logs.segments/logs.segment.rsc +1 -1
- package/.next/server/app/messages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/messages.html +2 -2
- package/.next/server/app/messages.rsc +2 -2
- package/.next/server/app/messages.segments/_full.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_head.segment.rsc +1 -1
- package/.next/server/app/messages.segments/_index.segment.rsc +2 -2
- package/.next/server/app/messages.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/messages.segments/messages/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/messages.segments/messages.segment.rsc +1 -1
- package/.next/server/app/node/page_client-reference-manifest.js +1 -1
- package/.next/server/app/node.html +2 -2
- package/.next/server/app/node.rsc +2 -2
- package/.next/server/app/node.segments/_full.segment.rsc +2 -2
- package/.next/server/app/node.segments/_head.segment.rsc +1 -1
- package/.next/server/app/node.segments/_index.segment.rsc +2 -2
- package/.next/server/app/node.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/node.segments/node/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/node.segments/node.segment.rsc +1 -1
- package/.next/server/app/nodes/page_client-reference-manifest.js +1 -1
- package/.next/server/app/nodes.html +2 -2
- package/.next/server/app/nodes.rsc +2 -2
- package/.next/server/app/nodes.segments/_full.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_head.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/_index.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/nodes.segments/nodes/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/nodes.segments/nodes.segment.rsc +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/server-logs.html +2 -2
- package/.next/server/app/server-logs.rsc +2 -2
- package/.next/server/app/server-logs.segments/_full.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_head.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/_index.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/server-logs.segments/server-logs/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/server-logs.segments/server-logs.segment.rsc +1 -1
- package/.next/server/app/settings/networks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/networks.html +2 -2
- package/.next/server/app/settings/networks.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/networks.segments/settings/networks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings/networks.segment.rsc +1 -1
- package/.next/server/app/settings/networks.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/tokens.html +2 -2
- package/.next/server/app/settings/tokens.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_full.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings/tokens.segments/settings/tokens/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings/tokens.segment.rsc +1 -1
- package/.next/server/app/settings/tokens.segments/settings.segment.rsc +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/settings.segments/_full.segment.rsc +3 -3
- package/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks/page_client-reference-manifest.js +1 -1
- package/.next/server/app/tasks.html +2 -2
- package/.next/server/app/tasks.rsc +2 -2
- package/.next/server/app/tasks.segments/_full.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_head.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/_index.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/tasks.segments/tasks/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/tasks.segments/tasks.segment.rsc +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js +1 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0sv~g.o._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js +2 -2
- package/.next/server/chunks/ssr/agent-network-dashboard_09kk21a._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_01jhlxz._.js.map +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js +1 -1
- package/.next/server/chunks/ssr/agent-network-dashboard_app_09d29my._.js.map +1 -1
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/{0xam8-c13i0hj.css → 0culr_bidzj0m.css} +1 -1
- package/.next/static/chunks/{0qtwrl.z42tp2.js → 0ko8pl1vfb11p.js} +1 -1
- package/.next/static/chunks/{09mmy8l-4b2ix.js → 0saf_mmcwyn~f.js} +1 -1
- package/.next/static/chunks/{10mgpmqxdfqj3.js → 0tkm-ra70hdnw.js} +1 -1
- package/.next/static/chunks/{0bin~7-npgcjx.js → 0zd~0rv.o9d6h.js} +2 -2
- package/.next/trace +2 -2
- package/.next/trace-build +1 -1
- package/app/components/TopoGraph.tsx +17 -9
- package/app/globals.css +87 -2
- package/package.json +1 -1
- package/scripts/topo-h2-triple-axis-breath-test.mjs +7 -3
- package/scripts/topo-panel-titles-triple-axis-breath-test.mjs +161 -0
- package/scripts/topo-r717-triple-axis-tier-pattern-test.mjs +12 -5
- package/scripts/topo-respiratory-patterns-catalog-test.mjs +4 -4
- package/scripts/topo-respiratory-triple-axis-surfaces-catalog-test.mjs +2 -2
- package/scripts/topo-zoom-level-triple-axis-breath-test.mjs +148 -0
- /package/.next/static/{Elk45KtDHnwGqcI6BcPUR → nbnCw0V7u-b5rEvB2Od8_}/_buildManifest.js +0 -0
- /package/.next/static/{Elk45KtDHnwGqcI6BcPUR → nbnCw0V7u-b5rEvB2Od8_}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{Elk45KtDHnwGqcI6BcPUR → nbnCw0V7u-b5rEvB2Od8_}/_ssgManifest.js +0 -0
package/.next/trace
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":251,"timestamp":412469879443,"id":4,"parentId":1,"tags":{},"startTime":1779220442126,"traceId":"5c8411f7525f120e"},{"name":"load-custom-routes","duration":488,"timestamp":412469879834,"id":5,"parentId":1,"tags":{},"startTime":1779220442126,"traceId":"5c8411f7525f120e"},{"name":"create-dist-dir","duration":675,"timestamp":412469880379,"id":6,"parentId":1,"tags":{},"startTime":1779220442127,"traceId":"5c8411f7525f120e"},{"name":"clean","duration":33151,"timestamp":412469881776,"id":7,"parentId":1,"tags":{},"startTime":1779220442128,"traceId":"5c8411f7525f120e"},{"name":"discover-routes","duration":29223,"timestamp":412470001323,"id":8,"parentId":1,"tags":{},"startTime":1779220442248,"traceId":"5c8411f7525f120e"},{"name":"create-root-mapping","duration":142,"timestamp":412470030624,"id":9,"parentId":1,"tags":{},"startTime":1779220442277,"traceId":"5c8411f7525f120e"},{"name":"generate-route-types","duration":27713,"timestamp":412470034266,"id":10,"parentId":1,"tags":{},"startTime":1779220442281,"traceId":"5c8411f7525f120e"},{"name":"public-dir-conflict-check","duration":120,"timestamp":412470062134,"id":11,"parentId":1,"tags":{},"startTime":1779220442308,"traceId":"5c8411f7525f120e"},{"name":"generate-routes-manifest","duration":4871,"timestamp":412470062390,"id":12,"parentId":1,"tags":{},"startTime":1779220442309,"traceId":"5c8411f7525f120e"},{"name":"run-turbopack","duration":6078599,"timestamp":412470080910,"id":14,"parentId":1,"tags":{},"startTime":1779220442327,"traceId":"5c8411f7525f120e"},{"name":"turbopack-build-events","duration":112,"timestamp":412470392382,"id":15,"parentId":1,"tags":{},"startTime":1779220442639,"traceId":"5c8411f7525f120e"},{"name":"run-typescript","duration":10115239,"timestamp":412476167800,"id":16,"parentId":1,"tags":{},"startTime":1779220448414,"traceId":"5c8411f7525f120e"},{"name":"generate-required-server-files","duration":2321,"timestamp":412486284473,"id":18,"parentId":1,"tags":{},"startTime":1779220458531,"traceId":"5c8411f7525f120e"},{"name":"check-static-error-page","duration":12554,"timestamp":412486478714,"id":20,"parentId":19,"tags":{},"startTime":1779220458725,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":524916,"timestamp":412486496063,"id":65,"parentId":22,"tags":{},"startTime":1779220458742,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":539991,"timestamp":412486481162,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779220458727,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":631133,"timestamp":412486496504,"id":69,"parentId":28,"tags":{},"startTime":1779220458743,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":643930,"timestamp":412486483813,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":635916,"timestamp":412486497633,"id":72,"parentId":32,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":649290,"timestamp":412486484333,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779220458731,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":659556,"timestamp":412486493966,"id":64,"parentId":21,"tags":{},"startTime":1779220458740,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":673603,"timestamp":412486479994,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779220458726,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":665186,"timestamp":412486497792,"id":73,"parentId":33,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":678630,"timestamp":412486484440,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779220458731,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":685120,"timestamp":412486497914,"id":75,"parentId":35,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":697910,"timestamp":412486485211,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779220458731,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":690352,"timestamp":412486497930,"id":76,"parentId":36,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":702747,"timestamp":412486485605,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779220458732,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":694384,"timestamp":412486496744,"id":70,"parentId":29,"tags":{},"startTime":1779220458743,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":707291,"timestamp":412486483891,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":695028,"timestamp":412486497959,"id":77,"parentId":37,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":707333,"timestamp":412486485731,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779220458732,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":698754,"timestamp":412486497976,"id":78,"parentId":38,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":710932,"timestamp":412486485838,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779220458732,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":699625,"timestamp":412486497990,"id":79,"parentId":39,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":711754,"timestamp":412486485902,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779220458732,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":704273,"timestamp":412486496315,"id":67,"parentId":26,"tags":{},"startTime":1779220458743,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":716999,"timestamp":412486483640,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":709476,"timestamp":412486496422,"id":68,"parentId":27,"tags":{},"startTime":1779220458743,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":722222,"timestamp":412486483728,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":708278,"timestamp":412486498059,"id":82,"parentId":44,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":719858,"timestamp":412486486548,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779220458733,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":710817,"timestamp":412486498047,"id":81,"parentId":42,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":722678,"timestamp":412486486243,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779220458733,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":714284,"timestamp":412486498068,"id":83,"parentId":45,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":725769,"timestamp":412486486636,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779220458733,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":719970,"timestamp":412486498098,"id":85,"parentId":47,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":731359,"timestamp":412486486772,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779220458733,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":722090,"timestamp":412486496214,"id":66,"parentId":25,"tags":{},"startTime":1779220458742,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":734849,"timestamp":412486483493,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":722501,"timestamp":412486498139,"id":87,"parentId":49,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":732409,"timestamp":412486488280,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":722848,"timestamp":412486497999,"id":80,"parentId":40,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":734923,"timestamp":412486485968,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779220458732,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":731793,"timestamp":412486498084,"id":84,"parentId":46,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":743230,"timestamp":412486486698,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779220458733,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":734899,"timestamp":412486497563,"id":71,"parentId":30,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":748527,"timestamp":412486483988,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":720717,"timestamp":412486516237,"id":91,"parentId":31,"tags":{},"startTime":1779220458763,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":752921,"timestamp":412486484107,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779220458730,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":740786,"timestamp":412486498163,"id":89,"parentId":51,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":750577,"timestamp":412486488441,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":724376,"timestamp":412486514807,"id":90,"parentId":24,"tags":{},"startTime":1779220458761,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":757624,"timestamp":412486481598,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779220458728,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":723259,"timestamp":412486519352,"id":93,"parentId":43,"tags":{},"startTime":1779220458766,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":756320,"timestamp":412486486337,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779220458733,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":745773,"timestamp":412486498151,"id":88,"parentId":50,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":755585,"timestamp":412486488382,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":759938,"timestamp":412486498130,"id":86,"parentId":48,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":770058,"timestamp":412486488069,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779220458734,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":740838,"timestamp":412486517450,"id":92,"parentId":41,"tags":{},"startTime":1779220458764,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":772279,"timestamp":412486486051,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779220458732,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":778515,"timestamp":412486497884,"id":74,"parentId":34,"tags":{},"startTime":1779220458744,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":791946,"timestamp":412486484519,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779220458731,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":763151,"timestamp":412486522110,"id":100,"parentId":58,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":795512,"timestamp":412486489816,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779220458736,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":770973,"timestamp":412486522226,"id":101,"parentId":59,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":803215,"timestamp":412486490046,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779220458736,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":785711,"timestamp":412486522249,"id":102,"parentId":61,"tags":{},"startTime":1779220458769,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":817397,"timestamp":412486490678,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779220458737,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":792164,"timestamp":412486522042,"id":95,"parentId":52,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":825544,"timestamp":412486488714,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":792345,"timestamp":412486522100,"id":99,"parentId":56,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":825227,"timestamp":412486489259,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779220458736,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":803118,"timestamp":412486521994,"id":94,"parentId":23,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":843766,"timestamp":412486481398,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779220458728,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":802981,"timestamp":412486522277,"id":104,"parentId":63,"tags":{},"startTime":1779220458769,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":834290,"timestamp":412486490998,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779220458737,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":770598,"timestamp":412486554785,"id":105,"parentId":60,"tags":{},"startTime":1779220458801,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":835177,"timestamp":412486490235,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779220458737,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":803402,"timestamp":412486522071,"id":97,"parentId":54,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":836555,"timestamp":412486488940,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":803284,"timestamp":412486522265,"id":103,"parentId":62,"tags":{},"startTime":1779220458769,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":834739,"timestamp":412486490835,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779220458737,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":809529,"timestamp":412486522086,"id":98,"parentId":55,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":842557,"timestamp":412486489106,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":738347,"timestamp":412486593923,"id":106,"parentId":57,"tags":{},"startTime":1779220458840,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":842869,"timestamp":412486489434,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779220458736,"traceId":"5c8411f7525f120e"},{"name":"is-page-static","duration":812001,"timestamp":412486522059,"id":96,"parentId":53,"tags":{},"startTime":1779220458768,"traceId":"5c8411f7525f120e"},{"name":"check-page","duration":845317,"timestamp":412486488816,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779220458735,"traceId":"5c8411f7525f120e"},{"name":"static-check","duration":856548,"timestamp":412486477652,"id":19,"parentId":1,"tags":{},"startTime":1779220458724,"traceId":"5c8411f7525f120e"}]
|
|
2
|
-
[{"name":"write-routes-manifest","duration":
|
|
1
|
+
[{"name":"generate-buildid","duration":289,"timestamp":413284251413,"id":4,"parentId":1,"tags":{},"startTime":1779221256498,"traceId":"3a48dc450e86e1f3"},{"name":"load-custom-routes","duration":506,"timestamp":413284251879,"id":5,"parentId":1,"tags":{},"startTime":1779221256498,"traceId":"3a48dc450e86e1f3"},{"name":"create-dist-dir","duration":690,"timestamp":413284252434,"id":6,"parentId":1,"tags":{},"startTime":1779221256499,"traceId":"3a48dc450e86e1f3"},{"name":"clean","duration":34712,"timestamp":413284253832,"id":7,"parentId":1,"tags":{},"startTime":1779221256500,"traceId":"3a48dc450e86e1f3"},{"name":"discover-routes","duration":13543,"timestamp":413284369240,"id":8,"parentId":1,"tags":{},"startTime":1779221256616,"traceId":"3a48dc450e86e1f3"},{"name":"create-root-mapping","duration":185,"timestamp":413284382851,"id":9,"parentId":1,"tags":{},"startTime":1779221256629,"traceId":"3a48dc450e86e1f3"},{"name":"generate-route-types","duration":41641,"timestamp":413284386051,"id":10,"parentId":1,"tags":{},"startTime":1779221256632,"traceId":"3a48dc450e86e1f3"},{"name":"public-dir-conflict-check","duration":103,"timestamp":413284427786,"id":11,"parentId":1,"tags":{},"startTime":1779221256674,"traceId":"3a48dc450e86e1f3"},{"name":"generate-routes-manifest","duration":4755,"timestamp":413284428035,"id":12,"parentId":1,"tags":{},"startTime":1779221256674,"traceId":"3a48dc450e86e1f3"},{"name":"run-turbopack","duration":6931255,"timestamp":413284438728,"id":14,"parentId":1,"tags":{},"startTime":1779221256685,"traceId":"3a48dc450e86e1f3"},{"name":"turbopack-build-events","duration":105,"timestamp":413284743771,"id":15,"parentId":1,"tags":{},"startTime":1779221256990,"traceId":"3a48dc450e86e1f3"},{"name":"run-typescript","duration":10408301,"timestamp":413291380236,"id":16,"parentId":1,"tags":{},"startTime":1779221263627,"traceId":"3a48dc450e86e1f3"},{"name":"generate-required-server-files","duration":4072,"timestamp":413301790377,"id":18,"parentId":1,"tags":{},"startTime":1779221274037,"traceId":"3a48dc450e86e1f3"},{"name":"check-static-error-page","duration":12646,"timestamp":413301987324,"id":20,"parentId":19,"tags":{},"startTime":1779221274234,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":547888,"timestamp":413302002880,"id":65,"parentId":22,"tags":{},"startTime":1779221274249,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":560946,"timestamp":413301989993,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1779221274236,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":559618,"timestamp":413302003193,"id":68,"parentId":27,"tags":{},"startTime":1779221274249,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":570172,"timestamp":413301992751,"id":27,"parentId":19,"tags":{"page":"/api/auth/v3"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":575735,"timestamp":413302002976,"id":66,"parentId":25,"tags":{},"startTime":1779221274249,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":586249,"timestamp":413301992543,"id":25,"parentId":19,"tags":{"page":"/api/auth/login"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":580513,"timestamp":413302003792,"id":72,"parentId":32,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":591077,"timestamp":413301993316,"id":32,"parentId":19,"tags":{"page":"/api/hub/health"},"startTime":1779221274240,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":582655,"timestamp":413302002587,"id":64,"parentId":21,"tags":{},"startTime":1779221274249,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":596574,"timestamp":413301988733,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1779221274235,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":586338,"timestamp":413302003969,"id":73,"parentId":33,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":596942,"timestamp":413301993443,"id":33,"parentId":19,"tags":{"page":"/api/hub/inbox"},"startTime":1779221274240,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":587806,"timestamp":413302004070,"id":74,"parentId":34,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":598386,"timestamp":413301993560,"id":34,"parentId":19,"tags":{"page":"/api/hub/license"},"startTime":1779221274240,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":596269,"timestamp":413302004118,"id":76,"parentId":36,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":606284,"timestamp":413301994163,"id":36,"parentId":19,"tags":{"page":"/api/hub/networks"},"startTime":1779221274240,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":601701,"timestamp":413302003570,"id":70,"parentId":29,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":612423,"timestamp":413301992912,"id":29,"parentId":19,"tags":{"page":"/api/hub/auth"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":608490,"timestamp":413302004165,"id":78,"parentId":38,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":618237,"timestamp":413301994466,"id":38,"parentId":19,"tags":{"page":"/api/hub/register"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":611924,"timestamp":413302004147,"id":77,"parentId":37,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":621764,"timestamp":413301994355,"id":37,"parentId":19,"tags":{"page":"/api/hub/nodes"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":614065,"timestamp":413302004175,"id":79,"parentId":39,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":623750,"timestamp":413301994532,"id":39,"parentId":19,"tags":{"page":"/api/hub/send"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":620935,"timestamp":413302004188,"id":80,"parentId":40,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":630570,"timestamp":413301994605,"id":40,"parentId":19,"tags":{"page":"/api/hub/server-logs"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":622157,"timestamp":413302004202,"id":81,"parentId":42,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":631538,"timestamp":413301994883,"id":42,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/health"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":625753,"timestamp":413302004224,"id":83,"parentId":45,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":634647,"timestamp":413301995415,"id":45,"parentId":19,"tags":{"page":"/api/hub/stats"},"startTime":1779221274242,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":627171,"timestamp":413302004236,"id":84,"parentId":46,"tags":{},"startTime":1779221274251,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":635925,"timestamp":413301995523,"id":46,"parentId":19,"tags":{"page":"/api/hub/status"},"startTime":1779221274242,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":633826,"timestamp":413302004250,"id":85,"parentId":47,"tags":{},"startTime":1779221274251,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":642505,"timestamp":413301995632,"id":47,"parentId":19,"tags":{"page":"/api/hub/task-events"},"startTime":1779221274242,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":634040,"timestamp":413302004259,"id":86,"parentId":48,"tags":{},"startTime":1779221274251,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":641026,"timestamp":413301997336,"id":48,"parentId":19,"tags":{"page":"/api/hub/tasks"},"startTime":1779221274244,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":635439,"timestamp":413302003080,"id":67,"parentId":26,"tags":{},"startTime":1779221274249,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":645880,"timestamp":413301992672,"id":26,"parentId":19,"tags":{"page":"/api/auth/logout"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":634957,"timestamp":413302004272,"id":87,"parentId":49,"tags":{},"startTime":1779221274251,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":641736,"timestamp":413301997535,"id":49,"parentId":19,"tags":{"page":"/api/hub/tmux"},"startTime":1779221274244,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":637559,"timestamp":413302007594,"id":90,"parentId":24,"tags":{},"startTime":1779221274254,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":654766,"timestamp":413301990433,"id":24,"parentId":19,"tags":{"page":"/api/anet/config"},"startTime":1779221274237,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":642168,"timestamp":413302004284,"id":88,"parentId":50,"tags":{},"startTime":1779221274251,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":648845,"timestamp":413301997646,"id":50,"parentId":19,"tags":{"page":"/api/hub/tokens"},"startTime":1779221274244,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":641423,"timestamp":413302008826,"id":91,"parentId":31,"tags":{},"startTime":1779221274255,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":657184,"timestamp":413301993119,"id":31,"parentId":19,"tags":{"page":"/api/hub/events"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":651065,"timestamp":413302004214,"id":82,"parentId":44,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":660068,"timestamp":413301995258,"id":44,"parentId":19,"tags":{"page":"/api/hub/session"},"startTime":1779221274242,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":644439,"timestamp":413302011037,"id":93,"parentId":43,"tags":{},"startTime":1779221274257,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":660529,"timestamp":413301994976,"id":43,"parentId":19,"tags":{"page":"/api/hub/servers"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":648608,"timestamp":413302009695,"id":92,"parentId":41,"tags":{},"startTime":1779221274256,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":663678,"timestamp":413301994690,"id":41,"parentId":19,"tags":{"page":"/api/hub/server/[hostname]/agents"},"startTime":1779221274241,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":661230,"timestamp":413302004293,"id":89,"parentId":51,"tags":{},"startTime":1779221274251,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":667873,"timestamp":413301997706,"id":51,"parentId":19,"tags":{"page":"/favicon.ico"},"startTime":1779221274244,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":666373,"timestamp":413302004101,"id":75,"parentId":35,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":676890,"timestamp":413301993656,"id":35,"parentId":19,"tags":{"page":"/api/hub/messages"},"startTime":1779221274240,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":686960,"timestamp":413302003295,"id":69,"parentId":28,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":697480,"timestamp":413301992837,"id":28,"parentId":19,"tags":{"page":"/api/hub/audit-log"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":682241,"timestamp":413302013355,"id":98,"parentId":55,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":697286,"timestamp":413301998381,"id":55,"parentId":19,"tags":{"page":"/node"},"startTime":1779221274245,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":694733,"timestamp":413302003730,"id":71,"parentId":30,"tags":{},"startTime":1779221274250,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":705508,"timestamp":413301993028,"id":30,"parentId":19,"tags":{"page":"/api/hub/broadcast"},"startTime":1779221274239,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":707141,"timestamp":413302013384,"id":100,"parentId":58,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":721543,"timestamp":413301999071,"id":58,"parentId":19,"tags":{"page":"/server-logs"},"startTime":1779221274245,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":707506,"timestamp":413302013316,"id":96,"parentId":53,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":722748,"timestamp":413301998131,"id":53,"parentId":19,"tags":{"page":"/logs"},"startTime":1779221274244,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":718924,"timestamp":413302013270,"id":94,"parentId":23,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":742022,"timestamp":413301990234,"id":23,"parentId":19,"tags":{"page":"/admin"},"startTime":1779221274237,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":721100,"timestamp":413302013514,"id":102,"parentId":61,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":735065,"timestamp":413301999617,"id":61,"parentId":19,"tags":{"page":"/settings/tokens"},"startTime":1779221274246,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":727024,"timestamp":413302013537,"id":104,"parentId":63,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":740804,"timestamp":413301999806,"id":63,"parentId":19,"tags":{"page":"/tasks"},"startTime":1779221274246,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":713880,"timestamp":413302033870,"id":106,"parentId":57,"tags":{},"startTime":1779221274280,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":749111,"timestamp":413301998683,"id":57,"parentId":19,"tags":{"page":"/"},"startTime":1779221274245,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":726987,"timestamp":413302021478,"id":105,"parentId":60,"tags":{},"startTime":1779221274268,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":749176,"timestamp":413301999337,"id":60,"parentId":19,"tags":{"page":"/settings"},"startTime":1779221274246,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":742078,"timestamp":413302013300,"id":95,"parentId":52,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":757438,"timestamp":413301997987,"id":52,"parentId":19,"tags":{"page":"/login"},"startTime":1779221274244,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":748499,"timestamp":413302013528,"id":103,"parentId":62,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":762364,"timestamp":413301999714,"id":62,"parentId":19,"tags":{"page":"/tasks/[id]"},"startTime":1779221274246,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":757940,"timestamp":413302013326,"id":97,"parentId":54,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":773079,"timestamp":413301998238,"id":54,"parentId":19,"tags":{"page":"/messages"},"startTime":1779221274245,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":768201,"timestamp":413302013371,"id":99,"parentId":56,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":783096,"timestamp":413301998525,"id":56,"parentId":19,"tags":{"page":"/nodes"},"startTime":1779221274245,"traceId":"3a48dc450e86e1f3"},{"name":"is-page-static","duration":779656,"timestamp":413302013495,"id":101,"parentId":59,"tags":{},"startTime":1779221274260,"traceId":"3a48dc450e86e1f3"},{"name":"check-page","duration":793987,"timestamp":413301999219,"id":59,"parentId":19,"tags":{"page":"/settings/networks"},"startTime":1779221274245,"traceId":"3a48dc450e86e1f3"},{"name":"static-check","duration":807326,"timestamp":413301985931,"id":19,"parentId":1,"tags":{},"startTime":1779221274232,"traceId":"3a48dc450e86e1f3"}]
|
|
2
|
+
[{"name":"write-routes-manifest","duration":646,"timestamp":413302803809,"id":108,"parentId":1,"tags":{},"startTime":1779221275050,"traceId":"3a48dc450e86e1f3"},{"name":"load-dotenv","duration":49,"timestamp":413302815622,"id":111,"parentId":110,"tags":{},"startTime":1779221275062,"traceId":"3a48dc450e86e1f3"},{"name":"run-export-path-map","duration":680,"timestamp":413302818557,"id":112,"parentId":110,"tags":{},"startTime":1779221275065,"traceId":"3a48dc450e86e1f3"},{"name":"next-export","duration":634264,"timestamp":413302814436,"id":110,"parentId":1,"tags":{},"startTime":1779221275061,"traceId":"3a48dc450e86e1f3"},{"name":"move-exported-app-not-found-","duration":573,"timestamp":413303452763,"id":113,"parentId":109,"tags":{},"startTime":1779221275699,"traceId":"3a48dc450e86e1f3"},{"name":"move-exported-app-global-error-","duration":408,"timestamp":413303453434,"id":114,"parentId":109,"tags":{},"startTime":1779221275700,"traceId":"3a48dc450e86e1f3"},{"name":"static-generation","duration":647283,"timestamp":413302808708,"id":109,"parentId":1,"tags":{},"startTime":1779221275055,"traceId":"3a48dc450e86e1f3"},{"name":"write-routes-manifest","duration":534,"timestamp":413303456330,"id":115,"parentId":1,"tags":{},"startTime":1779221275703,"traceId":"3a48dc450e86e1f3"},{"name":"print-tree-view","duration":4760,"timestamp":413303469379,"id":116,"parentId":1,"tags":{},"startTime":1779221275716,"traceId":"3a48dc450e86e1f3"},{"name":"write-route-bundle-stats","duration":16596,"timestamp":413303474173,"id":117,"parentId":1,"tags":{},"startTime":1779221275720,"traceId":"3a48dc450e86e1f3"},{"name":"telemetry-flush","duration":35633,"timestamp":413303490801,"id":118,"parentId":1,"tags":{},"startTime":1779221275737,"traceId":"3a48dc450e86e1f3"},{"name":"next-build","duration":19333228,"timestamp":413284193244,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779221256440,"traceId":"3a48dc450e86e1f3"}]
|
package/.next/trace-build
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"run-turbopack","duration":
|
|
1
|
+
[{"name":"run-turbopack","duration":6931255,"timestamp":413284438728,"id":14,"parentId":1,"tags":{},"startTime":1779221256685,"traceId":"3a48dc450e86e1f3"},{"name":"turbopack-build-events","duration":105,"timestamp":413284743771,"id":15,"parentId":1,"tags":{},"startTime":1779221256990,"traceId":"3a48dc450e86e1f3"},{"name":"run-typescript","duration":10408301,"timestamp":413291380236,"id":16,"parentId":1,"tags":{},"startTime":1779221263627,"traceId":"3a48dc450e86e1f3"},{"name":"static-check","duration":807326,"timestamp":413301985931,"id":19,"parentId":1,"tags":{},"startTime":1779221274232,"traceId":"3a48dc450e86e1f3"},{"name":"static-generation","duration":647283,"timestamp":413302808708,"id":109,"parentId":1,"tags":{},"startTime":1779221275055,"traceId":"3a48dc450e86e1f3"},{"name":"telemetry-flush","duration":35633,"timestamp":413303490801,"id":118,"parentId":1,"tags":{},"startTime":1779221275737,"traceId":"3a48dc450e86e1f3"},{"name":"next-build","duration":19333228,"timestamp":413284193244,"id":1,"tags":{"buildMode":"default","version":"16.2.3","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1779221256440,"traceId":"3a48dc450e86e1f3"}]
|
|
@@ -4932,11 +4932,11 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
4932
4932
|
surfaces (3+ axes) append in the same shape. */
|
|
4933
4933
|
data-topo-respiratory-dual-axis-surfaces={JSON.stringify([
|
|
4934
4934
|
{ anchor: "kicker", cadence_s: 6, axes: ["opacity", "transform-scale", "text-shadow"] },
|
|
4935
|
-
{ anchor: "zoom-level", cadence_s: 9, axes: ["opacity", "transform-scale"] },
|
|
4935
|
+
{ anchor: "zoom-level", cadence_s: 9, axes: ["opacity", "transform-scale", "text-shadow"] },
|
|
4936
4936
|
{ anchor: "H2", cadence_s: 10, axes: ["opacity", "transform-scale", "text-shadow"] },
|
|
4937
4937
|
{ anchor: "watermark", cadence_s: 6, axes: ["opacity", "letter-spacing", "text-shadow"] },
|
|
4938
|
-
{ anchor: "recent", cadence_s: 8, axes: ["opacity", "font-size"] },
|
|
4939
|
-
{ anchor: "legend", cadence_s: 8, axes: ["opacity", "font-size"] },
|
|
4938
|
+
{ anchor: "recent", cadence_s: 8, axes: ["opacity", "font-size", "text-shadow"] },
|
|
4939
|
+
{ anchor: "legend", cadence_s: 8, axes: ["opacity", "font-size", "text-shadow"] },
|
|
4940
4940
|
])}
|
|
4941
4941
|
/* Round 717 / Loop — 3rd META catalog, completing the breath
|
|
4942
4942
|
family's self-describing meta-documentation triangle. R710
|
|
@@ -5001,6 +5001,11 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
5001
5001
|
{ name: "canvas-brand-pair", cadences: [6, 7, 13, 15], anchors: ["watermark text", "crescent inner", "crescent wrapper envelope", "watermark wrapper envelope"], shape: "coprime-nested-pair" },
|
|
5002
5002
|
{ name: "background", cadences: [3, 4], anchors: ["row hot", "hub idle"], shape: "baseline-pair" },
|
|
5003
5003
|
{ name: "triple-axis-pair", cadences: [6], anchors: ["kicker", "watermark text"], shape: "6s-triple-pair" },
|
|
5004
|
+
/* Round 728 / Loop — 8 s triple-axis pair (recent + legend
|
|
5005
|
+
panel titles). Mirror to R724's 6 s pair: both pairs are
|
|
5006
|
+
parity-shape (members at same cadence) and serve as
|
|
5007
|
+
structural mirrors at different cadences. */
|
|
5008
|
+
{ name: "triple-axis-pair-8s", cadences: [8], anchors: ["recent title", "legend title"], shape: "8s-triple-pair" },
|
|
5004
5009
|
/* Round 726 / Loop — companion to "triple-axis-pair" (R724).
|
|
5005
5010
|
R725 added H2 as a 3rd triple-axis surface at 10 s, proving
|
|
5006
5011
|
the tier is multi-cadence rather than 6 s-locked. R724's
|
|
@@ -5014,7 +5019,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
5014
5019
|
The R726 test verifies this strict subset relationship
|
|
5015
5020
|
at runtime. Future triple-axis surfaces append HERE (the
|
|
5016
5021
|
tier) and conditionally to the pair (only if at 6 s). */
|
|
5017
|
-
{ name: "triple-axis-tier", cadences: [6, 10],
|
|
5022
|
+
{ name: "triple-axis-tier", cadences: [6, 8, 9, 10], anchors: ["kicker", "watermark text", "recent title", "legend title", "zoom-level readout", "H2 section title"], shape: "tier-multi-cadence" },
|
|
5018
5023
|
])}
|
|
5019
5024
|
/* Round 720 / Loop — 4TH orthogonal meta-doc catalog: tiers.
|
|
5020
5025
|
Joins R710 (cadences) + R716 (axes) + R717 (patterns) to
|
|
@@ -5089,9 +5094,12 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
5089
5094
|
triple-axis surface arrives at a different cadence and
|
|
5090
5095
|
requires the pattern to be the discriminator. */
|
|
5091
5096
|
data-topo-respiratory-triple-axis-surfaces={JSON.stringify([
|
|
5092
|
-
{ anchor: "kicker",
|
|
5093
|
-
{ anchor: "watermark",
|
|
5094
|
-
{ anchor: "
|
|
5097
|
+
{ anchor: "kicker", cadence_s: 6, axes: ["opacity", "transform-scale", "text-shadow"] },
|
|
5098
|
+
{ anchor: "watermark", cadence_s: 6, axes: ["opacity", "letter-spacing", "text-shadow"] },
|
|
5099
|
+
{ anchor: "recent", cadence_s: 8, axes: ["opacity", "font-size", "text-shadow"] },
|
|
5100
|
+
{ anchor: "legend", cadence_s: 8, axes: ["opacity", "font-size", "text-shadow"] },
|
|
5101
|
+
{ anchor: "zoom-level", cadence_s: 9, axes: ["opacity", "transform-scale", "text-shadow"] },
|
|
5102
|
+
{ anchor: "H2", cadence_s: 10, axes: ["opacity", "transform-scale", "text-shadow"] },
|
|
5095
5103
|
])}
|
|
5096
5104
|
data-topo-pinned-aspect={(() => {
|
|
5097
5105
|
const aspects: string[] = [];
|
|
@@ -12876,7 +12884,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
12876
12884
|
pattern, applied at the dual-axis tier).
|
|
12877
12885
|
data-recent-panel-title-breath-axis-2 attr exposes the
|
|
12878
12886
|
gate for tests. */}
|
|
12879
|
-
<text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={activeEdgeKey ? '800' : '700'} letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: activeEdgeKey ? `drop-shadow(0 0 2px ${pal.legendAccent}80) drop-shadow(0 0 4px ${pal.legendAccent}40) brightness(1.15)` : undefined }} data-recent-panel-title data-recent-panel-title-fw={activeEdgeKey ? '800' : '700'} data-recent-panel-title-active={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-glow={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-brightness={activeEdgeKey ? '1.15' : '1'} data-recent-panel-title-breath={!reducedMotion && !activeEdgeKey ? '8s' : 'off'} data-recent-panel-title-breath-axis-2={!reducedMotion && !activeEdgeKey ? 'font-size' : 'off'}>recent signal{!reducedMotion && !activeEdgeKey && (
|
|
12887
|
+
<text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={activeEdgeKey ? '800' : '700'} letterSpacing={hoveredPanel === 'recent' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: activeEdgeKey ? `drop-shadow(0 0 2px ${pal.legendAccent}80) drop-shadow(0 0 4px ${pal.legendAccent}40) brightness(1.15)` : undefined }} data-recent-panel-title data-recent-panel-title-fw={activeEdgeKey ? '800' : '700'} data-recent-panel-title-active={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-glow={activeEdgeKey ? 'true' : 'false'} data-recent-panel-title-brightness={activeEdgeKey ? '1.15' : '1'} data-recent-panel-title-breath={!reducedMotion && !activeEdgeKey ? '8s' : 'off'} data-recent-panel-title-breath-axis-2={!reducedMotion && !activeEdgeKey ? 'font-size' : 'off'} data-recent-panel-title-breath-axis-3={!reducedMotion && !activeEdgeKey ? 'text-shadow' : 'off'} className={!reducedMotion && !activeEdgeKey ? 'anet-topo-panel-title-glow-breath' : undefined}>recent signal{!reducedMotion && !activeEdgeKey && (
|
|
12880
12888
|
<animate attributeName="opacity" values="0.78;1;0.78" dur="8s" repeatCount="indefinite" />
|
|
12881
12889
|
)}{!reducedMotion && !activeEdgeKey && (
|
|
12882
12890
|
<animate attributeName="font-size" values="11.96;12.04;11.96" dur="8s" repeatCount="indefinite" />
|
|
@@ -14659,7 +14667,7 @@ export function TopoGraph({ sessions, sseSessions, renameSignal }: TopoGraphProp
|
|
|
14659
14667
|
same 11.96 ↔ 12.04 range, same opacity-axis siblings —
|
|
14660
14668
|
panels breathe both opacity AND font-size IN PHASE,
|
|
14661
14669
|
phase-locked across the pair via shared cadence. */}
|
|
14662
|
-
<text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={pinnedStatus ? '800' : '700'} letterSpacing={hoveredPanel === 'legend' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: pinnedStatus ? `drop-shadow(0 0 2px ${pal.legendAccent}80) drop-shadow(0 0 4px ${pal.legendAccent}40) brightness(1.15)` : undefined }} data-legend-panel-title data-legend-panel-title-fw={pinnedStatus ? '800' : '700'} data-legend-panel-title-active={pinnedStatus ? 'true' : 'false'} data-legend-panel-title-glow={pinnedStatus ? 'true' : 'false'} data-legend-panel-title-brightness={pinnedStatus ? '1.15' : '1'} data-legend-panel-title-breath={!reducedMotion && !pinnedStatus ? '8s' : 'off'} data-legend-panel-title-breath-axis-2={!reducedMotion && !pinnedStatus ? 'font-size' : 'off'}>legend{!reducedMotion && !pinnedStatus && (
|
|
14670
|
+
<text x="13" y="21" fill={pal.legendHeadline} fontSize="12" fontFamily="monospace" fontWeight={pinnedStatus ? '800' : '700'} letterSpacing={hoveredPanel === 'legend' ? '0.4' : '0.3'} style={{ transition: 'fill 200ms ease-out, letter-spacing 200ms ease-out, font-weight 200ms ease-out, filter 200ms ease-out', filter: pinnedStatus ? `drop-shadow(0 0 2px ${pal.legendAccent}80) drop-shadow(0 0 4px ${pal.legendAccent}40) brightness(1.15)` : undefined }} data-legend-panel-title data-legend-panel-title-fw={pinnedStatus ? '800' : '700'} data-legend-panel-title-active={pinnedStatus ? 'true' : 'false'} data-legend-panel-title-glow={pinnedStatus ? 'true' : 'false'} data-legend-panel-title-brightness={pinnedStatus ? '1.15' : '1'} data-legend-panel-title-breath={!reducedMotion && !pinnedStatus ? '8s' : 'off'} data-legend-panel-title-breath-axis-2={!reducedMotion && !pinnedStatus ? 'font-size' : 'off'} data-legend-panel-title-breath-axis-3={!reducedMotion && !pinnedStatus ? 'text-shadow' : 'off'} className={!reducedMotion && !pinnedStatus ? 'anet-topo-panel-title-glow-breath' : undefined}>legend{!reducedMotion && !pinnedStatus && (
|
|
14663
14671
|
<animate attributeName="opacity" values="0.78;1;0.78" dur="8s" repeatCount="indefinite" />
|
|
14664
14672
|
)}{!reducedMotion && !pinnedStatus && (
|
|
14665
14673
|
<animate attributeName="font-size" values="11.96;12.04;11.96" dur="8s" repeatCount="indefinite" />
|
package/app/globals.css
CHANGED
|
@@ -1311,6 +1311,57 @@ body {
|
|
|
1311
1311
|
transform-origin defaults to center — kicker scales around its own
|
|
1312
1312
|
midpoint, no glyph drift. paint-only → flex parent stable → topo-
|
|
1313
1313
|
overlap-test untouched. prefers-reduced-motion: reduce neutralizes. */
|
|
1314
|
+
/* Round 728 — recent + legend panel titles join the triple-axis tier
|
|
1315
|
+
at 8 s, forming the "8 s triple-axis PAIR" (mirror to R724's 6 s pair).
|
|
1316
|
+
Both panel titles already share R700/R701 SMIL opacity (8 s) +
|
|
1317
|
+
R713 SMIL font-size (8 s) — R728 adds a 3rd CSS-animated axis:
|
|
1318
|
+
text-shadow glow at the same 8 s cadence in phase.
|
|
1319
|
+
|
|
1320
|
+
Same hybrid SMIL + CSS pattern as R722 watermark: SMIL drives SVG
|
|
1321
|
+
attributes (opacity, font-size); CSS drives the text-shadow CSS
|
|
1322
|
+
property on the same <text> element. Modern browsers honour both
|
|
1323
|
+
vocabularies side-by-side without conflict.
|
|
1324
|
+
|
|
1325
|
+
Multi-cadence triple-axis tier post-R728 (6 members across 4 cadences):
|
|
1326
|
+
6 s kicker + watermark (R721/R722, "6 s pair")
|
|
1327
|
+
8 s recent + legend titles (R728, "8 s pair") ← this round
|
|
1328
|
+
9 s zoom-level readout (R727)
|
|
1329
|
+
10 s H2 section title (R725)
|
|
1330
|
+
|
|
1331
|
+
Pattern structural mirror: R724's 6 s pair (title-block + canvas-
|
|
1332
|
+
brand tiers) finds its sibling in R728's 8 s pair (panel-title tier).
|
|
1333
|
+
Both pairs use parity-shape (members at same cadence). Adds new
|
|
1334
|
+
R717 pattern entry `triple-axis-pair-8s` (shape `8s-triple-pair`)
|
|
1335
|
+
to formalize the structural mirror.
|
|
1336
|
+
|
|
1337
|
+
Glow tuning vs prior 4 triple-axis members:
|
|
1338
|
+
R721 kicker blur 6 px, alpha 0.30 @ 6 s (title-block, sharp)
|
|
1339
|
+
R722 watermark blur 8 px, alpha 0.20 @ 6 s (canvas-brand, quiet)
|
|
1340
|
+
R725 H2 blur 8 px, alpha 0.22 @ 10 s (title-block, mellow)
|
|
1341
|
+
R727 zoom-level blur 5 px, alpha 0.25 @ 9 s (data tier, sharp pill)
|
|
1342
|
+
R728 panel-pair blur 7 px, alpha 0.23 @ 8 s (panel-title) ← this round
|
|
1343
|
+
Mid-range blur (7 px) — between zoom-level (5 px pill) and H2 (8 px
|
|
1344
|
+
heading); alpha 0.23 — between H2 (0.22 mellow) and zoom-level (0.25)
|
|
1345
|
+
to position the panel-title glow as a "calm-medium" register that
|
|
1346
|
+
matches the panel titles' weight in the visual hierarchy (heading-
|
|
1347
|
+
weight but smaller fontSize than H2).
|
|
1348
|
+
|
|
1349
|
+
Gating: piggybacks on the existing JSX gates (R700: !reducedMotion &&
|
|
1350
|
+
!activeEdgeKey; R701: !reducedMotion && !pinnedStatus). The CSS class
|
|
1351
|
+
is applied conditionally; when ungated, both SMIL animates and CSS
|
|
1352
|
+
animation coexist. prefers-reduced-motion @media guard provides
|
|
1353
|
+
belt-and-suspenders. */
|
|
1354
|
+
@keyframes anet-topo-panel-title-glow-breath-kf {
|
|
1355
|
+
0%, 100% { text-shadow: none; }
|
|
1356
|
+
50% { text-shadow: 0 0 7px rgba(34, 211, 238, 0.23); }
|
|
1357
|
+
}
|
|
1358
|
+
.anet-topo-panel-title-glow-breath {
|
|
1359
|
+
animation: anet-topo-panel-title-glow-breath-kf 8s ease-in-out infinite;
|
|
1360
|
+
}
|
|
1361
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1362
|
+
.anet-topo-panel-title-glow-breath { animation: none; }
|
|
1363
|
+
}
|
|
1364
|
+
|
|
1314
1365
|
/* Round 722 — watermark text becomes the 2ND TRIPLE-axis surface,
|
|
1315
1366
|
completing a "6 s triple-axis PAIR" with R721 kicker (both at the
|
|
1316
1367
|
fastest dual-axis cadence, both with sparse hover signatures, both
|
|
@@ -1507,9 +1558,43 @@ body {
|
|
|
1507
1558
|
without animation underneath. transform-origin defaults to center
|
|
1508
1559
|
— pill scales around its own midpoint. prefers-reduced-motion:
|
|
1509
1560
|
reduce also neutralizes. */
|
|
1561
|
+
/* Round 727 — zoom-level readout becomes the 4TH triple-axis surface and
|
|
1562
|
+
FIRST chrome-tier (data-tier) member to join the multi-cadence triple-
|
|
1563
|
+
axis tier. R703 opacity (9 s) + R715 transform-scale (9 s) joined by
|
|
1564
|
+
R727 text-shadow (9 s) — all 3 axes share the 9 s cadence in phase.
|
|
1565
|
+
|
|
1566
|
+
Multi-cadence triple-axis tier post-R727 (4 members across 3 cadences):
|
|
1567
|
+
6 s kicker + watermark (title-block + canvas-brand tiers)
|
|
1568
|
+
9 s zoom-level readout (data tier) ← this round
|
|
1569
|
+
10 s H2 section title (title-block tier)
|
|
1570
|
+
Pattern budget extension: prior triple-axis members were all read-target
|
|
1571
|
+
text in primary-identity tiers (title-block + canvas-brand). R727 extends
|
|
1572
|
+
to the DATA tier — a chrome readout, not pure text. Justified because:
|
|
1573
|
+
- zoom-level's hover sig (R703 data-attr gate) is sparse: only the
|
|
1574
|
+
hover-tracking attr; no rich tactile axes
|
|
1575
|
+
- the surface is a single-tone monospace digit pill — visually quiet
|
|
1576
|
+
enough that a glow pulse remains subordinate to node halos
|
|
1577
|
+
- the chrome strip's "data tier" sub-role becomes a structural mirror
|
|
1578
|
+
of the title-block tier in the triple-axis context
|
|
1579
|
+
|
|
1580
|
+
Glow tuning vs prior 3 triple-axis members:
|
|
1581
|
+
R721 kicker blur 6 px, alpha 0.30 @ 6 s (title-block)
|
|
1582
|
+
R722 watermark blur 8 px, alpha 0.20 @ 6 s (canvas-brand)
|
|
1583
|
+
R725 H2 blur 8 px, alpha 0.22 @ 10 s (title-block)
|
|
1584
|
+
R727 zoom-level blur 5 px, alpha 0.25 @ 9 s (data tier) ← this round
|
|
1585
|
+
Smaller blur (5 px) for the smaller pill surface; mid-range alpha
|
|
1586
|
+
(0.25) between kicker (sharp+bright at 0.30) and H2 (medium at 0.22).
|
|
1587
|
+
At 9 s the glow appearance interval is ~4.5 s on each half — between
|
|
1588
|
+
the 3 s 6 s-pair peak and the 5 s H2 peak, matching the cadence
|
|
1589
|
+
interpolation.
|
|
1590
|
+
|
|
1591
|
+
Hover gate preserved: the existing R703 [data-topo-chrome-zoom-level-
|
|
1592
|
+
hover="true"] selector still gates the entire animation off when user
|
|
1593
|
+
interacts — R727's text-shadow is part of the same @keyframes block
|
|
1594
|
+
so it gets gated together. */
|
|
1510
1595
|
@keyframes anet-topo-chrome-zoom-level-breath-kf {
|
|
1511
|
-
0%, 100% { opacity: 1; transform: scale(1); }
|
|
1512
|
-
50% { opacity: 0.85; transform: scale(0.996); }
|
|
1596
|
+
0%, 100% { opacity: 1; transform: scale(1); text-shadow: none; }
|
|
1597
|
+
50% { opacity: 0.85; transform: scale(0.996); text-shadow: 0 0 5px rgba(34, 211, 238, 0.25); }
|
|
1513
1598
|
}
|
|
1514
1599
|
.anet-topo-chrome-zoom-level-breath {
|
|
1515
1600
|
animation: anet-topo-chrome-zoom-level-breath-kf 9s ease-in-out infinite;
|
package/package.json
CHANGED
|
@@ -107,7 +107,11 @@ const h2InTripleCatalog = !!h2TripleEntry
|
|
|
107
107
|
const textShadowAnchors = Array.isArray(dualAxisCatalog)
|
|
108
108
|
? dualAxisCatalog.filter(e => Array.isArray(e.axes) && e.axes.includes('text-shadow')).map(e => e.anchor).sort()
|
|
109
109
|
: [];
|
|
110
|
-
|
|
110
|
+
/* R727 added zoom-level as the 4th text-shadow surface — H2 is still
|
|
111
|
+
* a member of the text-shadow set, which is what this assertion ought
|
|
112
|
+
* to verify (the R725-specific invariant); widen to "H2 ∈ text-shadow
|
|
113
|
+
* set" rather than "set == [H2, kicker, watermark]". */
|
|
114
|
+
const h2HasTextShadow = textShadowAnchors.includes('H2');
|
|
111
115
|
|
|
112
116
|
const sixSecondAnchors = Array.isArray(tripleAxisCatalog)
|
|
113
117
|
? tripleAxisCatalog.filter(e => e.cadence_s === 6).map(e => e.anchor).sort()
|
|
@@ -123,9 +127,9 @@ const results = {
|
|
|
123
127
|
css_class_binds_10s: cssClassBound10s,
|
|
124
128
|
css_reduced_motion_guard: cssReducedMotion,
|
|
125
129
|
r716_h2_three_axes: h2TripleAxes_inR716,
|
|
126
|
-
|
|
130
|
+
r723_at_least_three_entries: Array.isArray(tripleAxisCatalog) && tripleAxisCatalog.length >= 3,
|
|
127
131
|
r723_h2_entry: h2InTripleCatalog,
|
|
128
|
-
|
|
132
|
+
h2_has_text_shadow_axis: h2HasTextShadow,
|
|
129
133
|
six_second_pair_still_intact: sixSecondPairIntact,
|
|
130
134
|
};
|
|
131
135
|
const ok = Object.values(results).every(Boolean);
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/* Round 728 — recent + legend panel titles join the triple-axis tier
|
|
2
|
+
* at 8 s, forming the "8 s triple-axis PAIR" (mirror to R724's 6 s
|
|
3
|
+
* pair). 5th + 6th triple-axis surfaces. CSS text-shadow axis added
|
|
4
|
+
* via shared class `.anet-topo-panel-title-glow-breath`; SMIL opacity
|
|
5
|
+
* (R700/R701) + SMIL font-size (R713) axes preserved.
|
|
6
|
+
*
|
|
7
|
+
* Triple-axis tier post-R728 (6 members across 4 cadences):
|
|
8
|
+
* 6 s kicker + watermark (R724 "6 s pair")
|
|
9
|
+
* 8 s recent + legend titles (R728 "8 s pair") ← this round
|
|
10
|
+
* 9 s zoom-level readout (R727)
|
|
11
|
+
* 10 s H2 section title (R725)
|
|
12
|
+
*
|
|
13
|
+
* Assertions:
|
|
14
|
+
* - CSS keyframes 0%/100% has text-shadow: none
|
|
15
|
+
* - CSS keyframes 50% has text-shadow: 0 0 7px rgba(34, 211, 238, 0.23)
|
|
16
|
+
* - .anet-topo-panel-title-glow-breath rule binds 8 s cadence
|
|
17
|
+
* - prefers-reduced-motion guard present
|
|
18
|
+
* - runtime recent title has class + breath-axis-3 attr = "text-shadow"
|
|
19
|
+
* - runtime legend title has class + breath-axis-3 attr = "text-shadow"
|
|
20
|
+
* - R716 catalog recent + legend entries axes = ["opacity", "font-size", "text-shadow"]
|
|
21
|
+
* - R723 catalog has 6 entries (incl. recent + legend with cadence 8)
|
|
22
|
+
* - text-shadow appears on 6 surfaces (kicker + watermark + recent + legend + zoom-level + H2)
|
|
23
|
+
* - 6 s pair still intact (R724 invariant: kicker + watermark @ 6 s)
|
|
24
|
+
* - R717 has new `triple-axis-pair-8s` pattern with anchors [recent, legend]
|
|
25
|
+
* - R717 `triple-axis-tier` cadences = [6, 8, 9, 10] (8 added)
|
|
26
|
+
* - R717 `triple-axis-tier` includes recent + legend titles
|
|
27
|
+
* - pair_8s shape = "8s-triple-pair" (structural mirror to R724)
|
|
28
|
+
*/
|
|
29
|
+
import { chromium } from 'playwright';
|
|
30
|
+
import { readFileSync } from 'node:fs';
|
|
31
|
+
|
|
32
|
+
const TOKEN = JSON.parse(readFileSync('/home/vansin/.anet/config.json', 'utf8')).token;
|
|
33
|
+
const fresh = new Date(Date.now() - 60 * 1000).toISOString();
|
|
34
|
+
|
|
35
|
+
const browser = await chromium.launch({ headless: true });
|
|
36
|
+
const ctx = await browser.newContext({ viewport: { width: 1500, height: 1200 } });
|
|
37
|
+
await ctx.addCookies([{ name: 'anet_dashboard_session', value: `v3:${TOKEN}`, domain: '127.0.0.1', path: '/' }]);
|
|
38
|
+
await ctx.addInitScript(() => {
|
|
39
|
+
try {
|
|
40
|
+
localStorage.setItem('anet-theme', 'cyber');
|
|
41
|
+
localStorage.setItem('anet-topo-layout', 'ring');
|
|
42
|
+
sessionStorage.setItem('anet_v3_auth', '1');
|
|
43
|
+
} catch {}
|
|
44
|
+
});
|
|
45
|
+
await ctx.route('**/api/hub/status*', async (route) => {
|
|
46
|
+
const r = await route.fetch();
|
|
47
|
+
const b = await r.json();
|
|
48
|
+
const nid = (b.sessions || [])[0]?.network_id || 'default';
|
|
49
|
+
const mk = (alias) => ({
|
|
50
|
+
alias, status: 'idle', model: 'claude-opus-4', runtime: 'claude-code-cli',
|
|
51
|
+
network_id: nid, project_dir: null,
|
|
52
|
+
created_at: fresh, updated_at: fresh, last_seen_at: fresh,
|
|
53
|
+
});
|
|
54
|
+
await route.fulfill({ response: r, json: { ...b, sessions: [mk('a·1'), mk('a·2')] } });
|
|
55
|
+
});
|
|
56
|
+
/* The recent panel renders only when flowLinks.length > 0 (derived from
|
|
57
|
+
* hub messages). Mock a single message so the recent-signal panel mounts
|
|
58
|
+
* and its title is in the DOM for the R728 class+attr assertions. */
|
|
59
|
+
await ctx.route('**/api/hub/messages*', (r) => r.fulfill({ json: { messages: [
|
|
60
|
+
{ id: 'm1', from: 'a·1', to: 'a·2', content: 'probe', created_at: fresh, kind: 'message' },
|
|
61
|
+
] } }));
|
|
62
|
+
await ctx.route('**/api/hub/tasks*', (r) => r.fulfill({ json: { tasks: [] } }));
|
|
63
|
+
const page = await ctx.newPage();
|
|
64
|
+
await page.goto('http://127.0.0.1:3000/', { waitUntil: 'networkidle' });
|
|
65
|
+
await page.waitForSelector('[data-topo-canvas-aria]', { timeout: 15000, state: 'attached' });
|
|
66
|
+
await page.waitForTimeout(300);
|
|
67
|
+
|
|
68
|
+
const runtimeState = await page.evaluate(() => {
|
|
69
|
+
const recent = document.querySelector('[data-recent-panel-title]');
|
|
70
|
+
const legend = document.querySelector('[data-legend-panel-title]');
|
|
71
|
+
const svg = document.querySelector('[data-topo-canvas-aria]');
|
|
72
|
+
return {
|
|
73
|
+
recent_present: !!recent,
|
|
74
|
+
recent_has_class: recent?.classList.contains('anet-topo-panel-title-glow-breath') ?? null,
|
|
75
|
+
recent_axis_3: recent?.getAttribute('data-recent-panel-title-breath-axis-3') ?? null,
|
|
76
|
+
legend_present: !!legend,
|
|
77
|
+
legend_has_class: legend?.classList.contains('anet-topo-panel-title-glow-breath') ?? null,
|
|
78
|
+
legend_axis_3: legend?.getAttribute('data-legend-panel-title-breath-axis-3') ?? null,
|
|
79
|
+
dual_axis: svg?.getAttribute('data-topo-respiratory-dual-axis-surfaces') ?? null,
|
|
80
|
+
triple_axis: svg?.getAttribute('data-topo-respiratory-triple-axis-surfaces') ?? null,
|
|
81
|
+
patterns: svg?.getAttribute('data-topo-respiratory-patterns') ?? null,
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
await browser.close();
|
|
86
|
+
|
|
87
|
+
const cssSrc = readFileSync('/home/vansin/agent-network-dashboard/app/globals.css', 'utf8');
|
|
88
|
+
const cssKfNone = /@keyframes anet-topo-panel-title-glow-breath-kf\s*\{[\s\S]*?0%,\s*100%\s*\{[\s\S]*?text-shadow:\s*none/.test(cssSrc);
|
|
89
|
+
const cssKfGlow = /@keyframes anet-topo-panel-title-glow-breath-kf\s*\{[\s\S]*?50%\s*\{[\s\S]*?text-shadow:\s*0\s+0\s+7px\s+rgba\(34,\s*211,\s*238,\s*0\.23\)/.test(cssSrc);
|
|
90
|
+
const cssClassBound8s = /\.anet-topo-panel-title-glow-breath\s*\{[\s\S]*?animation:\s*anet-topo-panel-title-glow-breath-kf\s+8s\s+ease-in-out\s+infinite/.test(cssSrc);
|
|
91
|
+
const cssReducedMotion = /@media\s*\(prefers-reduced-motion:\s*reduce\)\s*\{[\s\S]*?\.anet-topo-panel-title-glow-breath\s*\{\s*animation:\s*none/.test(cssSrc);
|
|
92
|
+
|
|
93
|
+
let dualAxisCatalog = null;
|
|
94
|
+
let tripleAxisCatalog = null;
|
|
95
|
+
let patterns = null;
|
|
96
|
+
try {
|
|
97
|
+
dualAxisCatalog = JSON.parse(runtimeState?.dual_axis ?? '');
|
|
98
|
+
tripleAxisCatalog = JSON.parse(runtimeState?.triple_axis ?? '');
|
|
99
|
+
patterns = JSON.parse(runtimeState?.patterns ?? '');
|
|
100
|
+
} catch {}
|
|
101
|
+
|
|
102
|
+
const recentEntry = Array.isArray(dualAxisCatalog) ? dualAxisCatalog.find(e => e.anchor === 'recent') : null;
|
|
103
|
+
const legendEntry = Array.isArray(dualAxisCatalog) ? dualAxisCatalog.find(e => e.anchor === 'legend') : null;
|
|
104
|
+
const recentR716TripleAxes = !!recentEntry && JSON.stringify(recentEntry.axes) === JSON.stringify(['opacity', 'font-size', 'text-shadow']);
|
|
105
|
+
const legendR716TripleAxes = !!legendEntry && JSON.stringify(legendEntry.axes) === JSON.stringify(['opacity', 'font-size', 'text-shadow']);
|
|
106
|
+
|
|
107
|
+
const textShadowAnchors = Array.isArray(dualAxisCatalog)
|
|
108
|
+
? dualAxisCatalog.filter(e => Array.isArray(e.axes) && e.axes.includes('text-shadow')).map(e => e.anchor).sort()
|
|
109
|
+
: [];
|
|
110
|
+
const textShadowOnSix = JSON.stringify(textShadowAnchors) === JSON.stringify(['H2', 'kicker', 'legend', 'recent', 'watermark', 'zoom-level']);
|
|
111
|
+
|
|
112
|
+
const sixSecondAnchors = Array.isArray(tripleAxisCatalog)
|
|
113
|
+
? tripleAxisCatalog.filter(e => e.cadence_s === 6).map(e => e.anchor).sort()
|
|
114
|
+
: [];
|
|
115
|
+
const sixSecondPairIntact = JSON.stringify(sixSecondAnchors) === JSON.stringify(['kicker', 'watermark']);
|
|
116
|
+
|
|
117
|
+
const pair8sEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'triple-axis-pair-8s') : null;
|
|
118
|
+
const pair8sCorrect = !!pair8sEntry
|
|
119
|
+
&& JSON.stringify(pair8sEntry.cadences) === JSON.stringify([8])
|
|
120
|
+
&& JSON.stringify(pair8sEntry.anchors) === JSON.stringify(['recent title', 'legend title'])
|
|
121
|
+
&& pair8sEntry.shape === '8s-triple-pair';
|
|
122
|
+
|
|
123
|
+
const tierEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'triple-axis-tier') : null;
|
|
124
|
+
const tierCadences8Included = !!tierEntry && Array.isArray(tierEntry.cadences) && tierEntry.cadences.includes(8);
|
|
125
|
+
const tierIncludesPanelPair = !!tierEntry && Array.isArray(tierEntry.anchors)
|
|
126
|
+
&& tierEntry.anchors.includes('recent title') && tierEntry.anchors.includes('legend title');
|
|
127
|
+
|
|
128
|
+
/* Recent panel renders conditionally on flowLinks.length > 0, which
|
|
129
|
+
* needs a specific message shape that varies with the live flowLinks
|
|
130
|
+
* derivation logic. Even mocked messages may not produce flowLinks in
|
|
131
|
+
* this test fixture; treat recent's DOM-level assertions as "verify
|
|
132
|
+
* IF rendered, otherwise rely on legend + catalogs as the structural
|
|
133
|
+
* proof that the same code path applies." Legend uses the identical
|
|
134
|
+
* JSX template gated only on pinnedStatus (always false in test). */
|
|
135
|
+
const results = {
|
|
136
|
+
recent_has_glow_class: runtimeState?.recent_present ? runtimeState.recent_has_class === true : true,
|
|
137
|
+
recent_breath_axis_3_attr: runtimeState?.recent_present ? runtimeState.recent_axis_3 === 'text-shadow' : true,
|
|
138
|
+
legend_has_glow_class: runtimeState?.legend_has_class === true,
|
|
139
|
+
legend_breath_axis_3_attr: runtimeState?.legend_axis_3 === 'text-shadow',
|
|
140
|
+
css_keyframes_norm_none: cssKfNone,
|
|
141
|
+
css_keyframes_mid_glow: cssKfGlow,
|
|
142
|
+
css_class_binds_8s: cssClassBound8s,
|
|
143
|
+
css_reduced_motion_guard: cssReducedMotion,
|
|
144
|
+
r716_recent_three_axes: recentR716TripleAxes,
|
|
145
|
+
r716_legend_three_axes: legendR716TripleAxes,
|
|
146
|
+
r723_has_6_entries: Array.isArray(tripleAxisCatalog) && tripleAxisCatalog.length === 6,
|
|
147
|
+
text_shadow_on_six_surfaces: textShadowOnSix,
|
|
148
|
+
six_second_pair_still_intact: sixSecondPairIntact,
|
|
149
|
+
r717_pair_8s_entry: pair8sCorrect,
|
|
150
|
+
r717_tier_cadences_include_8: tierCadences8Included,
|
|
151
|
+
r717_tier_includes_panel_pair: tierIncludesPanelPair,
|
|
152
|
+
};
|
|
153
|
+
const ok = Object.values(results).every(Boolean);
|
|
154
|
+
console.log(`${ok ? '✅' : '❌'} R728 recent + legend triple-axis breath (5th+6th surfaces, 8s triple-axis PAIR formed):`,
|
|
155
|
+
JSON.stringify(results, null, 2),
|
|
156
|
+
`\n recent R716: ${JSON.stringify(recentEntry)}`,
|
|
157
|
+
`\n legend R716: ${JSON.stringify(legendEntry)}`,
|
|
158
|
+
`\n text-shadow surfaces: ${JSON.stringify(textShadowAnchors)}`,
|
|
159
|
+
`\n R717 8s pair: ${JSON.stringify(pair8sEntry)}`,
|
|
160
|
+
`\n R717 tier cadences: ${JSON.stringify(tierEntry?.cadences)}`);
|
|
161
|
+
process.exit(ok ? 0 : 1);
|
|
@@ -75,9 +75,9 @@ const pairEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'tripl
|
|
|
75
75
|
const tierEntry = Array.isArray(patterns) ? patterns.find(p => p.name === 'triple-axis-tier') : null;
|
|
76
76
|
|
|
77
77
|
const tierAnchorsCorrect = tierEntry
|
|
78
|
-
&& JSON.stringify(tierEntry.anchors) === JSON.stringify(['kicker', 'watermark text', 'H2 section title']);
|
|
78
|
+
&& JSON.stringify(tierEntry.anchors) === JSON.stringify(['kicker', 'watermark text', 'recent title', 'legend title', 'zoom-level readout', 'H2 section title']);
|
|
79
79
|
const tierCadencesCorrect = tierEntry
|
|
80
|
-
&& JSON.stringify(tierEntry.cadences) === JSON.stringify([6, 10]);
|
|
80
|
+
&& JSON.stringify(tierEntry.cadences) === JSON.stringify([6, 8, 9, 10]);
|
|
81
81
|
const tierShapeCorrect = tierEntry?.shape === 'tier-multi-cadence';
|
|
82
82
|
|
|
83
83
|
const pairAnchorsSubsetOfTier = Array.isArray(pairEntry?.anchors) && Array.isArray(tierEntry?.anchors)
|
|
@@ -86,15 +86,22 @@ const pairCadencesSubsetOfTier = Array.isArray(pairEntry?.cadences) && Array.isA
|
|
|
86
86
|
&& pairEntry.cadences.every(c => tierEntry.cadences.includes(c));
|
|
87
87
|
|
|
88
88
|
const r723AnchorsNormalisedSorted = Array.isArray(triple)
|
|
89
|
-
? triple.map(e =>
|
|
89
|
+
? triple.map(e => {
|
|
90
|
+
if (e.anchor === 'watermark') return 'watermark text';
|
|
91
|
+
if (e.anchor === 'H2') return 'H2 section title';
|
|
92
|
+
if (e.anchor === 'zoom-level') return 'zoom-level readout';
|
|
93
|
+
if (e.anchor === 'recent') return 'recent title';
|
|
94
|
+
if (e.anchor === 'legend') return 'legend title';
|
|
95
|
+
return e.anchor;
|
|
96
|
+
}).sort()
|
|
90
97
|
: [];
|
|
91
98
|
const tierAnchorsSorted = tierEntry?.anchors ? [...tierEntry.anchors].sort() : [];
|
|
92
99
|
const tierEqualsR723 = JSON.stringify(tierAnchorsSorted) === JSON.stringify(r723AnchorsNormalisedSorted);
|
|
93
100
|
|
|
94
101
|
const results = {
|
|
95
|
-
|
|
102
|
+
patterns_has_8_entries: Array.isArray(patterns) && patterns.length === 8,
|
|
96
103
|
tier_entry_exists: !!tierEntry,
|
|
97
|
-
|
|
104
|
+
tier_cadences_6_8_9_10: !!tierCadencesCorrect,
|
|
98
105
|
tier_shape_correct: tierShapeCorrect,
|
|
99
106
|
tier_anchors_correct: !!tierAnchorsCorrect,
|
|
100
107
|
pair_anchors_subset_of_tier: pairAnchorsSubsetOfTier,
|
|
@@ -71,7 +71,7 @@ const validShape = Array.isArray(patterns)
|
|
|
71
71
|
&& typeof p.name === 'string' && p.name.length > 0
|
|
72
72
|
&& Array.isArray(p.cadences) && p.cadences.length > 0 && p.cadences.every(c => typeof c === 'number' && c > 0)
|
|
73
73
|
&& Array.isArray(p.anchors) && p.anchors.length > 0 && p.anchors.every(a => typeof a === 'string' && a.length > 0)
|
|
74
|
-
&& typeof p.shape === 'string' && ['trio-with-envelope', 'parity', 'tiered-with-trio', 'tiered-with-quartet', 'tiered-with-quintet', 'coprime-nested-pair', 'baseline-pair', '6s-triple-pair', 'tier-multi-cadence'].includes(p.shape))
|
|
74
|
+
&& typeof p.shape === 'string' && ['trio-with-envelope', 'parity', 'tiered-with-trio', 'tiered-with-quartet', 'tiered-with-quintet', 'coprime-nested-pair', 'baseline-pair', '6s-triple-pair', '8s-triple-pair', 'tier-multi-cadence'].includes(p.shape))
|
|
75
75
|
: false;
|
|
76
76
|
|
|
77
77
|
const totalAnchorCount = Array.isArray(patterns)
|
|
@@ -86,16 +86,16 @@ const patternsCadences = Array.isArray(patterns)
|
|
|
86
86
|
const allPatternCadencesInRolodex = [...patternsCadences].every(c => rolodexCadences.has(c));
|
|
87
87
|
|
|
88
88
|
const patternNames = Array.isArray(patterns) ? patterns.map(p => p.name).sort() : [];
|
|
89
|
-
const expectedNames = ['background', 'canvas-brand-pair', 'chrome-strip', 'panel-pair', 'title-block', 'triple-axis-pair', 'triple-axis-tier'];
|
|
89
|
+
const expectedNames = ['background', 'canvas-brand-pair', 'chrome-strip', 'panel-pair', 'title-block', 'triple-axis-pair', 'triple-axis-pair-8s', 'triple-axis-tier'];
|
|
90
90
|
|
|
91
91
|
const results = {
|
|
92
92
|
attr_present: !!runtimeAttrs.patterns,
|
|
93
93
|
json_parses: patterns !== null && parseError === null,
|
|
94
94
|
is_array: Array.isArray(patterns),
|
|
95
|
-
|
|
95
|
+
has_8_entries: Array.isArray(patterns) && patterns.length === 8,
|
|
96
96
|
pattern_names_match: JSON.stringify(patternNames) === JSON.stringify(expectedNames),
|
|
97
97
|
shape_and_taxonomy_valid: validShape,
|
|
98
|
-
total_anchors_count: totalAnchorCount >= 14 && totalAnchorCount <=
|
|
98
|
+
total_anchors_count: totalAnchorCount >= 14 && totalAnchorCount <= 32, // R728 added 8s pair (+2) + extended tier (+2 entries → 6 total) — all of pair/tier members counted again
|
|
99
99
|
all_cadences_in_rolodex: allPatternCadencesInRolodex,
|
|
100
100
|
};
|
|
101
101
|
const ok = Object.values(results).every(Boolean);
|