From c2684b62519984d748795a489d3de5a8fc2a13e1 Mon Sep 17 00:00:00 2001 From: David Stenglein Date: Sat, 2 Aug 2025 14:43:37 +0000 Subject: [PATCH 1/4] feat: adapt entities to use knowledgebase-vocabulary MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add KbPlaceholderDocument entity for wiki-style forward references - Implement deterministic ID generation following ADR-0013 standards - Update EntityService to use deterministic IDs instead of random UUIDs - Add comprehensive ID normalization with Unicode NFKD and alphanumeric conversion - Support for Person, Organization, Location, Project, Tag, and PlaceholderDocument entities - Maintain RDF vocabulary compatibility with existing converter - Enable wiki-based document linking with predictable entity identifiers 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- .claude-flow/metrics/agent-metrics.json | 1 + .claude-flow/metrics/performance.json | 9 + .claude-flow/metrics/system-metrics.json | 2810 +++++++++++++++++ .claude-flow/metrics/task-metrics.json | 10 + .../models/kb_entities.py | 50 +- .../services/entity_service.py | 38 +- .../utils/id_generator.py | 145 +- 7 files changed, 3042 insertions(+), 21 deletions(-) create mode 100644 .claude-flow/metrics/agent-metrics.json create mode 100644 .claude-flow/metrics/performance.json create mode 100644 .claude-flow/metrics/system-metrics.json create mode 100644 .claude-flow/metrics/task-metrics.json diff --git a/.claude-flow/metrics/agent-metrics.json b/.claude-flow/metrics/agent-metrics.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.claude-flow/metrics/agent-metrics.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.claude-flow/metrics/performance.json b/.claude-flow/metrics/performance.json new file mode 100644 index 0000000..c4f93b8 --- /dev/null +++ b/.claude-flow/metrics/performance.json @@ -0,0 +1,9 @@ +{ + "startTime": 1754092494156, + "totalTasks": 1, + "successfulTasks": 1, + "failedTasks": 0, + "totalAgents": 0, + "activeAgents": 0, + "neuralEvents": 0 +} \ No newline at end of file diff --git a/.claude-flow/metrics/system-metrics.json b/.claude-flow/metrics/system-metrics.json new file mode 100644 index 0000000..ef13f58 --- /dev/null +++ b/.claude-flow/metrics/system-metrics.json @@ -0,0 +1,2810 @@ +[ + { + "timestamp": 1754091834499, + "memoryTotal": 67266699264, + "memoryUsed": 35351740416, + "memoryFree": 31914958848, + "memoryUsagePercent": 52.554593584644124, + "memoryEfficiency": 47.445406415355876, + "cpuCount": 32, + "cpuLoad": 0.0665625, + "platform": "linux", + "uptime": 108641.97 + }, + { + "timestamp": 1754091864501, + "memoryTotal": 67266699264, + "memoryUsed": 34797871104, + "memoryFree": 32468828160, + "memoryUsagePercent": 51.731200556503644, + "memoryEfficiency": 48.268799443496356, + "cpuCount": 32, + "cpuLoad": 0.0575, + "platform": "linux", + "uptime": 108671.97 + }, + { + "timestamp": 1754091894528, + "memoryTotal": 67266699264, + "memoryUsed": 34822815744, + "memoryFree": 32443883520, + "memoryUsagePercent": 51.768283749633284, + "memoryEfficiency": 48.231716250366716, + "cpuCount": 32, + "cpuLoad": 0.041875, + "platform": "linux", + "uptime": 108702 + }, + { + "timestamp": 1754091924560, + "memoryTotal": 67266699264, + "memoryUsed": 35070443520, + "memoryFree": 32196255744, + "memoryUsagePercent": 52.1364120786719, + "memoryEfficiency": 47.8635879213281, + "cpuCount": 32, + "cpuLoad": 0.0296875, + "platform": "linux", + "uptime": 108732.03 + }, + { + "timestamp": 1754091954586, + "memoryTotal": 67266699264, + "memoryUsed": 34834075648, + "memoryFree": 32432623616, + "memoryUsagePercent": 51.78502294469295, + "memoryEfficiency": 48.21497705530705, + "cpuCount": 32, + "cpuLoad": 0.035625, + "platform": "linux", + "uptime": 108762.06 + }, + { + "timestamp": 1754091984612, + "memoryTotal": 67266699264, + "memoryUsed": 35001323520, + "memoryFree": 32265375744, + "memoryUsagePercent": 52.033656925295446, + "memoryEfficiency": 47.966343074704554, + "cpuCount": 32, + "cpuLoad": 0.0284375, + "platform": "linux", + "uptime": 108792.08 + }, + { + "timestamp": 1754092014644, + "memoryTotal": 67266699264, + "memoryUsed": 35250536448, + "memoryFree": 32016162816, + "memoryUsagePercent": 52.40414177251817, + "memoryEfficiency": 47.59585822748183, + "cpuCount": 32, + "cpuLoad": 0.02125, + "platform": "linux", + "uptime": 108822.12 + }, + { + "timestamp": 1754092044675, + "memoryTotal": 67266699264, + "memoryUsed": 35285852160, + "memoryFree": 31980847104, + "memoryUsagePercent": 52.45664280554998, + "memoryEfficiency": 47.54335719445002, + "cpuCount": 32, + "cpuLoad": 0.02875, + "platform": "linux", + "uptime": 108852.15 + }, + { + "timestamp": 1754092074702, + "memoryTotal": 67266699264, + "memoryUsed": 35469750272, + "memoryFree": 31796948992, + "memoryUsagePercent": 52.73002936087695, + "memoryEfficiency": 47.26997063912305, + "cpuCount": 32, + "cpuLoad": 0.056875, + "platform": "linux", + "uptime": 108882.17 + }, + { + "timestamp": 1754092104738, + "memoryTotal": 67266699264, + "memoryUsed": 35573612544, + "memoryFree": 31693086720, + "memoryUsagePercent": 52.884433060086835, + "memoryEfficiency": 47.115566939913165, + "cpuCount": 32, + "cpuLoad": 0.0471875, + "platform": "linux", + "uptime": 108912.21 + }, + { + "timestamp": 1754092134762, + "memoryTotal": 67266699264, + "memoryUsed": 35459903488, + "memoryFree": 31806795776, + "memoryUsagePercent": 52.71539093784187, + "memoryEfficiency": 47.28460906215813, + "cpuCount": 32, + "cpuLoad": 0.04625, + "platform": "linux", + "uptime": 108942.23 + }, + { + "timestamp": 1754092164792, + "memoryTotal": 67266699264, + "memoryUsed": 35994103808, + "memoryFree": 31272595456, + "memoryUsagePercent": 53.50954365507783, + "memoryEfficiency": 46.49045634492217, + "cpuCount": 32, + "cpuLoad": 0.0584375, + "platform": "linux", + "uptime": 108972.26 + }, + { + "timestamp": 1754092194820, + "memoryTotal": 67266699264, + "memoryUsed": 35888095232, + "memoryFree": 31378604032, + "memoryUsagePercent": 53.3519492180683, + "memoryEfficiency": 46.6480507819317, + "cpuCount": 32, + "cpuLoad": 0.06125, + "platform": "linux", + "uptime": 109002.29 + }, + { + "timestamp": 1754092224853, + "memoryTotal": 67266699264, + "memoryUsed": 35843223552, + "memoryFree": 31423475712, + "memoryUsagePercent": 53.285242094794874, + "memoryEfficiency": 46.714757905205126, + "cpuCount": 32, + "cpuLoad": 0.0753125, + "platform": "linux", + "uptime": 109032.32 + }, + { + "timestamp": 1754092254880, + "memoryTotal": 67266699264, + "memoryUsed": 35995881472, + "memoryFree": 31270817792, + "memoryUsagePercent": 53.51218636539282, + "memoryEfficiency": 46.48781363460718, + "cpuCount": 32, + "cpuLoad": 0.0759375, + "platform": "linux", + "uptime": 109062.35 + }, + { + "timestamp": 1754092284910, + "memoryTotal": 67266699264, + "memoryUsed": 36009459712, + "memoryFree": 31257239552, + "memoryUsagePercent": 53.53237204441166, + "memoryEfficiency": 46.46762795558834, + "cpuCount": 32, + "cpuLoad": 0.069375, + "platform": "linux", + "uptime": 109092.38 + }, + { + "timestamp": 1754092314920, + "memoryTotal": 67266699264, + "memoryUsed": 35993616384, + "memoryFree": 31273082880, + "memoryUsagePercent": 53.50881904095921, + "memoryEfficiency": 46.49118095904079, + "cpuCount": 32, + "cpuLoad": 0.0565625, + "platform": "linux", + "uptime": 109122.39 + }, + { + "timestamp": 1754092344949, + "memoryTotal": 67266699264, + "memoryUsed": 35907317760, + "memoryFree": 31359381504, + "memoryUsagePercent": 53.38052580679693, + "memoryEfficiency": 46.61947419320307, + "cpuCount": 32, + "cpuLoad": 0.0540625, + "platform": "linux", + "uptime": 109152.42 + }, + { + "timestamp": 1754092374979, + "memoryTotal": 67266699264, + "memoryUsed": 36074455040, + "memoryFree": 31192244224, + "memoryUsagePercent": 53.628995379154034, + "memoryEfficiency": 46.371004620845966, + "cpuCount": 32, + "cpuLoad": 0.0575, + "platform": "linux", + "uptime": 109182.45 + }, + { + "timestamp": 1754092405012, + "memoryTotal": 67266699264, + "memoryUsed": 36151664640, + "memoryFree": 31115034624, + "memoryUsagePercent": 53.74377669122195, + "memoryEfficiency": 46.25622330877805, + "cpuCount": 32, + "cpuLoad": 0.04875, + "platform": "linux", + "uptime": 109212.48 + }, + { + "timestamp": 1754092435039, + "memoryTotal": 67266699264, + "memoryUsed": 36074164224, + "memoryFree": 31192535040, + "memoryUsagePercent": 53.62856304636057, + "memoryEfficiency": 46.37143695363943, + "cpuCount": 32, + "cpuLoad": 0.0525, + "platform": "linux", + "uptime": 109242.51 + }, + { + "timestamp": 1754092465070, + "memoryTotal": 67266699264, + "memoryUsed": 36065153024, + "memoryFree": 31201546240, + "memoryUsagePercent": 53.61516681895742, + "memoryEfficiency": 46.38483318104258, + "cpuCount": 32, + "cpuLoad": 0.0665625, + "platform": "linux", + "uptime": 109272.54 + }, + { + "timestamp": 1754092495099, + "memoryTotal": 67266699264, + "memoryUsed": 36438896640, + "memoryFree": 30827802624, + "memoryUsagePercent": 54.170781439697436, + "memoryEfficiency": 45.829218560302564, + "cpuCount": 32, + "cpuLoad": 0.07, + "platform": "linux", + "uptime": 109302.57 + }, + { + "timestamp": 1754092525132, + "memoryTotal": 67266699264, + "memoryUsed": 36184272896, + "memoryFree": 31082426368, + "memoryUsagePercent": 53.792252766838544, + "memoryEfficiency": 46.207747233161456, + "cpuCount": 32, + "cpuLoad": 0.088125, + "platform": "linux", + "uptime": 109332.6 + }, + { + "timestamp": 1754092555162, + "memoryTotal": 67266699264, + "memoryUsed": 35895660544, + "memoryFree": 31371038720, + "memoryUsagePercent": 53.36319595989267, + "memoryEfficiency": 46.63680404010733, + "cpuCount": 32, + "cpuLoad": 0.0828125, + "platform": "linux", + "uptime": 109362.63 + }, + { + "timestamp": 1754092585192, + "memoryTotal": 67266699264, + "memoryUsed": 35975364608, + "memoryFree": 31291334656, + "memoryUsagePercent": 53.48168559127355, + "memoryEfficiency": 46.51831440872645, + "cpuCount": 32, + "cpuLoad": 0.073125, + "platform": "linux", + "uptime": 109392.66 + }, + { + "timestamp": 1754092615222, + "memoryTotal": 67266699264, + "memoryUsed": 36042452992, + "memoryFree": 31224246272, + "memoryUsagePercent": 53.58142050429002, + "memoryEfficiency": 46.41857949570998, + "cpuCount": 32, + "cpuLoad": 0.0821875, + "platform": "linux", + "uptime": 109422.69 + }, + { + "timestamp": 1754092645251, + "memoryTotal": 67266699264, + "memoryUsed": 35913019392, + "memoryFree": 31353679872, + "memoryUsagePercent": 53.389001965226555, + "memoryEfficiency": 46.610998034773445, + "cpuCount": 32, + "cpuLoad": 0.0740625, + "platform": "linux", + "uptime": 109452.72 + }, + { + "timestamp": 1754092675272, + "memoryTotal": 67266699264, + "memoryUsed": 35975065600, + "memoryFree": 31291633664, + "memoryUsagePercent": 53.481241080091536, + "memoryEfficiency": 46.518758919908464, + "cpuCount": 32, + "cpuLoad": 0.07375, + "platform": "linux", + "uptime": 109482.74 + }, + { + "timestamp": 1754092705301, + "memoryTotal": 67266699264, + "memoryUsed": 36010532864, + "memoryFree": 31256166400, + "memoryUsagePercent": 53.53396741331149, + "memoryEfficiency": 46.46603258668851, + "cpuCount": 32, + "cpuLoad": 0.0784375, + "platform": "linux", + "uptime": 109512.77 + }, + { + "timestamp": 1754092735313, + "memoryTotal": 67266699264, + "memoryUsed": 35871727616, + "memoryFree": 31394971648, + "memoryUsagePercent": 53.32761679774875, + "memoryEfficiency": 46.67238320225125, + "cpuCount": 32, + "cpuLoad": 0.0496875, + "platform": "linux", + "uptime": 109542.78 + }, + { + "timestamp": 1754092765344, + "memoryTotal": 67266699264, + "memoryUsed": 35867475968, + "memoryFree": 31399223296, + "memoryUsagePercent": 53.32129621409217, + "memoryEfficiency": 46.67870378590783, + "cpuCount": 32, + "cpuLoad": 0.041875, + "platform": "linux", + "uptime": 109572.82 + }, + { + "timestamp": 1754092795373, + "memoryTotal": 67266699264, + "memoryUsed": 35940323328, + "memoryFree": 31326375936, + "memoryUsagePercent": 53.429592534258106, + "memoryEfficiency": 46.570407465741894, + "cpuCount": 32, + "cpuLoad": 0.0403125, + "platform": "linux", + "uptime": 109602.84 + }, + { + "timestamp": 1754092825404, + "memoryTotal": 67266699264, + "memoryUsed": 35863105536, + "memoryFree": 31403593728, + "memoryUsagePercent": 53.31479904380164, + "memoryEfficiency": 46.68520095619836, + "cpuCount": 32, + "cpuLoad": 0.0315625, + "platform": "linux", + "uptime": 109632.88 + }, + { + "timestamp": 1754092855431, + "memoryTotal": 67266699264, + "memoryUsed": 35886145536, + "memoryFree": 31380553728, + "memoryUsagePercent": 53.349050761593794, + "memoryEfficiency": 46.650949238406206, + "cpuCount": 32, + "cpuLoad": 0.0278125, + "platform": "linux", + "uptime": 109662.9 + }, + { + "timestamp": 1754092885450, + "memoryTotal": 67266699264, + "memoryUsed": 35916144640, + "memoryFree": 31350554624, + "memoryUsagePercent": 53.39364802045774, + "memoryEfficiency": 46.60635197954226, + "cpuCount": 32, + "cpuLoad": 0.02375, + "platform": "linux", + "uptime": 109692.92 + }, + { + "timestamp": 1754092915475, + "memoryTotal": 67266699264, + "memoryUsed": 35947778048, + "memoryFree": 31318921216, + "memoryUsagePercent": 53.44067486783708, + "memoryEfficiency": 46.55932513216292, + "cpuCount": 32, + "cpuLoad": 0.0165625, + "platform": "linux", + "uptime": 109722.95 + }, + { + "timestamp": 1754092945505, + "memoryTotal": 67266699264, + "memoryUsed": 35876978688, + "memoryFree": 31389720576, + "memoryUsagePercent": 53.335423144808225, + "memoryEfficiency": 46.664576855191775, + "cpuCount": 32, + "cpuLoad": 0.01, + "platform": "linux", + "uptime": 109752.98 + }, + { + "timestamp": 1754092975533, + "memoryTotal": 67266699264, + "memoryUsed": 35897630720, + "memoryFree": 31369068544, + "memoryUsagePercent": 53.36612486233854, + "memoryEfficiency": 46.63387513766146, + "cpuCount": 32, + "cpuLoad": 0.010625, + "platform": "linux", + "uptime": 109783 + }, + { + "timestamp": 1754093005554, + "memoryTotal": 67266699264, + "memoryUsed": 35981418496, + "memoryFree": 31285280768, + "memoryUsagePercent": 53.490685420410756, + "memoryEfficiency": 46.509314579589244, + "cpuCount": 32, + "cpuLoad": 0.0121875, + "platform": "linux", + "uptime": 109813.03 + }, + { + "timestamp": 1754093035584, + "memoryTotal": 67266699264, + "memoryUsed": 35874639872, + "memoryFree": 31392059392, + "memoryUsagePercent": 53.33194621487768, + "memoryEfficiency": 46.66805378512232, + "cpuCount": 32, + "cpuLoad": 0.0109375, + "platform": "linux", + "uptime": 109843.06 + }, + { + "timestamp": 1754093065614, + "memoryTotal": 67266699264, + "memoryUsed": 36049305600, + "memoryFree": 31217393664, + "memoryUsagePercent": 53.591607726310684, + "memoryEfficiency": 46.408392273689316, + "cpuCount": 32, + "cpuLoad": 0.039375, + "platform": "linux", + "uptime": 109873.09 + }, + { + "timestamp": 1754093095619, + "memoryTotal": 67266699264, + "memoryUsed": 35900170240, + "memoryFree": 31366529024, + "memoryUsagePercent": 53.36990016278852, + "memoryEfficiency": 46.63009983721148, + "cpuCount": 32, + "cpuLoad": 0.0334375, + "platform": "linux", + "uptime": 109903.09 + }, + { + "timestamp": 1754093125650, + "memoryTotal": 67266699264, + "memoryUsed": 35754000384, + "memoryFree": 31512698880, + "memoryUsagePercent": 53.15260117592084, + "memoryEfficiency": 46.84739882407916, + "cpuCount": 32, + "cpuLoad": 0.0521875, + "platform": "linux", + "uptime": 109933.12 + }, + { + "timestamp": 1754093155651, + "memoryTotal": 67266699264, + "memoryUsed": 35735474176, + "memoryFree": 31531225088, + "memoryUsagePercent": 53.12505975021882, + "memoryEfficiency": 46.87494024978118, + "cpuCount": 32, + "cpuLoad": 0.0603125, + "platform": "linux", + "uptime": 109963.12 + }, + { + "timestamp": 1754093185680, + "memoryTotal": 67266699264, + "memoryUsed": 35786694656, + "memoryFree": 31480004608, + "memoryUsagePercent": 53.20120512461719, + "memoryEfficiency": 46.79879487538281, + "cpuCount": 32, + "cpuLoad": 0.04, + "platform": "linux", + "uptime": 109993.15 + }, + { + "timestamp": 1754093215710, + "memoryTotal": 67266699264, + "memoryUsed": 35910774784, + "memoryFree": 31355924480, + "memoryUsagePercent": 53.38566508676432, + "memoryEfficiency": 46.61433491323568, + "cpuCount": 32, + "cpuLoad": 0.0421875, + "platform": "linux", + "uptime": 110023.18 + }, + { + "timestamp": 1754093245740, + "memoryTotal": 67266699264, + "memoryUsed": 35785711616, + "memoryFree": 31480987648, + "memoryUsagePercent": 53.19974371799139, + "memoryEfficiency": 46.80025628200861, + "cpuCount": 32, + "cpuLoad": 0.0390625, + "platform": "linux", + "uptime": 110053.21 + }, + { + "timestamp": 1754093275771, + "memoryTotal": 67266699264, + "memoryUsed": 35793174528, + "memoryFree": 31473524736, + "memoryUsagePercent": 53.21083822995891, + "memoryEfficiency": 46.78916177004109, + "cpuCount": 32, + "cpuLoad": 0.0428125, + "platform": "linux", + "uptime": 110083.24 + }, + { + "timestamp": 1754093305800, + "memoryTotal": 67266699264, + "memoryUsed": 35813449728, + "memoryFree": 31453249536, + "memoryUsagePercent": 53.240979741616, + "memoryEfficiency": 46.759020258384, + "cpuCount": 32, + "cpuLoad": 0.03625, + "platform": "linux", + "uptime": 110113.27 + }, + { + "timestamp": 1754093335830, + "memoryTotal": 67266699264, + "memoryUsed": 35803193344, + "memoryFree": 31463505920, + "memoryUsagePercent": 53.2257323991535, + "memoryEfficiency": 46.7742676008465, + "cpuCount": 32, + "cpuLoad": 0.026875, + "platform": "linux", + "uptime": 110143.3 + }, + { + "timestamp": 1754093365860, + "memoryTotal": 67266699264, + "memoryUsed": 35726860288, + "memoryFree": 31539838976, + "memoryUsagePercent": 53.11225417466026, + "memoryEfficiency": 46.88774582533974, + "cpuCount": 32, + "cpuLoad": 0.0246875, + "platform": "linux", + "uptime": 110173.33 + }, + { + "timestamp": 1754093395885, + "memoryTotal": 67266699264, + "memoryUsed": 35785801728, + "memoryFree": 31480897536, + "memoryUsagePercent": 53.199877680265416, + "memoryEfficiency": 46.800122319734584, + "cpuCount": 32, + "cpuLoad": 0.0209375, + "platform": "linux", + "uptime": 110203.36 + }, + { + "timestamp": 1754093425897, + "memoryTotal": 67266699264, + "memoryUsed": 35778179072, + "memoryFree": 31488520192, + "memoryUsagePercent": 53.18854568972121, + "memoryEfficiency": 46.81145431027879, + "cpuCount": 32, + "cpuLoad": 0.0184375, + "platform": "linux", + "uptime": 110233.37 + }, + { + "timestamp": 1754093455927, + "memoryTotal": 67266699264, + "memoryUsed": 35727470592, + "memoryFree": 31539228672, + "memoryUsagePercent": 53.1131614646071, + "memoryEfficiency": 46.8868385353929, + "cpuCount": 32, + "cpuLoad": 0.0328125, + "platform": "linux", + "uptime": 110263.4 + }, + { + "timestamp": 1754093485930, + "memoryTotal": 67266699264, + "memoryUsed": 35772719104, + "memoryFree": 31493980160, + "memoryUsagePercent": 53.180428793753755, + "memoryEfficiency": 46.819571206246245, + "cpuCount": 32, + "cpuLoad": 0.0371875, + "platform": "linux", + "uptime": 110293.4 + }, + { + "timestamp": 1754093515948, + "memoryTotal": 67266699264, + "memoryUsed": 35922325504, + "memoryFree": 31344373760, + "memoryUsagePercent": 53.402836614617456, + "memoryEfficiency": 46.597163385382544, + "cpuCount": 32, + "cpuLoad": 0.024375, + "platform": "linux", + "uptime": 110323.42 + }, + { + "timestamp": 1754093545978, + "memoryTotal": 67266699264, + "memoryUsed": 35772805120, + "memoryFree": 31493894144, + "memoryUsagePercent": 53.18055666683351, + "memoryEfficiency": 46.81944333316649, + "cpuCount": 32, + "cpuLoad": 0.0296875, + "platform": "linux", + "uptime": 110353.45 + }, + { + "timestamp": 1754093576009, + "memoryTotal": 67266699264, + "memoryUsed": 35863244800, + "memoryFree": 31403454464, + "memoryUsagePercent": 53.315006076406966, + "memoryEfficiency": 46.684993923593034, + "cpuCount": 32, + "cpuLoad": 0.018125, + "platform": "linux", + "uptime": 110383.48 + }, + { + "timestamp": 1754093606034, + "memoryTotal": 67266699264, + "memoryUsed": 36081737728, + "memoryFree": 31184961536, + "memoryUsagePercent": 53.639821966573486, + "memoryEfficiency": 46.360178033426514, + "cpuCount": 32, + "cpuLoad": 0.018125, + "platform": "linux", + "uptime": 110413.51 + }, + { + "timestamp": 1754093636064, + "memoryTotal": 67266699264, + "memoryUsed": 35782500352, + "memoryFree": 31484198912, + "memoryUsagePercent": 53.19496978968045, + "memoryEfficiency": 46.80503021031955, + "cpuCount": 32, + "cpuLoad": 0.0325, + "platform": "linux", + "uptime": 110443.54 + }, + { + "timestamp": 1754093666096, + "memoryTotal": 67266699264, + "memoryUsed": 35809570816, + "memoryFree": 31457128448, + "memoryUsagePercent": 53.23521327463837, + "memoryEfficiency": 46.76478672536163, + "cpuCount": 32, + "cpuLoad": 0.023125, + "platform": "linux", + "uptime": 110473.57 + }, + { + "timestamp": 1754093696126, + "memoryTotal": 67266699264, + "memoryUsed": 35777552384, + "memoryFree": 31489146880, + "memoryUsagePercent": 53.18761404299727, + "memoryEfficiency": 46.81238595700273, + "cpuCount": 32, + "cpuLoad": 0.018125, + "platform": "linux", + "uptime": 110503.6 + }, + { + "timestamp": 1754093726155, + "memoryTotal": 67266699264, + "memoryUsed": 35728539648, + "memoryFree": 31538159616, + "memoryUsagePercent": 53.114750744312666, + "memoryEfficiency": 46.885249255687334, + "cpuCount": 32, + "cpuLoad": 0.026875, + "platform": "linux", + "uptime": 110533.63 + }, + { + "timestamp": 1754093756183, + "memoryTotal": 67266699264, + "memoryUsed": 35699859456, + "memoryFree": 31566839808, + "memoryUsagePercent": 53.072114206005, + "memoryEfficiency": 46.927885793995, + "cpuCount": 32, + "cpuLoad": 0.0184375, + "platform": "linux", + "uptime": 110563.65 + }, + { + "timestamp": 1754093786210, + "memoryTotal": 67266699264, + "memoryUsed": 35769135104, + "memoryFree": 31497564160, + "memoryUsagePercent": 53.17510074876386, + "memoryEfficiency": 46.82489925123614, + "cpuCount": 32, + "cpuLoad": 0.031875, + "platform": "linux", + "uptime": 110593.68 + }, + { + "timestamp": 1754093816241, + "memoryTotal": 67266699264, + "memoryUsed": 35776401408, + "memoryFree": 31490297856, + "memoryUsagePercent": 53.18590297940622, + "memoryEfficiency": 46.81409702059378, + "cpuCount": 32, + "cpuLoad": 0.0359375, + "platform": "linux", + "uptime": 110623.71 + }, + { + "timestamp": 1754093846272, + "memoryTotal": 67266699264, + "memoryUsed": 35730440192, + "memoryFree": 31536259072, + "memoryUsagePercent": 53.117576130455866, + "memoryEfficiency": 46.882423869544134, + "cpuCount": 32, + "cpuLoad": 0.0290625, + "platform": "linux", + "uptime": 110653.74 + }, + { + "timestamp": 1754093876301, + "memoryTotal": 67266699264, + "memoryUsed": 35882475520, + "memoryFree": 31384223744, + "memoryUsagePercent": 53.343594843524144, + "memoryEfficiency": 46.656405156475856, + "cpuCount": 32, + "cpuLoad": 0.0265625, + "platform": "linux", + "uptime": 110683.77 + }, + { + "timestamp": 1754093906331, + "memoryTotal": 67266699264, + "memoryUsed": 35851157504, + "memoryFree": 31415541760, + "memoryUsagePercent": 53.297036864103916, + "memoryEfficiency": 46.702963135896084, + "cpuCount": 32, + "cpuLoad": 0.033125, + "platform": "linux", + "uptime": 110713.8 + }, + { + "timestamp": 1754093936344, + "memoryTotal": 67266699264, + "memoryUsed": 35764867072, + "memoryFree": 31501832192, + "memoryUsagePercent": 53.16875580833019, + "memoryEfficiency": 46.83124419166981, + "cpuCount": 32, + "cpuLoad": 0.02375, + "platform": "linux", + "uptime": 110743.82 + }, + { + "timestamp": 1754093966356, + "memoryTotal": 67266699264, + "memoryUsed": 35738398720, + "memoryFree": 31528300544, + "memoryUsagePercent": 53.12940743493056, + "memoryEfficiency": 46.87059256506944, + "cpuCount": 32, + "cpuLoad": 0.0184375, + "platform": "linux", + "uptime": 110773.83 + }, + { + "timestamp": 1754093996383, + "memoryTotal": 67266699264, + "memoryUsed": 35787911168, + "memoryFree": 31478788096, + "memoryUsagePercent": 53.20301361531661, + "memoryEfficiency": 46.79698638468339, + "cpuCount": 32, + "cpuLoad": 0.029375, + "platform": "linux", + "uptime": 110803.86 + }, + { + "timestamp": 1754094026411, + "memoryTotal": 67266699264, + "memoryUsed": 35748057088, + "memoryFree": 31518642176, + "memoryUsagePercent": 53.14376575502904, + "memoryEfficiency": 46.85623424497096, + "cpuCount": 32, + "cpuLoad": 0.0259375, + "platform": "linux", + "uptime": 110833.88 + }, + { + "timestamp": 1754094056443, + "memoryTotal": 67266699264, + "memoryUsed": 35782950912, + "memoryFree": 31483748352, + "memoryUsagePercent": 53.1956396010506, + "memoryEfficiency": 46.8043603989494, + "cpuCount": 32, + "cpuLoad": 0.028125, + "platform": "linux", + "uptime": 110863.91 + }, + { + "timestamp": 1754094086474, + "memoryTotal": 67266699264, + "memoryUsed": 35826204672, + "memoryFree": 31440494592, + "memoryUsagePercent": 53.25994149258574, + "memoryEfficiency": 46.74005850741426, + "cpuCount": 32, + "cpuLoad": 0.0375, + "platform": "linux", + "uptime": 110893.95 + }, + { + "timestamp": 1754094116500, + "memoryTotal": 67266699264, + "memoryUsed": 35879411712, + "memoryFree": 31387287552, + "memoryUsagePercent": 53.339040126207074, + "memoryEfficiency": 46.660959873792926, + "cpuCount": 32, + "cpuLoad": 0.033125, + "platform": "linux", + "uptime": 110923.97 + }, + { + "timestamp": 1754094146527, + "memoryTotal": 67266699264, + "memoryUsed": 35770585088, + "memoryFree": 31496114176, + "memoryUsagePercent": 53.177256323536916, + "memoryEfficiency": 46.822743676463084, + "cpuCount": 32, + "cpuLoad": 0.0375, + "platform": "linux", + "uptime": 110954 + }, + { + "timestamp": 1754094176551, + "memoryTotal": 67266699264, + "memoryUsed": 35803340800, + "memoryFree": 31463358464, + "memoryUsagePercent": 53.22595161014737, + "memoryEfficiency": 46.77404838985263, + "cpuCount": 32, + "cpuLoad": 0.031875, + "platform": "linux", + "uptime": 110984.02 + }, + { + "timestamp": 1754094206562, + "memoryTotal": 67266699264, + "memoryUsed": 35887374336, + "memoryFree": 31379324928, + "memoryUsagePercent": 53.350877519876036, + "memoryEfficiency": 46.649122480123964, + "cpuCount": 32, + "cpuLoad": 0.0190625, + "platform": "linux", + "uptime": 111014.03 + }, + { + "timestamp": 1754094236591, + "memoryTotal": 67266699264, + "memoryUsed": 35749212160, + "memoryFree": 31517487104, + "memoryUsagePercent": 53.14548290781435, + "memoryEfficiency": 46.85451709218565, + "cpuCount": 32, + "cpuLoad": 0.0178125, + "platform": "linux", + "uptime": 111044.06 + }, + { + "timestamp": 1754094266596, + "memoryTotal": 67266699264, + "memoryUsed": 35816267776, + "memoryFree": 31450431488, + "memoryUsagePercent": 53.245169107276624, + "memoryEfficiency": 46.754830892723376, + "cpuCount": 32, + "cpuLoad": 0.014375, + "platform": "linux", + "uptime": 111074.07 + }, + { + "timestamp": 1754094296621, + "memoryTotal": 67266699264, + "memoryUsed": 35839266816, + "memoryFree": 31427432448, + "memoryUsagePercent": 53.27935993312604, + "memoryEfficiency": 46.72064006687396, + "cpuCount": 32, + "cpuLoad": 0.010625, + "platform": "linux", + "uptime": 111104.09 + }, + { + "timestamp": 1754094326653, + "memoryTotal": 67266699264, + "memoryUsed": 35792592896, + "memoryFree": 31474106368, + "memoryUsagePercent": 53.20997356437198, + "memoryEfficiency": 46.79002643562802, + "cpuCount": 32, + "cpuLoad": 0.0128125, + "platform": "linux", + "uptime": 111134.12 + }, + { + "timestamp": 1754094356680, + "memoryTotal": 67266699264, + "memoryUsed": 35808591872, + "memoryFree": 31458107392, + "memoryUsagePercent": 53.23375795720685, + "memoryEfficiency": 46.76624204279315, + "cpuCount": 32, + "cpuLoad": 0.0103125, + "platform": "linux", + "uptime": 111164.15 + }, + { + "timestamp": 1754094386684, + "memoryTotal": 67266699264, + "memoryUsed": 35833126912, + "memoryFree": 31433572352, + "memoryUsagePercent": 53.270232230909066, + "memoryEfficiency": 46.729767769090934, + "cpuCount": 32, + "cpuLoad": 0.01375, + "platform": "linux", + "uptime": 111194.16 + }, + { + "timestamp": 1754094416714, + "memoryTotal": 67266699264, + "memoryUsed": 35924164608, + "memoryFree": 31342534656, + "memoryUsagePercent": 53.40557066284654, + "memoryEfficiency": 46.59442933715346, + "cpuCount": 32, + "cpuLoad": 0.010625, + "platform": "linux", + "uptime": 111224.19 + }, + { + "timestamp": 1754094446732, + "memoryTotal": 67266699264, + "memoryUsed": 35837009920, + "memoryFree": 31429689344, + "memoryUsagePercent": 53.276004787080964, + "memoryEfficiency": 46.723995212919036, + "cpuCount": 32, + "cpuLoad": 0.0190625, + "platform": "linux", + "uptime": 111254.2 + }, + { + "timestamp": 1754094476761, + "memoryTotal": 67266699264, + "memoryUsed": 35955490816, + "memoryFree": 31311208448, + "memoryUsagePercent": 53.45214082065532, + "memoryEfficiency": 46.54785917934468, + "cpuCount": 32, + "cpuLoad": 0.02375, + "platform": "linux", + "uptime": 111284.23 + }, + { + "timestamp": 1754094506791, + "memoryTotal": 67266699264, + "memoryUsed": 35941892096, + "memoryFree": 31324807168, + "memoryUsagePercent": 53.43192469566511, + "memoryEfficiency": 46.56807530433489, + "cpuCount": 32, + "cpuLoad": 0.026875, + "platform": "linux", + "uptime": 111314.26 + }, + { + "timestamp": 1754094536803, + "memoryTotal": 67266699264, + "memoryUsed": 35812544512, + "memoryFree": 31454154752, + "memoryUsagePercent": 53.23963402968141, + "memoryEfficiency": 46.76036597031859, + "cpuCount": 32, + "cpuLoad": 0.02, + "platform": "linux", + "uptime": 111344.27 + }, + { + "timestamp": 1754094566834, + "memoryTotal": 67266699264, + "memoryUsed": 35760058368, + "memoryFree": 31506640896, + "memoryUsagePercent": 53.161607094252325, + "memoryEfficiency": 46.838392905747675, + "cpuCount": 32, + "cpuLoad": 0.028125, + "platform": "linux", + "uptime": 111374.31 + }, + { + "timestamp": 1754094596863, + "memoryTotal": 67266699264, + "memoryUsed": 35865489408, + "memoryFree": 31401209856, + "memoryUsagePercent": 53.3183429548692, + "memoryEfficiency": 46.6816570451308, + "cpuCount": 32, + "cpuLoad": 0.0240625, + "platform": "linux", + "uptime": 111404.33 + }, + { + "timestamp": 1754094626893, + "memoryTotal": 67266699264, + "memoryUsed": 35882876928, + "memoryFree": 31383822336, + "memoryUsagePercent": 53.34419158456301, + "memoryEfficiency": 46.65580841543699, + "cpuCount": 32, + "cpuLoad": 0.0203125, + "platform": "linux", + "uptime": 111434.36 + }, + { + "timestamp": 1754094656922, + "memoryTotal": 67266699264, + "memoryUsed": 35855474688, + "memoryFree": 31411224576, + "memoryUsagePercent": 53.30345487486888, + "memoryEfficiency": 46.69654512513112, + "cpuCount": 32, + "cpuLoad": 0.034375, + "platform": "linux", + "uptime": 111464.39 + }, + { + "timestamp": 1754094686924, + "memoryTotal": 67266699264, + "memoryUsed": 35858952192, + "memoryFree": 31407747072, + "memoryUsagePercent": 53.30862460080764, + "memoryEfficiency": 46.69137539919236, + "cpuCount": 32, + "cpuLoad": 0.02625, + "platform": "linux", + "uptime": 111494.4 + }, + { + "timestamp": 1754094716950, + "memoryTotal": 67266699264, + "memoryUsed": 35880472576, + "memoryFree": 31386226688, + "memoryUsagePercent": 53.34061722752408, + "memoryEfficiency": 46.65938277247592, + "cpuCount": 32, + "cpuLoad": 0.0203125, + "platform": "linux", + "uptime": 111524.42 + }, + { + "timestamp": 1754094746979, + "memoryTotal": 67266699264, + "memoryUsed": 35868925952, + "memoryFree": 31397773312, + "memoryUsagePercent": 53.32345178886523, + "memoryEfficiency": 46.67654821113477, + "cpuCount": 32, + "cpuLoad": 0.018125, + "platform": "linux", + "uptime": 111554.45 + }, + { + "timestamp": 1754094777010, + "memoryTotal": 67266699264, + "memoryUsed": 35914657792, + "memoryFree": 31352041472, + "memoryUsagePercent": 53.391437642936225, + "memoryEfficiency": 46.608562357063775, + "cpuCount": 32, + "cpuLoad": 0.0128125, + "platform": "linux", + "uptime": 111584.48 + }, + { + "timestamp": 1754094807040, + "memoryTotal": 67266699264, + "memoryUsed": 35954864128, + "memoryFree": 31311835136, + "memoryUsagePercent": 53.45120917393138, + "memoryEfficiency": 46.54879082606862, + "cpuCount": 32, + "cpuLoad": 0.009375, + "platform": "linux", + "uptime": 111614.51 + }, + { + "timestamp": 1754094837069, + "memoryTotal": 67266699264, + "memoryUsed": 35877605376, + "memoryFree": 31389093888, + "memoryUsagePercent": 53.33635479153217, + "memoryEfficiency": 46.66364520846783, + "cpuCount": 32, + "cpuLoad": 0.0196875, + "platform": "linux", + "uptime": 111644.54 + }, + { + "timestamp": 1754094867098, + "memoryTotal": 67266699264, + "memoryUsed": 35889319936, + "memoryFree": 31377379328, + "memoryUsagePercent": 53.35376988715627, + "memoryEfficiency": 46.64623011284373, + "cpuCount": 32, + "cpuLoad": 0.015, + "platform": "linux", + "uptime": 111674.57 + }, + { + "timestamp": 1754094897129, + "memoryTotal": 67266699264, + "memoryUsed": 35873882112, + "memoryFree": 31392817152, + "memoryUsagePercent": 53.33081971393696, + "memoryEfficiency": 46.66918028606304, + "cpuCount": 32, + "cpuLoad": 0.013125, + "platform": "linux", + "uptime": 111704.6 + }, + { + "timestamp": 1754094927159, + "memoryTotal": 67266699264, + "memoryUsed": 35833597952, + "memoryFree": 31433101312, + "memoryUsagePercent": 53.2709324882506, + "memoryEfficiency": 46.7290675117494, + "cpuCount": 32, + "cpuLoad": 0.024375, + "platform": "linux", + "uptime": 111734.63 + }, + { + "timestamp": 1754094957189, + "memoryTotal": 67266699264, + "memoryUsed": 35864690688, + "memoryFree": 31402008576, + "memoryUsagePercent": 53.31715556198574, + "memoryEfficiency": 46.68284443801426, + "cpuCount": 32, + "cpuLoad": 0.0196875, + "platform": "linux", + "uptime": 111764.66 + }, + { + "timestamp": 1754094987220, + "memoryTotal": 67266699264, + "memoryUsed": 35931070464, + "memoryFree": 31335628800, + "memoryUsagePercent": 53.41583704439279, + "memoryEfficiency": 46.58416295560721, + "cpuCount": 32, + "cpuLoad": 0.0203125, + "platform": "linux", + "uptime": 111794.69 + }, + { + "timestamp": 1754095017247, + "memoryTotal": 67266699264, + "memoryUsed": 35954262016, + "memoryFree": 31312437248, + "memoryUsagePercent": 53.45031406237308, + "memoryEfficiency": 46.54968593762692, + "cpuCount": 32, + "cpuLoad": 0.0225, + "platform": "linux", + "uptime": 111824.72 + }, + { + "timestamp": 1754095047276, + "memoryTotal": 67266699264, + "memoryUsed": 35866976256, + "memoryFree": 31399723008, + "memoryUsagePercent": 53.32055333239073, + "memoryEfficiency": 46.67944666760927, + "cpuCount": 32, + "cpuLoad": 0.0175, + "platform": "linux", + "uptime": 111854.75 + }, + { + "timestamp": 1754095077280, + "memoryTotal": 67266699264, + "memoryUsed": 33575825408, + "memoryFree": 33690873856, + "memoryUsagePercent": 49.91448335561369, + "memoryEfficiency": 50.08551664438631, + "cpuCount": 32, + "cpuLoad": 0.0125, + "platform": "linux", + "uptime": 111884.75 + }, + { + "timestamp": 1754095107309, + "memoryTotal": 67266699264, + "memoryUsed": 33599700992, + "memoryFree": 33666998272, + "memoryUsagePercent": 49.949977269037774, + "memoryEfficiency": 50.050022730962226, + "cpuCount": 32, + "cpuLoad": 0.02625, + "platform": "linux", + "uptime": 111914.78 + }, + { + "timestamp": 1754095137338, + "memoryTotal": 67266699264, + "memoryUsed": 33556971520, + "memoryFree": 33709727744, + "memoryUsagePercent": 49.88645479436973, + "memoryEfficiency": 50.11354520563027, + "cpuCount": 32, + "cpuLoad": 0.026875, + "platform": "linux", + "uptime": 111944.81 + }, + { + "timestamp": 1754095167369, + "memoryTotal": 67266699264, + "memoryUsed": 33510117376, + "memoryFree": 33756581888, + "memoryUsagePercent": 49.81680050106762, + "memoryEfficiency": 50.18319949893238, + "cpuCount": 32, + "cpuLoad": 0.0265625, + "platform": "linux", + "uptime": 111974.84 + }, + { + "timestamp": 1754095197399, + "memoryTotal": 67266699264, + "memoryUsed": 33547739136, + "memoryFree": 33718960128, + "memoryUsagePercent": 49.87272975047578, + "memoryEfficiency": 50.12727024952422, + "cpuCount": 32, + "cpuLoad": 0.0209375, + "platform": "linux", + "uptime": 112004.87 + }, + { + "timestamp": 1754095227430, + "memoryTotal": 67266699264, + "memoryUsed": 33515798528, + "memoryFree": 33750900736, + "memoryUsagePercent": 49.82524621352588, + "memoryEfficiency": 50.17475378647412, + "cpuCount": 32, + "cpuLoad": 0.0128125, + "platform": "linux", + "uptime": 112034.9 + }, + { + "timestamp": 1754095257457, + "memoryTotal": 67266699264, + "memoryUsed": 33555714048, + "memoryFree": 33710985216, + "memoryUsagePercent": 49.884585411727564, + "memoryEfficiency": 50.115414588272436, + "cpuCount": 32, + "cpuLoad": 0.0078125, + "platform": "linux", + "uptime": 112064.93 + }, + { + "timestamp": 1754095287489, + "memoryTotal": 67266699264, + "memoryUsed": 33585283072, + "memoryFree": 33681416192, + "memoryUsagePercent": 49.92854330519273, + "memoryEfficiency": 50.07145669480727, + "cpuCount": 32, + "cpuLoad": 0.0209375, + "platform": "linux", + "uptime": 112094.96 + }, + { + "timestamp": 1754095317520, + "memoryTotal": 67266699264, + "memoryUsed": 33637302272, + "memoryFree": 33629396992, + "memoryUsagePercent": 50.005876072474564, + "memoryEfficiency": 49.994123927525436, + "cpuCount": 32, + "cpuLoad": 0.025, + "platform": "linux", + "uptime": 112124.99 + }, + { + "timestamp": 1754095347535, + "memoryTotal": 67266699264, + "memoryUsed": 33563385856, + "memoryFree": 33703313408, + "memoryUsagePercent": 49.89599047260307, + "memoryEfficiency": 50.10400952739693, + "cpuCount": 32, + "cpuLoad": 0.0225, + "platform": "linux", + "uptime": 112155.01 + }, + { + "timestamp": 1754095377561, + "memoryTotal": 67266699264, + "memoryUsed": 33676615680, + "memoryFree": 33590083584, + "memoryUsagePercent": 50.06432015911796, + "memoryEfficiency": 49.93567984088204, + "cpuCount": 32, + "cpuLoad": 0.01375, + "platform": "linux", + "uptime": 112185.03 + }, + { + "timestamp": 1754095407565, + "memoryTotal": 67266699264, + "memoryUsed": 33753792512, + "memoryFree": 33512906752, + "memoryUsagePercent": 50.17905275763168, + "memoryEfficiency": 49.82094724236832, + "cpuCount": 32, + "cpuLoad": 0.01375, + "platform": "linux", + "uptime": 112215.04 + }, + { + "timestamp": 1754095437593, + "memoryTotal": 67266699264, + "memoryUsed": 33572245504, + "memoryFree": 33694453760, + "memoryUsagePercent": 49.90916139981808, + "memoryEfficiency": 50.09083860018192, + "cpuCount": 32, + "cpuLoad": 0.0121875, + "platform": "linux", + "uptime": 112245.07 + }, + { + "timestamp": 1754095467624, + "memoryTotal": 67266699264, + "memoryUsed": 33596149760, + "memoryFree": 33670549504, + "memoryUsagePercent": 49.94469793760208, + "memoryEfficiency": 50.05530206239792, + "cpuCount": 32, + "cpuLoad": 0.0146875, + "platform": "linux", + "uptime": 112275.1 + }, + { + "timestamp": 1754095497654, + "memoryTotal": 67266699264, + "memoryUsed": 33616179200, + "memoryFree": 33650520064, + "memoryUsagePercent": 49.97447409760272, + "memoryEfficiency": 50.02552590239728, + "cpuCount": 32, + "cpuLoad": 0.0278125, + "platform": "linux", + "uptime": 112305.13 + }, + { + "timestamp": 1754095527684, + "memoryTotal": 67266699264, + "memoryUsed": 33545195520, + "memoryFree": 33721503744, + "memoryUsagePercent": 49.868948360831524, + "memoryEfficiency": 50.131051639168476, + "cpuCount": 32, + "cpuLoad": 0.028125, + "platform": "linux", + "uptime": 112335.16 + }, + { + "timestamp": 1754095557711, + "memoryTotal": 67266699264, + "memoryUsed": 33569243136, + "memoryFree": 33697456128, + "memoryUsagePercent": 49.904698020415125, + "memoryEfficiency": 50.095301979584875, + "cpuCount": 32, + "cpuLoad": 0.03125, + "platform": "linux", + "uptime": 112365.18 + }, + { + "timestamp": 1754095587744, + "memoryTotal": 67266699264, + "memoryUsed": 33661902848, + "memoryFree": 33604796416, + "memoryUsagePercent": 50.04244777328517, + "memoryEfficiency": 49.95755222671483, + "cpuCount": 32, + "cpuLoad": 0.0221875, + "platform": "linux", + "uptime": 112395.22 + }, + { + "timestamp": 1754095617774, + "memoryTotal": 67266699264, + "memoryUsed": 33620885504, + "memoryFree": 33645813760, + "memoryUsagePercent": 49.98147058182373, + "memoryEfficiency": 50.01852941817627, + "cpuCount": 32, + "cpuLoad": 0.015625, + "platform": "linux", + "uptime": 112425.25 + }, + { + "timestamp": 1754095647803, + "memoryTotal": 67266699264, + "memoryUsed": 33560440832, + "memoryFree": 33706258432, + "memoryUsagePercent": 49.89161234191995, + "memoryEfficiency": 50.10838765808005, + "cpuCount": 32, + "cpuLoad": 0.06875, + "platform": "linux", + "uptime": 112455.27 + }, + { + "timestamp": 1754095677834, + "memoryTotal": 67266699264, + "memoryUsed": 33635930112, + "memoryFree": 33630769152, + "memoryUsagePercent": 50.003836192392725, + "memoryEfficiency": 49.996163807607275, + "cpuCount": 32, + "cpuLoad": 0.0484375, + "platform": "linux", + "uptime": 112485.31 + }, + { + "timestamp": 1754095707863, + "memoryTotal": 67266699264, + "memoryUsed": 33636933632, + "memoryFree": 33629765632, + "memoryUsagePercent": 50.005328044989895, + "memoryEfficiency": 49.994671955010105, + "cpuCount": 32, + "cpuLoad": 0.034375, + "platform": "linux", + "uptime": 112515.33 + }, + { + "timestamp": 1754095737890, + "memoryTotal": 67266699264, + "memoryUsed": 33546010624, + "memoryFree": 33720688640, + "memoryUsagePercent": 49.87016011049209, + "memoryEfficiency": 50.12983988950791, + "cpuCount": 32, + "cpuLoad": 0.025, + "platform": "linux", + "uptime": 112545.36 + }, + { + "timestamp": 1754095767923, + "memoryTotal": 67266699264, + "memoryUsed": 33529917440, + "memoryFree": 33736781824, + "memoryUsagePercent": 49.84623566618891, + "memoryEfficiency": 50.15376433381109, + "cpuCount": 32, + "cpuLoad": 0.0228125, + "platform": "linux", + "uptime": 112575.39 + }, + { + "timestamp": 1754095797953, + "memoryTotal": 67266699264, + "memoryUsed": 33568161792, + "memoryFree": 33698537472, + "memoryUsagePercent": 49.903090473126746, + "memoryEfficiency": 50.096909526873254, + "cpuCount": 32, + "cpuLoad": 0.02, + "platform": "linux", + "uptime": 112605.42 + }, + { + "timestamp": 1754095827982, + "memoryTotal": 67266699264, + "memoryUsed": 33545830400, + "memoryFree": 33720868864, + "memoryUsagePercent": 49.86989218594402, + "memoryEfficiency": 50.13010781405598, + "cpuCount": 32, + "cpuLoad": 0.0121875, + "platform": "linux", + "uptime": 112635.45 + }, + { + "timestamp": 1754095858007, + "memoryTotal": 67266699264, + "memoryUsed": 33568481280, + "memoryFree": 33698217984, + "memoryUsagePercent": 49.903565430280125, + "memoryEfficiency": 50.096434569719875, + "cpuCount": 32, + "cpuLoad": 0.0228125, + "platform": "linux", + "uptime": 112665.48 + }, + { + "timestamp": 1754095888037, + "memoryTotal": 67266699264, + "memoryUsed": 33609666560, + "memoryFree": 33657032704, + "memoryUsagePercent": 49.9647922787068, + "memoryEfficiency": 50.0352077212932, + "cpuCount": 32, + "cpuLoad": 0.020625, + "platform": "linux", + "uptime": 112695.51 + }, + { + "timestamp": 1754095918064, + "memoryTotal": 67266699264, + "memoryUsed": 33626152960, + "memoryFree": 33640546304, + "memoryUsagePercent": 49.9893012856603, + "memoryEfficiency": 50.0106987143397, + "cpuCount": 32, + "cpuLoad": 0.014375, + "platform": "linux", + "uptime": 112725.54 + }, + { + "timestamp": 1754095948096, + "memoryTotal": 67266699264, + "memoryUsed": 33555705856, + "memoryFree": 33710993408, + "memoryUsagePercent": 49.88457323333902, + "memoryEfficiency": 50.11542676666098, + "cpuCount": 32, + "cpuLoad": 0.0228125, + "platform": "linux", + "uptime": 112755.57 + }, + { + "timestamp": 1754095978127, + "memoryTotal": 67266699264, + "memoryUsed": 33625481216, + "memoryFree": 33641218048, + "memoryUsagePercent": 49.98830265779934, + "memoryEfficiency": 50.01169734220066, + "cpuCount": 32, + "cpuLoad": 0.021875, + "platform": "linux", + "uptime": 112785.6 + }, + { + "timestamp": 1754096008157, + "memoryTotal": 67266699264, + "memoryUsed": 33651814400, + "memoryFree": 33614884864, + "memoryUsagePercent": 50.02745008778792, + "memoryEfficiency": 49.97254991221208, + "cpuCount": 32, + "cpuLoad": 0.0153125, + "platform": "linux", + "uptime": 112815.63 + }, + { + "timestamp": 1754096038185, + "memoryTotal": 67266699264, + "memoryUsed": 33561800704, + "memoryFree": 33704898560, + "memoryUsagePercent": 49.89363395441897, + "memoryEfficiency": 50.10636604558103, + "cpuCount": 32, + "cpuLoad": 0.0259375, + "platform": "linux", + "uptime": 112845.66 + }, + { + "timestamp": 1754096068212, + "memoryTotal": 67266699264, + "memoryUsed": 33639440384, + "memoryFree": 33627258880, + "memoryUsagePercent": 50.009054631885675, + "memoryEfficiency": 49.990945368114325, + "cpuCount": 32, + "cpuLoad": 0.0390625, + "platform": "linux", + "uptime": 112875.68 + }, + { + "timestamp": 1754096098244, + "memoryTotal": 67266699264, + "memoryUsed": 33694838784, + "memoryFree": 33571860480, + "memoryUsagePercent": 50.0914109844437, + "memoryEfficiency": 49.9085890155563, + "cpuCount": 32, + "cpuLoad": 0.0525, + "platform": "linux", + "uptime": 112905.72 + }, + { + "timestamp": 1754096128274, + "memoryTotal": 67266699264, + "memoryUsed": 33609592832, + "memoryFree": 33657106432, + "memoryUsagePercent": 49.96468267320987, + "memoryEfficiency": 50.03531732679013, + "cpuCount": 32, + "cpuLoad": 0.0609375, + "platform": "linux", + "uptime": 112935.75 + }, + { + "timestamp": 1754096158305, + "memoryTotal": 67266699264, + "memoryUsed": 33639714816, + "memoryFree": 33626984448, + "memoryUsagePercent": 50.009462607902044, + "memoryEfficiency": 49.990537392097956, + "cpuCount": 32, + "cpuLoad": 0.06625, + "platform": "linux", + "uptime": 112965.78 + }, + { + "timestamp": 1754096188310, + "memoryTotal": 67266699264, + "memoryUsed": 33689735168, + "memoryFree": 33576964096, + "memoryUsagePercent": 50.08382384837808, + "memoryEfficiency": 49.91617615162192, + "cpuCount": 32, + "cpuLoad": 0.073125, + "platform": "linux", + "uptime": 112995.78 + }, + { + "timestamp": 1754096218342, + "memoryTotal": 67266699264, + "memoryUsed": 33780789248, + "memoryFree": 33485910016, + "memoryUsagePercent": 50.21918663709267, + "memoryEfficiency": 49.78081336290733, + "cpuCount": 32, + "cpuLoad": 0.081875, + "platform": "linux", + "uptime": 113025.81 + }, + { + "timestamp": 1754096248365, + "memoryTotal": 67266699264, + "memoryUsed": 33685897216, + "memoryFree": 33580802048, + "memoryUsagePercent": 50.0781182733432, + "memoryEfficiency": 49.9218817266568, + "cpuCount": 32, + "cpuLoad": 0.0721875, + "platform": "linux", + "uptime": 113055.84 + }, + { + "timestamp": 1754096278394, + "memoryTotal": 67266699264, + "memoryUsed": 33751916544, + "memoryFree": 33514782720, + "memoryUsagePercent": 50.176263906654114, + "memoryEfficiency": 49.823736093345886, + "cpuCount": 32, + "cpuLoad": 0.075, + "platform": "linux", + "uptime": 113085.87 + }, + { + "timestamp": 1754096308424, + "memoryTotal": 67266699264, + "memoryUsed": 33770868736, + "memoryFree": 33495830528, + "memoryUsagePercent": 50.20443860856065, + "memoryEfficiency": 49.79556139143935, + "cpuCount": 32, + "cpuLoad": 0.0746875, + "platform": "linux", + "uptime": 113115.9 + }, + { + "timestamp": 1754096338454, + "memoryTotal": 67266699264, + "memoryUsed": 33600565248, + "memoryFree": 33666134016, + "memoryUsagePercent": 49.951262089029626, + "memoryEfficiency": 50.048737910970374, + "cpuCount": 32, + "cpuLoad": 0.050625, + "platform": "linux", + "uptime": 113145.93 + }, + { + "timestamp": 1754096368484, + "memoryTotal": 67266699264, + "memoryUsed": 33642016768, + "memoryFree": 33624682496, + "memoryUsagePercent": 50.012884735084114, + "memoryEfficiency": 49.987115264915886, + "cpuCount": 32, + "cpuLoad": 0.0328125, + "platform": "linux", + "uptime": 113175.96 + }, + { + "timestamp": 1754096398514, + "memoryTotal": 67266699264, + "memoryUsed": 33671876608, + "memoryFree": 33594822656, + "memoryUsagePercent": 50.05727496134275, + "memoryEfficiency": 49.94272503865725, + "cpuCount": 32, + "cpuLoad": 0.0375, + "platform": "linux", + "uptime": 113205.99 + }, + { + "timestamp": 1754096428534, + "memoryTotal": 67266699264, + "memoryUsed": 33632608256, + "memoryFree": 33634091008, + "memoryUsagePercent": 49.998897855836375, + "memoryEfficiency": 50.001102144163625, + "cpuCount": 32, + "cpuLoad": 0.0321875, + "platform": "linux", + "uptime": 113236.01 + }, + { + "timestamp": 1754096458552, + "memoryTotal": 67266699264, + "memoryUsed": 33669451776, + "memoryFree": 33597247488, + "memoryUsagePercent": 50.05367015833245, + "memoryEfficiency": 49.94632984166755, + "cpuCount": 32, + "cpuLoad": 0.026875, + "platform": "linux", + "uptime": 113266.02 + }, + { + "timestamp": 1754096488582, + "memoryTotal": 67266699264, + "memoryUsed": 33671188480, + "memoryFree": 33595510784, + "memoryUsagePercent": 50.056251976704694, + "memoryEfficiency": 49.943748023295306, + "cpuCount": 32, + "cpuLoad": 0.0296875, + "platform": "linux", + "uptime": 113296.05 + }, + { + "timestamp": 1754096518594, + "memoryTotal": 67266699264, + "memoryUsed": 33690734592, + "memoryFree": 33575964672, + "memoryUsagePercent": 50.08530961178098, + "memoryEfficiency": 49.91469038821902, + "cpuCount": 32, + "cpuLoad": 0.03125, + "platform": "linux", + "uptime": 113326.07 + }, + { + "timestamp": 1754096548604, + "memoryTotal": 67266699264, + "memoryUsed": 33645080576, + "memoryFree": 33621618688, + "memoryUsagePercent": 50.01743945240119, + "memoryEfficiency": 49.98256054759881, + "cpuCount": 32, + "cpuLoad": 0.0290625, + "platform": "linux", + "uptime": 113356.08 + }, + { + "timestamp": 1754096578634, + "memoryTotal": 67266699264, + "memoryUsed": 33674596352, + "memoryFree": 33592102912, + "memoryUsagePercent": 50.0613181863408, + "memoryEfficiency": 49.9386818136592, + "cpuCount": 32, + "cpuLoad": 0.025, + "platform": "linux", + "uptime": 113386.11 + }, + { + "timestamp": 1754096608664, + "memoryTotal": 67266699264, + "memoryUsed": 33724219392, + "memoryFree": 33542479872, + "memoryUsagePercent": 50.135088774972246, + "memoryEfficiency": 49.864911225027754, + "cpuCount": 32, + "cpuLoad": 0.03, + "platform": "linux", + "uptime": 113416.14 + }, + { + "timestamp": 1754096638667, + "memoryTotal": 67266699264, + "memoryUsed": 33642061824, + "memoryFree": 33624637440, + "memoryUsagePercent": 50.012951716221146, + "memoryEfficiency": 49.987048283778854, + "cpuCount": 32, + "cpuLoad": 0.0321875, + "platform": "linux", + "uptime": 113446.14 + }, + { + "timestamp": 1754096668690, + "memoryTotal": 67266699264, + "memoryUsed": 33718358016, + "memoryFree": 33548341248, + "memoryUsagePercent": 50.126375137965915, + "memoryEfficiency": 49.873624862034085, + "cpuCount": 32, + "cpuLoad": 0.019375, + "platform": "linux", + "uptime": 113476.16 + }, + { + "timestamp": 1754096698719, + "memoryTotal": 67266699264, + "memoryUsed": 33689178112, + "memoryFree": 33577521152, + "memoryUsagePercent": 50.082995717956805, + "memoryEfficiency": 49.917004282043195, + "cpuCount": 32, + "cpuLoad": 0.0265625, + "platform": "linux", + "uptime": 113506.19 + }, + { + "timestamp": 1754096728749, + "memoryTotal": 67266699264, + "memoryUsed": 33609216000, + "memoryFree": 33657483264, + "memoryUsagePercent": 49.964122467336644, + "memoryEfficiency": 50.035877532663356, + "cpuCount": 32, + "cpuLoad": 0.025625, + "platform": "linux", + "uptime": 113536.22 + }, + { + "timestamp": 1754096758780, + "memoryTotal": 67266699264, + "memoryUsed": 33605382144, + "memoryFree": 33661317120, + "memoryUsagePercent": 49.958422981496035, + "memoryEfficiency": 50.041577018503965, + "cpuCount": 32, + "cpuLoad": 0.015625, + "platform": "linux", + "uptime": 113566.25 + }, + { + "timestamp": 1754096788787, + "memoryTotal": 67266699264, + "memoryUsed": 33697939456, + "memoryFree": 33568759808, + "memoryUsagePercent": 50.096020504509234, + "memoryEfficiency": 49.903979495490766, + "cpuCount": 32, + "cpuLoad": 0.0146875, + "platform": "linux", + "uptime": 113596.26 + }, + { + "timestamp": 1754096818815, + "memoryTotal": 67266699264, + "memoryUsed": 33875099648, + "memoryFree": 33391599616, + "memoryUsagePercent": 50.359390335255206, + "memoryEfficiency": 49.640609664744794, + "cpuCount": 32, + "cpuLoad": 0.013125, + "platform": "linux", + "uptime": 113626.29 + }, + { + "timestamp": 1754096848829, + "memoryTotal": 67266699264, + "memoryUsed": 33678274560, + "memoryFree": 33588424704, + "memoryUsagePercent": 50.066786282798994, + "memoryEfficiency": 49.933213717201006, + "cpuCount": 32, + "cpuLoad": 0.0096875, + "platform": "linux", + "uptime": 113656.3 + }, + { + "timestamp": 1754096878860, + "memoryTotal": 67266699264, + "memoryUsed": 33657499648, + "memoryFree": 33609199616, + "memoryUsagePercent": 50.035901889440446, + "memoryEfficiency": 49.964098110559554, + "cpuCount": 32, + "cpuLoad": 0.0196875, + "platform": "linux", + "uptime": 113686.33 + }, + { + "timestamp": 1754096908862, + "memoryTotal": 67266699264, + "memoryUsed": 33692602368, + "memoryFree": 33574096896, + "memoryUsagePercent": 50.08808628437001, + "memoryEfficiency": 49.91191371562999, + "cpuCount": 32, + "cpuLoad": 0.014375, + "platform": "linux", + "uptime": 113716.33 + }, + { + "timestamp": 1754096938887, + "memoryTotal": 67266699264, + "memoryUsed": 33678221312, + "memoryFree": 33588477952, + "memoryUsagePercent": 50.066707123273424, + "memoryEfficiency": 49.933292876726576, + "cpuCount": 32, + "cpuLoad": 0.00875, + "platform": "linux", + "uptime": 113746.36 + }, + { + "timestamp": 1754096968917, + "memoryTotal": 67266699264, + "memoryUsed": 33662459904, + "memoryFree": 33604239360, + "memoryUsagePercent": 50.04327590370645, + "memoryEfficiency": 49.95672409629355, + "cpuCount": 32, + "cpuLoad": 0.03125, + "platform": "linux", + "uptime": 113776.39 + }, + { + "timestamp": 1754096998940, + "memoryTotal": 67266699264, + "memoryUsed": 33646108672, + "memoryFree": 33620590592, + "memoryUsagePercent": 50.01896784016401, + "memoryEfficiency": 49.98103215983599, + "cpuCount": 32, + "cpuLoad": 0.020625, + "platform": "linux", + "uptime": 113806.41 + }, + { + "timestamp": 1754097028962, + "memoryTotal": 67266699264, + "memoryUsed": 33570623488, + "memoryFree": 33696075776, + "memoryUsagePercent": 49.906750078885516, + "memoryEfficiency": 50.093249921114484, + "cpuCount": 32, + "cpuLoad": 0.0178125, + "platform": "linux", + "uptime": 113836.43 + }, + { + "timestamp": 1754097058988, + "memoryTotal": 67266699264, + "memoryUsed": 33584590848, + "memoryFree": 33682108416, + "memoryUsagePercent": 49.9275142313604, + "memoryEfficiency": 50.0724857686396, + "cpuCount": 32, + "cpuLoad": 0.02125, + "platform": "linux", + "uptime": 113866.46 + }, + { + "timestamp": 1754097089018, + "memoryTotal": 67266699264, + "memoryUsed": 33602510848, + "memoryFree": 33664188416, + "memoryUsagePercent": 49.954154456309844, + "memoryEfficiency": 50.045845543690156, + "cpuCount": 32, + "cpuLoad": 0.02375, + "platform": "linux", + "uptime": 113896.49 + }, + { + "timestamp": 1754097119032, + "memoryTotal": 67266699264, + "memoryUsed": 33663234048, + "memoryFree": 33603465216, + "memoryUsagePercent": 50.044426761424276, + "memoryEfficiency": 49.955573238575724, + "cpuCount": 32, + "cpuLoad": 0.01875, + "platform": "linux", + "uptime": 113926.5 + }, + { + "timestamp": 1754097149036, + "memoryTotal": 67266699264, + "memoryUsed": 33611587584, + "memoryFree": 33655111680, + "memoryUsagePercent": 49.967648110821386, + "memoryEfficiency": 50.032351889178614, + "cpuCount": 32, + "cpuLoad": 0.01875, + "platform": "linux", + "uptime": 113956.51 + }, + { + "timestamp": 1754097179066, + "memoryTotal": 67266699264, + "memoryUsed": 33645662208, + "memoryFree": 33621037056, + "memoryUsagePercent": 50.01830411798812, + "memoryEfficiency": 49.98169588201188, + "cpuCount": 32, + "cpuLoad": 0.0115625, + "platform": "linux", + "uptime": 113986.54 + }, + { + "timestamp": 1754097209096, + "memoryTotal": 67266699264, + "memoryUsed": 33756086272, + "memoryFree": 33510612992, + "memoryUsagePercent": 50.18246270642521, + "memoryEfficiency": 49.81753729357479, + "cpuCount": 32, + "cpuLoad": 0.0171875, + "platform": "linux", + "uptime": 114016.57 + }, + { + "timestamp": 1754097239126, + "memoryTotal": 67266699264, + "memoryUsed": 33567125504, + "memoryFree": 33699573760, + "memoryUsagePercent": 49.901549906975376, + "memoryEfficiency": 50.098450093024624, + "cpuCount": 32, + "cpuLoad": 0.02125, + "platform": "linux", + "uptime": 114046.6 + }, + { + "timestamp": 1754097269156, + "memoryTotal": 67266699264, + "memoryUsed": 33597390848, + "memoryFree": 33669308416, + "memoryUsagePercent": 49.94654296346715, + "memoryEfficiency": 50.05345703653285, + "cpuCount": 32, + "cpuLoad": 0.0146875, + "platform": "linux", + "uptime": 114076.63 + }, + { + "timestamp": 1754097299177, + "memoryTotal": 67266699264, + "memoryUsed": 33667592192, + "memoryFree": 33599107072, + "memoryUsagePercent": 50.05090566413198, + "memoryEfficiency": 49.94909433586802, + "cpuCount": 32, + "cpuLoad": 0.0134375, + "platform": "linux", + "uptime": 114106.65 + }, + { + "timestamp": 1754097329182, + "memoryTotal": 67266699264, + "memoryUsed": 33610575872, + "memoryFree": 33656123392, + "memoryUsagePercent": 49.966144079835665, + "memoryEfficiency": 50.033855920164335, + "cpuCount": 32, + "cpuLoad": 0.0178125, + "platform": "linux", + "uptime": 114136.65 + }, + { + "timestamp": 1754097359209, + "memoryTotal": 67266699264, + "memoryUsed": 33581928448, + "memoryFree": 33684770816, + "memoryUsagePercent": 49.9235562550822, + "memoryEfficiency": 50.0764437449178, + "cpuCount": 32, + "cpuLoad": 0.0315625, + "platform": "linux", + "uptime": 114166.68 + }, + { + "timestamp": 1754097389238, + "memoryTotal": 67266699264, + "memoryUsed": 33626136576, + "memoryFree": 33640562688, + "memoryUsagePercent": 49.9892769288832, + "memoryEfficiency": 50.0107230711168, + "cpuCount": 32, + "cpuLoad": 0.0190625, + "platform": "linux", + "uptime": 114196.71 + }, + { + "timestamp": 1754097419268, + "memoryTotal": 67266699264, + "memoryUsed": 33656197120, + "memoryFree": 33610502144, + "memoryUsagePercent": 50.03396552566126, + "memoryEfficiency": 49.96603447433874, + "cpuCount": 32, + "cpuLoad": 0.031875, + "platform": "linux", + "uptime": 114226.74 + }, + { + "timestamp": 1754097449298, + "memoryTotal": 67266699264, + "memoryUsed": 33581449216, + "memoryFree": 33685250048, + "memoryUsagePercent": 49.92284381935212, + "memoryEfficiency": 50.07715618064788, + "cpuCount": 32, + "cpuLoad": 0.0278125, + "platform": "linux", + "uptime": 114256.77 + }, + { + "timestamp": 1754097479328, + "memoryTotal": 67266699264, + "memoryUsed": 33658241024, + "memoryFree": 33608458240, + "memoryUsagePercent": 50.03700403360407, + "memoryEfficiency": 49.96299596639593, + "cpuCount": 32, + "cpuLoad": 0.0271875, + "platform": "linux", + "uptime": 114286.8 + }, + { + "timestamp": 1754097509358, + "memoryTotal": 67266699264, + "memoryUsed": 33694334976, + "memoryFree": 33572364288, + "memoryUsagePercent": 50.09066201354797, + "memoryEfficiency": 49.90933798645203, + "cpuCount": 32, + "cpuLoad": 0.0184375, + "platform": "linux", + "uptime": 114316.83 + }, + { + "timestamp": 1754097539388, + "memoryTotal": 67266699264, + "memoryUsed": 33586032640, + "memoryFree": 33680666624, + "memoryUsagePercent": 49.9296576277449, + "memoryEfficiency": 50.0703423722551, + "cpuCount": 32, + "cpuLoad": 0.0340625, + "platform": "linux", + "uptime": 114346.86 + }, + { + "timestamp": 1754097569393, + "memoryTotal": 67266699264, + "memoryUsed": 33579102208, + "memoryFree": 33687597056, + "memoryUsagePercent": 49.91935471103302, + "memoryEfficiency": 50.08064528896698, + "cpuCount": 32, + "cpuLoad": 0.020625, + "platform": "linux", + "uptime": 114376.86 + }, + { + "timestamp": 1754097599422, + "memoryTotal": 67266699264, + "memoryUsed": 33625714688, + "memoryFree": 33640984576, + "memoryUsagePercent": 49.98864974187296, + "memoryEfficiency": 50.01135025812704, + "cpuCount": 32, + "cpuLoad": 0.0175, + "platform": "linux", + "uptime": 114406.89 + }, + { + "timestamp": 1754097629439, + "memoryTotal": 67266699264, + "memoryUsed": 33581748224, + "memoryFree": 33684951040, + "memoryUsagePercent": 49.923288330534135, + "memoryEfficiency": 50.076711669465865, + "cpuCount": 32, + "cpuLoad": 0.0165625, + "platform": "linux", + "uptime": 114436.91 + }, + { + "timestamp": 1754097659469, + "memoryTotal": 67266699264, + "memoryUsed": 33580974080, + "memoryFree": 33685725184, + "memoryUsagePercent": 49.92213747281632, + "memoryEfficiency": 50.07786252718368, + "cpuCount": 32, + "cpuLoad": 0.0184375, + "platform": "linux", + "uptime": 114466.94 + }, + { + "timestamp": 1754097689480, + "memoryTotal": 67266699264, + "memoryUsed": 33705000960, + "memoryFree": 33561698304, + "memoryUsagePercent": 50.106518275437885, + "memoryEfficiency": 49.893481724562115, + "cpuCount": 32, + "cpuLoad": 0.0178125, + "platform": "linux", + "uptime": 114496.95 + }, + { + "timestamp": 1754097719485, + "memoryTotal": 67266699264, + "memoryUsed": 33700831232, + "memoryFree": 33565868032, + "memoryUsagePercent": 50.10031947566679, + "memoryEfficiency": 49.89968052433321, + "cpuCount": 32, + "cpuLoad": 0.025625, + "platform": "linux", + "uptime": 114526.96 + }, + { + "timestamp": 1754097749516, + "memoryTotal": 67266699264, + "memoryUsed": 33612386304, + "memoryFree": 33654312960, + "memoryUsagePercent": 49.96883550370485, + "memoryEfficiency": 50.03116449629515, + "cpuCount": 32, + "cpuLoad": 0.0190625, + "platform": "linux", + "uptime": 114556.99 + }, + { + "timestamp": 1754097779546, + "memoryTotal": 67266699264, + "memoryUsed": 33658855424, + "memoryFree": 33607843840, + "memoryUsagePercent": 50.037917412745195, + "memoryEfficiency": 49.962082587254805, + "cpuCount": 32, + "cpuLoad": 0.0153125, + "platform": "linux", + "uptime": 114587.02 + }, + { + "timestamp": 1754097809564, + "memoryTotal": 67266699264, + "memoryUsed": 33672818688, + "memoryFree": 33593880576, + "memoryUsagePercent": 50.058675476025805, + "memoryEfficiency": 49.941324523974195, + "cpuCount": 32, + "cpuLoad": 0.01875, + "platform": "linux", + "uptime": 114617.04 + }, + { + "timestamp": 1754097839595, + "memoryTotal": 67266699264, + "memoryUsed": 33652219904, + "memoryFree": 33614479360, + "memoryUsagePercent": 50.02805291802106, + "memoryEfficiency": 49.97194708197894, + "cpuCount": 32, + "cpuLoad": 0.03875, + "platform": "linux", + "uptime": 114647.07 + }, + { + "timestamp": 1754097869600, + "memoryTotal": 67266699264, + "memoryUsed": 33615011840, + "memoryFree": 33651687424, + "memoryUsagePercent": 49.97273867723459, + "memoryEfficiency": 50.02726132276541, + "cpuCount": 32, + "cpuLoad": 0.0271875, + "platform": "linux", + "uptime": 114677.07 + }, + { + "timestamp": 1754097899608, + "memoryTotal": 67266699264, + "memoryUsed": 33706016768, + "memoryFree": 33560682496, + "memoryUsagePercent": 50.10802839561788, + "memoryEfficiency": 49.89197160438212, + "cpuCount": 32, + "cpuLoad": 0.0425, + "platform": "linux", + "uptime": 114707.08 + }, + { + "timestamp": 1754097929636, + "memoryTotal": 67266699264, + "memoryUsed": 33632907264, + "memoryFree": 33633792000, + "memoryUsagePercent": 49.99934236701839, + "memoryEfficiency": 50.00065763298161, + "cpuCount": 32, + "cpuLoad": 0.03625, + "platform": "linux", + "uptime": 114737.11 + }, + { + "timestamp": 1754097959657, + "memoryTotal": 67266699264, + "memoryUsed": 33665572864, + "memoryFree": 33601126400, + "memoryUsagePercent": 50.047903691354826, + "memoryEfficiency": 49.952096308645174, + "cpuCount": 32, + "cpuLoad": 0.024375, + "platform": "linux", + "uptime": 114767.13 + }, + { + "timestamp": 1754144952521, + "memoryTotal": 67266699264, + "memoryUsed": 33994915840, + "memoryFree": 33271783424, + "memoryUsagePercent": 50.53751144616294, + "memoryEfficiency": 49.46248855383706, + "cpuCount": 32, + "cpuLoad": 0.2590625, + "platform": "linux", + "uptime": 161758.76 + }, + { + "timestamp": 1754144982550, + "memoryTotal": 67266699264, + "memoryUsed": 33355243520, + "memoryFree": 33911455744, + "memoryUsagePercent": 49.58656197636735, + "memoryEfficiency": 50.41343802363265, + "cpuCount": 32, + "cpuLoad": 0.161875, + "platform": "linux", + "uptime": 161788.79 + }, + { + "timestamp": 1754145012550, + "memoryTotal": 67266699264, + "memoryUsed": 33150599168, + "memoryFree": 34116100096, + "memoryUsagePercent": 49.28233365204176, + "memoryEfficiency": 50.71766634795824, + "cpuCount": 32, + "cpuLoad": 0.1003125, + "platform": "linux", + "uptime": 161818.79 + }, + { + "timestamp": 1754145042577, + "memoryTotal": 67266699264, + "memoryUsed": 33053388800, + "memoryFree": 34213310464, + "memoryUsagePercent": 49.13781880433312, + "memoryEfficiency": 50.86218119566688, + "cpuCount": 32, + "cpuLoad": 0.0803125, + "platform": "linux", + "uptime": 161848.81 + }, + { + "timestamp": 1754145072581, + "memoryTotal": 67266699264, + "memoryUsed": 32942559232, + "memoryFree": 34324140032, + "memoryUsagePercent": 48.97305738566289, + "memoryEfficiency": 51.02694261433711, + "cpuCount": 32, + "cpuLoad": 0.08875, + "platform": "linux", + "uptime": 161878.82 + }, + { + "timestamp": 1754145102594, + "memoryTotal": 67266699264, + "memoryUsed": 32928940032, + "memoryFree": 34337759232, + "memoryUsagePercent": 48.952810814701316, + "memoryEfficiency": 51.047189185298684, + "cpuCount": 32, + "cpuLoad": 0.1046875, + "platform": "linux", + "uptime": 161908.83 + }, + { + "timestamp": 1754145132608, + "memoryTotal": 67266699264, + "memoryUsed": 32940814336, + "memoryFree": 34325884928, + "memoryUsagePercent": 48.970463388902104, + "memoryEfficiency": 51.029536611097896, + "cpuCount": 32, + "cpuLoad": 0.1346875, + "platform": "linux", + "uptime": 161938.85 + }, + { + "timestamp": 1754145162638, + "memoryTotal": 67266699264, + "memoryUsed": 33017712640, + "memoryFree": 34248986624, + "memoryUsagePercent": 49.08478192220518, + "memoryEfficiency": 50.91521807779482, + "cpuCount": 32, + "cpuLoad": 0.09125, + "platform": "linux", + "uptime": 161968.88 + }, + { + "timestamp": 1754145192667, + "memoryTotal": 67266699264, + "memoryUsed": 33139998720, + "memoryFree": 34126700544, + "memoryUsagePercent": 49.266574817260235, + "memoryEfficiency": 50.733425182739765, + "cpuCount": 32, + "cpuLoad": 0.06375, + "platform": "linux", + "uptime": 161998.91 + }, + { + "timestamp": 1754145222697, + "memoryTotal": 67266699264, + "memoryUsed": 33248264192, + "memoryFree": 34018435072, + "memoryUsagePercent": 49.42752440031484, + "memoryEfficiency": 50.57247559968516, + "cpuCount": 32, + "cpuLoad": 0.066875, + "platform": "linux", + "uptime": 162028.93 + }, + { + "timestamp": 1754145252701, + "memoryTotal": 67266699264, + "memoryUsed": 33041702912, + "memoryFree": 34224996352, + "memoryUsagePercent": 49.12044633306894, + "memoryEfficiency": 50.87955366693106, + "cpuCount": 32, + "cpuLoad": 0.054375, + "platform": "linux", + "uptime": 162058.94 + }, + { + "timestamp": 1754145282730, + "memoryTotal": 67266699264, + "memoryUsed": 33133084672, + "memoryFree": 34133614592, + "memoryUsagePercent": 49.25629625732545, + "memoryEfficiency": 50.74370374267455, + "cpuCount": 32, + "cpuLoad": 0.0521875, + "platform": "linux", + "uptime": 162088.97 + }, + { + "timestamp": 1754145312758, + "memoryTotal": 67266699264, + "memoryUsed": 33348337664, + "memoryFree": 33918361600, + "memoryUsagePercent": 49.57629559482112, + "memoryEfficiency": 50.42370440517888, + "cpuCount": 32, + "cpuLoad": 0.066875, + "platform": "linux", + "uptime": 162119 + }, + { + "timestamp": 1754145342778, + "memoryTotal": 67266699264, + "memoryUsed": 33063796736, + "memoryFree": 34202902528, + "memoryUsagePercent": 49.15329144698376, + "memoryEfficiency": 50.84670855301624, + "cpuCount": 32, + "cpuLoad": 0.056875, + "platform": "linux", + "uptime": 162149.02 + }, + { + "timestamp": 1754145372807, + "memoryTotal": 67266699264, + "memoryUsed": 32958738432, + "memoryFree": 34307960832, + "memoryUsagePercent": 48.99710970304583, + "memoryEfficiency": 51.00289029695417, + "cpuCount": 32, + "cpuLoad": 0.0384375, + "platform": "linux", + "uptime": 162179.05 + }, + { + "timestamp": 1754145402831, + "memoryTotal": 67266699264, + "memoryUsed": 32934944768, + "memoryFree": 34331754496, + "memoryUsagePercent": 48.96173757350723, + "memoryEfficiency": 51.03826242649277, + "cpuCount": 32, + "cpuLoad": 0.035625, + "platform": "linux", + "uptime": 162209.07 + }, + { + "timestamp": 1754145432854, + "memoryTotal": 67266699264, + "memoryUsed": 32948625408, + "memoryFree": 34318073856, + "memoryUsagePercent": 48.982075482382925, + "memoryEfficiency": 51.017924517617075, + "cpuCount": 32, + "cpuLoad": 0.0396875, + "platform": "linux", + "uptime": 162239.09 + }, + { + "timestamp": 1754145462858, + "memoryTotal": 67266699264, + "memoryUsed": 32971124736, + "memoryFree": 34295574528, + "memoryUsagePercent": 49.01552342653089, + "memoryEfficiency": 50.98447657346911, + "cpuCount": 32, + "cpuLoad": 0.0384375, + "platform": "linux", + "uptime": 162269.1 + }, + { + "timestamp": 1754145492887, + "memoryTotal": 67266699264, + "memoryUsed": 32998772736, + "memoryFree": 34267926528, + "memoryUsagePercent": 49.05662548788147, + "memoryEfficiency": 50.94337451211853, + "cpuCount": 32, + "cpuLoad": 0.0371875, + "platform": "linux", + "uptime": 162299.13 + }, + { + "timestamp": 1754145522908, + "memoryTotal": 67266699264, + "memoryUsed": 32998322176, + "memoryFree": 34268377088, + "memoryUsagePercent": 49.05595567651131, + "memoryEfficiency": 50.94404432348869, + "cpuCount": 32, + "cpuLoad": 0.03625, + "platform": "linux", + "uptime": 162329.15 + }, + { + "timestamp": 1754145552922, + "memoryTotal": 67266699264, + "memoryUsed": 33292541952, + "memoryFree": 33974157312, + "memoryUsagePercent": 49.493348590418506, + "memoryEfficiency": 50.506651409581494, + "cpuCount": 32, + "cpuLoad": 0.0340625, + "platform": "linux", + "uptime": 162359.16 + }, + { + "timestamp": 1754145582940, + "memoryTotal": 67266699264, + "memoryUsed": 33204154368, + "memoryFree": 34062544896, + "memoryUsagePercent": 49.361949867176406, + "memoryEfficiency": 50.638050132823594, + "cpuCount": 32, + "cpuLoad": 0.0253125, + "platform": "linux", + "uptime": 162389.18 + }, + { + "timestamp": 1754145612967, + "memoryTotal": 67266699264, + "memoryUsed": 33142366208, + "memoryFree": 34124333056, + "memoryUsagePercent": 49.2700943715507, + "memoryEfficiency": 50.7299056284493, + "cpuCount": 32, + "cpuLoad": 0.0265625, + "platform": "linux", + "uptime": 162419.21 + }, + { + "timestamp": 1754145643000, + "memoryTotal": 67266699264, + "memoryUsed": 33104384000, + "memoryFree": 34162315264, + "memoryUsagePercent": 49.21362927304641, + "memoryEfficiency": 50.78637072695359, + "cpuCount": 32, + "cpuLoad": 0.01625, + "platform": "linux", + "uptime": 162449.24 + }, + { + "timestamp": 1754145673030, + "memoryTotal": 67266699264, + "memoryUsed": 33068847104, + "memoryFree": 34197852160, + "memoryUsagePercent": 49.1607994235238, + "memoryEfficiency": 50.8392005764762, + "cpuCount": 32, + "cpuLoad": 0.0146875, + "platform": "linux", + "uptime": 162479.27 + }, + { + "timestamp": 1754145703060, + "memoryTotal": 67266699264, + "memoryUsed": 33126326272, + "memoryFree": 34140372992, + "memoryUsagePercent": 49.24624908677308, + "memoryEfficiency": 50.75375091322692, + "cpuCount": 32, + "cpuLoad": 0.025625, + "platform": "linux", + "uptime": 162509.3 + }, + { + "timestamp": 1754145733087, + "memoryTotal": 67266699264, + "memoryUsed": 33187151872, + "memoryFree": 34079547392, + "memoryUsagePercent": 49.33667362174437, + "memoryEfficiency": 50.66332637825563, + "cpuCount": 32, + "cpuLoad": 0.015625, + "platform": "linux", + "uptime": 162539.33 + }, + { + "timestamp": 1754145763100, + "memoryTotal": 67266699264, + "memoryUsed": 33421471744, + "memoryFree": 33845227520, + "memoryUsagePercent": 49.685018158586246, + "memoryEfficiency": 50.314981841413754, + "cpuCount": 32, + "cpuLoad": 0.0165625, + "platform": "linux", + "uptime": 162569.34 + }, + { + "timestamp": 1754145793124, + "memoryTotal": 67266699264, + "memoryUsed": 33593733120, + "memoryFree": 33672966144, + "memoryUsagePercent": 49.94110531298032, + "memoryEfficiency": 50.05889468701968, + "cpuCount": 32, + "cpuLoad": 0.046875, + "platform": "linux", + "uptime": 162599.36 + } +] \ No newline at end of file diff --git a/.claude-flow/metrics/task-metrics.json b/.claude-flow/metrics/task-metrics.json new file mode 100644 index 0000000..5da96cd --- /dev/null +++ b/.claude-flow/metrics/task-metrics.json @@ -0,0 +1,10 @@ +[ + { + "id": "cmd-hooks-1754092494202", + "type": "hooks", + "success": true, + "duration": 2.922643000000008, + "timestamp": 1754092494205, + "metadata": {} + } +] \ No newline at end of file diff --git a/src/knowledgebase_processor/models/kb_entities.py b/src/knowledgebase_processor/models/kb_entities.py index e79a9b6..e6ccb45 100644 --- a/src/knowledgebase_processor/models/kb_entities.py +++ b/src/knowledgebase_processor/models/kb_entities.py @@ -3,7 +3,6 @@ from pydantic import BaseModel, Field from rdflib.namespace import SDO as SCHEMA, RDFS, XSD, Namespace # Changed SCHEMA to SDO as SCHEMA -from rdflib import URIRef # Define custom namespace KB = Namespace("http://example.org/kb/") @@ -325,4 +324,53 @@ class Config: json_schema_extra = { "rdf_types": [KB.WikiLink], "rdfs_label_fallback_fields": ["alias", "target_path"], + } + + +class KbPlaceholderDocument(KbBaseEntity): + """ + Pydantic model for placeholder document entities. + + PlaceholderDocuments represent wiki links that reference non-existent documents. + They serve as forward references and can be promoted to actual KbDocument entities + when the referenced documents are created. + """ + title: str = Field( + ..., + description="The title extracted from the wiki link that references this placeholder.", + json_schema_extra={ + "rdf_property": SCHEMA.name, + "rdf_datatype": XSD.string, + }, + ) + normalized_name: str = Field( + ..., + description="The normalized name used to generate the deterministic ID.", + json_schema_extra={ + "rdf_property": KB.normalizedName, + "rdf_datatype": XSD.string, + }, + ) + referenced_by: Optional[List[str]] = Field( + default_factory=list, + description="List of document URIs that reference this placeholder.", + json_schema_extra={ + "rdf_property": KB.referencedBy, + "is_object_property": True, + "rdf_datatype": XSD.anyURI, + }, + ) + expected_path: Optional[str] = Field( + None, + description="The expected file path where this document should be created.", + json_schema_extra={ + "rdf_property": KB.expectedPath, + "rdf_datatype": XSD.string, + }, + ) + + class Config: + json_schema_extra = { + "rdf_types": [KB.PlaceholderDocument, SCHEMA.CreativeWork], + "rdfs_label_fallback_fields": ["title", "normalized_name"], } \ No newline at end of file diff --git a/src/knowledgebase_processor/services/entity_service.py b/src/knowledgebase_processor/services/entity_service.py index ff3d43b..8028b48 100644 --- a/src/knowledgebase_processor/services/entity_service.py +++ b/src/knowledgebase_processor/services/entity_service.py @@ -1,36 +1,48 @@ """Entity service for handling entity transformation and KB ID generation.""" -import uuid from typing import Optional from urllib.parse import quote from ..models.entities import ExtractedEntity from ..models.kb_entities import KbBaseEntity, KbPerson, KbOrganization, KbLocation, KbDateEntity, KB +from ..utils.id_generator import EntityIdGenerator from ..utils.logging import get_logger class EntityService: """Handles entity transformation and KB ID generation.""" - def __init__(self): + def __init__(self, base_uri: str = "http://example.org/kb/"): """Initialize the EntityService.""" self.logger = get_logger("knowledgebase_processor.services.entity") + self.id_generator = EntityIdGenerator(base_uri) def generate_kb_id(self, entity_type_str: str, text: str) -> str: - """Generates a unique knowledge base ID (URI) for an entity. + """Generates a deterministic knowledge base ID (URI) for an entity. + + Uses the new deterministic ID generation from ADR-0013. Args: entity_type_str: The type of entity (e.g., "Person", "Organization") text: The text content of the entity Returns: - A unique URI for the entity + A deterministic URI for the entity """ - # Simple slugification: replace non-alphanumeric with underscore - slug = "".join(c if c.isalnum() else "_" for c in text.lower()) - # Trim slug to avoid overly long URIs, e.g., first 50 chars - slug = slug[:50].strip('_') - return str(KB[f"{entity_type_str}/{slug}_{uuid.uuid4().hex[:8]}"]) + if entity_type_str.lower() == "person": + return self.id_generator.generate_person_id(text) + elif entity_type_str.lower() == "organization": + return self.id_generator.generate_organization_id(text) + elif entity_type_str.lower() == "location": + return self.id_generator.generate_location_id(text) + elif entity_type_str.lower() == "project": + return self.id_generator.generate_project_id(text) + elif entity_type_str.lower() == "tag": + return self.id_generator.generate_tag_id(text) + else: + # Fallback for unknown entity types - use generic approach + normalized_name = self.id_generator._normalize_text_for_id(text) + return str(KB[f"{entity_type_str}/{normalized_name}"]) def transform_to_kb_entity(self, extracted_entity: ExtractedEntity, @@ -48,12 +60,8 @@ def transform_to_kb_entity(self, entity_label_upper = extracted_entity.label.upper() self.logger.info(f"Processing entity: {kb_id_text} of type {entity_label_upper}") - # Create a full URI for the source document - # Replace spaces with underscores and quote for URI safety. - # Ensure consistent path separators (/) before quoting. - normalized_path = source_doc_relative_path.replace("\\", "/") - safe_path_segment = quote(normalized_path.replace(" ", "_")) - full_document_uri = str(KB[f"Document/{safe_path_segment}"]) + # Create a full URI for the source document using deterministic ID generation + full_document_uri = self.id_generator.generate_document_id(source_doc_relative_path) common_args = { "label": extracted_entity.text, diff --git a/src/knowledgebase_processor/utils/id_generator.py b/src/knowledgebase_processor/utils/id_generator.py index 5c4fffd..90b7ce0 100644 --- a/src/knowledgebase_processor/utils/id_generator.py +++ b/src/knowledgebase_processor/utils/id_generator.py @@ -1,11 +1,19 @@ import hashlib import base64 import re +import unicodedata from urllib.parse import urljoin, quote class EntityIdGenerator: """ Generates deterministic, unique identifiers for knowledge base entities. + + Implements the normalization rules from ADR-0013: + 1. Unicode NFKD normalization + 2. Convert to lowercase + 3. Replace non-alphanumeric with hyphens + 4. Remove consecutive hyphens + 5. Trim hyphens from start/end """ def __init__(self, base_url: str): @@ -19,6 +27,36 @@ def __init__(self, base_url: str): base_url += '/' self.base_url = base_url + def _normalize_text_for_id(self, text: str) -> str: + """ + Normalizes text for use in deterministic IDs according to ADR-0013 rules. + + Args: + text: The text to normalize + + Returns: + Normalized text suitable for use in IDs + """ + if not text: + return "" + + # 1. Unicode NFKD normalization + normalized = unicodedata.normalize('NFKD', text) + + # 2. Convert to lowercase + normalized = normalized.lower() + + # 3. Replace non-alphanumeric with hyphens + normalized = re.sub(r'[^a-z0-9]', '-', normalized) + + # 4. Remove consecutive hyphens + normalized = re.sub(r'-+', '-', normalized) + + # 5. Trim hyphens from start/end + normalized = normalized.strip('-') + + return normalized + def _generate_deterministic_hash(self, *parts: str) -> str: """ Creates a short, URL-safe hash from a set of input strings. @@ -29,19 +67,116 @@ def _generate_deterministic_hash(self, *parts: str) -> str: # Use URL-safe base64 encoding and take the first 16 characters for a reasonable length return base64.urlsafe_b64encode(sha256_hash).decode('utf-8').rstrip('=')[:16] - def generate_document_id(self, normalized_path: str) -> str: + def generate_document_id(self, file_path: str) -> str: """ Generates a unique, deterministic URI for a document entity. + + Uses the ADR-0013 pattern: /Document/{normalized-file-path} Args: - normalized_path: The normalized, unique path of the document. + file_path: The original file path of the document. Returns: A full URI for the document entity. """ - # Sanitize the path for use in a URI - safe_path = quote(normalized_path) - return urljoin(self.base_url, f"documents/{safe_path}") + # Normalize the file path using ADR-0013 rules + normalized_path = self._normalize_text_for_id(file_path) + + # Remove file extension for the ID + if '.' in normalized_path: + normalized_path = normalized_path.rsplit('.', 1)[0] + + return urljoin(self.base_url, f"Document/{normalized_path}") + + def generate_placeholder_document_id(self, title: str) -> str: + """ + Generates a unique, deterministic URI for a placeholder document entity. + + Uses the ADR-0013 pattern: /PlaceholderDocument/{normalized-name} + + Args: + title: The title or name of the placeholder document. + + Returns: + A full URI for the placeholder document entity. + """ + normalized_name = self._normalize_text_for_id(title) + return urljoin(self.base_url, f"PlaceholderDocument/{normalized_name}") + + def generate_person_id(self, name: str) -> str: + """ + Generates a unique, deterministic URI for a person entity. + + Uses the ADR-0013 pattern: /Person/{normalized-name} + + Args: + name: The person's name. + + Returns: + A full URI for the person entity. + """ + normalized_name = self._normalize_text_for_id(name) + return urljoin(self.base_url, f"Person/{normalized_name}") + + def generate_organization_id(self, name: str) -> str: + """ + Generates a unique, deterministic URI for an organization entity. + + Uses the ADR-0013 pattern: /Organization/{normalized-name} + + Args: + name: The organization's name. + + Returns: + A full URI for the organization entity. + """ + normalized_name = self._normalize_text_for_id(name) + return urljoin(self.base_url, f"Organization/{normalized_name}") + + def generate_location_id(self, name: str) -> str: + """ + Generates a unique, deterministic URI for a location entity. + + Uses the ADR-0013 pattern: /Location/{normalized-name} + + Args: + name: The location's name. + + Returns: + A full URI for the location entity. + """ + normalized_name = self._normalize_text_for_id(name) + return urljoin(self.base_url, f"Location/{normalized_name}") + + def generate_project_id(self, name: str) -> str: + """ + Generates a unique, deterministic URI for a project entity. + + Uses the ADR-0013 pattern: /Project/{normalized-name} + + Args: + name: The project's name. + + Returns: + A full URI for the project entity. + """ + normalized_name = self._normalize_text_for_id(name) + return urljoin(self.base_url, f"Project/{normalized_name}") + + def generate_tag_id(self, name: str) -> str: + """ + Generates a unique, deterministic URI for a tag entity. + + Uses the ADR-0013 pattern: /Tag/{normalized-name} + + Args: + name: The tag's name. + + Returns: + A full URI for the tag entity. + """ + normalized_name = self._normalize_text_for_id(name) + return urljoin(self.base_url, f"Tag/{normalized_name}") def generate_wikilink_id(self, source_document_id: str, original_text: str) -> str: """ From fd180c3621ddd7b45a6600a09c1eadc515e5d4ff Mon Sep 17 00:00:00 2001 From: David Stenglein Date: Tue, 12 Aug 2025 20:09:42 +0000 Subject: [PATCH 2/4] Remove claude-flow metrics files Signed-off-by: David Stenglein --- .claude-flow/metrics/agent-metrics.json | 1 - .claude-flow/metrics/performance.json | 9 - .claude-flow/metrics/system-metrics.json | 2810 ---------------------- .claude-flow/metrics/task-metrics.json | 10 - 4 files changed, 2830 deletions(-) delete mode 100644 .claude-flow/metrics/agent-metrics.json delete mode 100644 .claude-flow/metrics/performance.json delete mode 100644 .claude-flow/metrics/system-metrics.json delete mode 100644 .claude-flow/metrics/task-metrics.json diff --git a/.claude-flow/metrics/agent-metrics.json b/.claude-flow/metrics/agent-metrics.json deleted file mode 100644 index 9e26dfe..0000000 --- a/.claude-flow/metrics/agent-metrics.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/.claude-flow/metrics/performance.json b/.claude-flow/metrics/performance.json deleted file mode 100644 index c4f93b8..0000000 --- a/.claude-flow/metrics/performance.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "startTime": 1754092494156, - "totalTasks": 1, - "successfulTasks": 1, - "failedTasks": 0, - "totalAgents": 0, - "activeAgents": 0, - "neuralEvents": 0 -} \ No newline at end of file diff --git a/.claude-flow/metrics/system-metrics.json b/.claude-flow/metrics/system-metrics.json deleted file mode 100644 index ef13f58..0000000 --- a/.claude-flow/metrics/system-metrics.json +++ /dev/null @@ -1,2810 +0,0 @@ -[ - { - "timestamp": 1754091834499, - "memoryTotal": 67266699264, - "memoryUsed": 35351740416, - "memoryFree": 31914958848, - "memoryUsagePercent": 52.554593584644124, - "memoryEfficiency": 47.445406415355876, - "cpuCount": 32, - "cpuLoad": 0.0665625, - "platform": "linux", - "uptime": 108641.97 - }, - { - "timestamp": 1754091864501, - "memoryTotal": 67266699264, - "memoryUsed": 34797871104, - "memoryFree": 32468828160, - "memoryUsagePercent": 51.731200556503644, - "memoryEfficiency": 48.268799443496356, - "cpuCount": 32, - "cpuLoad": 0.0575, - "platform": "linux", - "uptime": 108671.97 - }, - { - "timestamp": 1754091894528, - "memoryTotal": 67266699264, - "memoryUsed": 34822815744, - "memoryFree": 32443883520, - "memoryUsagePercent": 51.768283749633284, - "memoryEfficiency": 48.231716250366716, - "cpuCount": 32, - "cpuLoad": 0.041875, - "platform": "linux", - "uptime": 108702 - }, - { - "timestamp": 1754091924560, - "memoryTotal": 67266699264, - "memoryUsed": 35070443520, - "memoryFree": 32196255744, - "memoryUsagePercent": 52.1364120786719, - "memoryEfficiency": 47.8635879213281, - "cpuCount": 32, - "cpuLoad": 0.0296875, - "platform": "linux", - "uptime": 108732.03 - }, - { - "timestamp": 1754091954586, - "memoryTotal": 67266699264, - "memoryUsed": 34834075648, - "memoryFree": 32432623616, - "memoryUsagePercent": 51.78502294469295, - "memoryEfficiency": 48.21497705530705, - "cpuCount": 32, - "cpuLoad": 0.035625, - "platform": "linux", - "uptime": 108762.06 - }, - { - "timestamp": 1754091984612, - "memoryTotal": 67266699264, - "memoryUsed": 35001323520, - "memoryFree": 32265375744, - "memoryUsagePercent": 52.033656925295446, - "memoryEfficiency": 47.966343074704554, - "cpuCount": 32, - "cpuLoad": 0.0284375, - "platform": "linux", - "uptime": 108792.08 - }, - { - "timestamp": 1754092014644, - "memoryTotal": 67266699264, - "memoryUsed": 35250536448, - "memoryFree": 32016162816, - "memoryUsagePercent": 52.40414177251817, - "memoryEfficiency": 47.59585822748183, - "cpuCount": 32, - "cpuLoad": 0.02125, - "platform": "linux", - "uptime": 108822.12 - }, - { - "timestamp": 1754092044675, - "memoryTotal": 67266699264, - "memoryUsed": 35285852160, - "memoryFree": 31980847104, - "memoryUsagePercent": 52.45664280554998, - "memoryEfficiency": 47.54335719445002, - "cpuCount": 32, - "cpuLoad": 0.02875, - "platform": "linux", - "uptime": 108852.15 - }, - { - "timestamp": 1754092074702, - "memoryTotal": 67266699264, - "memoryUsed": 35469750272, - "memoryFree": 31796948992, - "memoryUsagePercent": 52.73002936087695, - "memoryEfficiency": 47.26997063912305, - "cpuCount": 32, - "cpuLoad": 0.056875, - "platform": "linux", - "uptime": 108882.17 - }, - { - "timestamp": 1754092104738, - "memoryTotal": 67266699264, - "memoryUsed": 35573612544, - "memoryFree": 31693086720, - "memoryUsagePercent": 52.884433060086835, - "memoryEfficiency": 47.115566939913165, - "cpuCount": 32, - "cpuLoad": 0.0471875, - "platform": "linux", - "uptime": 108912.21 - }, - { - "timestamp": 1754092134762, - "memoryTotal": 67266699264, - "memoryUsed": 35459903488, - "memoryFree": 31806795776, - "memoryUsagePercent": 52.71539093784187, - "memoryEfficiency": 47.28460906215813, - "cpuCount": 32, - "cpuLoad": 0.04625, - "platform": "linux", - "uptime": 108942.23 - }, - { - "timestamp": 1754092164792, - "memoryTotal": 67266699264, - "memoryUsed": 35994103808, - "memoryFree": 31272595456, - "memoryUsagePercent": 53.50954365507783, - "memoryEfficiency": 46.49045634492217, - "cpuCount": 32, - "cpuLoad": 0.0584375, - "platform": "linux", - "uptime": 108972.26 - }, - { - "timestamp": 1754092194820, - "memoryTotal": 67266699264, - "memoryUsed": 35888095232, - "memoryFree": 31378604032, - "memoryUsagePercent": 53.3519492180683, - "memoryEfficiency": 46.6480507819317, - "cpuCount": 32, - "cpuLoad": 0.06125, - "platform": "linux", - "uptime": 109002.29 - }, - { - "timestamp": 1754092224853, - "memoryTotal": 67266699264, - "memoryUsed": 35843223552, - "memoryFree": 31423475712, - "memoryUsagePercent": 53.285242094794874, - "memoryEfficiency": 46.714757905205126, - "cpuCount": 32, - "cpuLoad": 0.0753125, - "platform": "linux", - "uptime": 109032.32 - }, - { - "timestamp": 1754092254880, - "memoryTotal": 67266699264, - "memoryUsed": 35995881472, - "memoryFree": 31270817792, - "memoryUsagePercent": 53.51218636539282, - "memoryEfficiency": 46.48781363460718, - "cpuCount": 32, - "cpuLoad": 0.0759375, - "platform": "linux", - "uptime": 109062.35 - }, - { - "timestamp": 1754092284910, - "memoryTotal": 67266699264, - "memoryUsed": 36009459712, - "memoryFree": 31257239552, - "memoryUsagePercent": 53.53237204441166, - "memoryEfficiency": 46.46762795558834, - "cpuCount": 32, - "cpuLoad": 0.069375, - "platform": "linux", - "uptime": 109092.38 - }, - { - "timestamp": 1754092314920, - "memoryTotal": 67266699264, - "memoryUsed": 35993616384, - "memoryFree": 31273082880, - "memoryUsagePercent": 53.50881904095921, - "memoryEfficiency": 46.49118095904079, - "cpuCount": 32, - "cpuLoad": 0.0565625, - "platform": "linux", - "uptime": 109122.39 - }, - { - "timestamp": 1754092344949, - "memoryTotal": 67266699264, - "memoryUsed": 35907317760, - "memoryFree": 31359381504, - "memoryUsagePercent": 53.38052580679693, - "memoryEfficiency": 46.61947419320307, - "cpuCount": 32, - "cpuLoad": 0.0540625, - "platform": "linux", - "uptime": 109152.42 - }, - { - "timestamp": 1754092374979, - "memoryTotal": 67266699264, - "memoryUsed": 36074455040, - "memoryFree": 31192244224, - "memoryUsagePercent": 53.628995379154034, - "memoryEfficiency": 46.371004620845966, - "cpuCount": 32, - "cpuLoad": 0.0575, - "platform": "linux", - "uptime": 109182.45 - }, - { - "timestamp": 1754092405012, - "memoryTotal": 67266699264, - "memoryUsed": 36151664640, - "memoryFree": 31115034624, - "memoryUsagePercent": 53.74377669122195, - "memoryEfficiency": 46.25622330877805, - "cpuCount": 32, - "cpuLoad": 0.04875, - "platform": "linux", - "uptime": 109212.48 - }, - { - "timestamp": 1754092435039, - "memoryTotal": 67266699264, - "memoryUsed": 36074164224, - "memoryFree": 31192535040, - "memoryUsagePercent": 53.62856304636057, - "memoryEfficiency": 46.37143695363943, - "cpuCount": 32, - "cpuLoad": 0.0525, - "platform": "linux", - "uptime": 109242.51 - }, - { - "timestamp": 1754092465070, - "memoryTotal": 67266699264, - "memoryUsed": 36065153024, - "memoryFree": 31201546240, - "memoryUsagePercent": 53.61516681895742, - "memoryEfficiency": 46.38483318104258, - "cpuCount": 32, - "cpuLoad": 0.0665625, - "platform": "linux", - "uptime": 109272.54 - }, - { - "timestamp": 1754092495099, - "memoryTotal": 67266699264, - "memoryUsed": 36438896640, - "memoryFree": 30827802624, - "memoryUsagePercent": 54.170781439697436, - "memoryEfficiency": 45.829218560302564, - "cpuCount": 32, - "cpuLoad": 0.07, - "platform": "linux", - "uptime": 109302.57 - }, - { - "timestamp": 1754092525132, - "memoryTotal": 67266699264, - "memoryUsed": 36184272896, - "memoryFree": 31082426368, - "memoryUsagePercent": 53.792252766838544, - "memoryEfficiency": 46.207747233161456, - "cpuCount": 32, - "cpuLoad": 0.088125, - "platform": "linux", - "uptime": 109332.6 - }, - { - "timestamp": 1754092555162, - "memoryTotal": 67266699264, - "memoryUsed": 35895660544, - "memoryFree": 31371038720, - "memoryUsagePercent": 53.36319595989267, - "memoryEfficiency": 46.63680404010733, - "cpuCount": 32, - "cpuLoad": 0.0828125, - "platform": "linux", - "uptime": 109362.63 - }, - { - "timestamp": 1754092585192, - "memoryTotal": 67266699264, - "memoryUsed": 35975364608, - "memoryFree": 31291334656, - "memoryUsagePercent": 53.48168559127355, - "memoryEfficiency": 46.51831440872645, - "cpuCount": 32, - "cpuLoad": 0.073125, - "platform": "linux", - "uptime": 109392.66 - }, - { - "timestamp": 1754092615222, - "memoryTotal": 67266699264, - "memoryUsed": 36042452992, - "memoryFree": 31224246272, - "memoryUsagePercent": 53.58142050429002, - "memoryEfficiency": 46.41857949570998, - "cpuCount": 32, - "cpuLoad": 0.0821875, - "platform": "linux", - "uptime": 109422.69 - }, - { - "timestamp": 1754092645251, - "memoryTotal": 67266699264, - "memoryUsed": 35913019392, - "memoryFree": 31353679872, - "memoryUsagePercent": 53.389001965226555, - "memoryEfficiency": 46.610998034773445, - "cpuCount": 32, - "cpuLoad": 0.0740625, - "platform": "linux", - "uptime": 109452.72 - }, - { - "timestamp": 1754092675272, - "memoryTotal": 67266699264, - "memoryUsed": 35975065600, - "memoryFree": 31291633664, - "memoryUsagePercent": 53.481241080091536, - "memoryEfficiency": 46.518758919908464, - "cpuCount": 32, - "cpuLoad": 0.07375, - "platform": "linux", - "uptime": 109482.74 - }, - { - "timestamp": 1754092705301, - "memoryTotal": 67266699264, - "memoryUsed": 36010532864, - "memoryFree": 31256166400, - "memoryUsagePercent": 53.53396741331149, - "memoryEfficiency": 46.46603258668851, - "cpuCount": 32, - "cpuLoad": 0.0784375, - "platform": "linux", - "uptime": 109512.77 - }, - { - "timestamp": 1754092735313, - "memoryTotal": 67266699264, - "memoryUsed": 35871727616, - "memoryFree": 31394971648, - "memoryUsagePercent": 53.32761679774875, - "memoryEfficiency": 46.67238320225125, - "cpuCount": 32, - "cpuLoad": 0.0496875, - "platform": "linux", - "uptime": 109542.78 - }, - { - "timestamp": 1754092765344, - "memoryTotal": 67266699264, - "memoryUsed": 35867475968, - "memoryFree": 31399223296, - "memoryUsagePercent": 53.32129621409217, - "memoryEfficiency": 46.67870378590783, - "cpuCount": 32, - "cpuLoad": 0.041875, - "platform": "linux", - "uptime": 109572.82 - }, - { - "timestamp": 1754092795373, - "memoryTotal": 67266699264, - "memoryUsed": 35940323328, - "memoryFree": 31326375936, - "memoryUsagePercent": 53.429592534258106, - "memoryEfficiency": 46.570407465741894, - "cpuCount": 32, - "cpuLoad": 0.0403125, - "platform": "linux", - "uptime": 109602.84 - }, - { - "timestamp": 1754092825404, - "memoryTotal": 67266699264, - "memoryUsed": 35863105536, - "memoryFree": 31403593728, - "memoryUsagePercent": 53.31479904380164, - "memoryEfficiency": 46.68520095619836, - "cpuCount": 32, - "cpuLoad": 0.0315625, - "platform": "linux", - "uptime": 109632.88 - }, - { - "timestamp": 1754092855431, - "memoryTotal": 67266699264, - "memoryUsed": 35886145536, - "memoryFree": 31380553728, - "memoryUsagePercent": 53.349050761593794, - "memoryEfficiency": 46.650949238406206, - "cpuCount": 32, - "cpuLoad": 0.0278125, - "platform": "linux", - "uptime": 109662.9 - }, - { - "timestamp": 1754092885450, - "memoryTotal": 67266699264, - "memoryUsed": 35916144640, - "memoryFree": 31350554624, - "memoryUsagePercent": 53.39364802045774, - "memoryEfficiency": 46.60635197954226, - "cpuCount": 32, - "cpuLoad": 0.02375, - "platform": "linux", - "uptime": 109692.92 - }, - { - "timestamp": 1754092915475, - "memoryTotal": 67266699264, - "memoryUsed": 35947778048, - "memoryFree": 31318921216, - "memoryUsagePercent": 53.44067486783708, - "memoryEfficiency": 46.55932513216292, - "cpuCount": 32, - "cpuLoad": 0.0165625, - "platform": "linux", - "uptime": 109722.95 - }, - { - "timestamp": 1754092945505, - "memoryTotal": 67266699264, - "memoryUsed": 35876978688, - "memoryFree": 31389720576, - "memoryUsagePercent": 53.335423144808225, - "memoryEfficiency": 46.664576855191775, - "cpuCount": 32, - "cpuLoad": 0.01, - "platform": "linux", - "uptime": 109752.98 - }, - { - "timestamp": 1754092975533, - "memoryTotal": 67266699264, - "memoryUsed": 35897630720, - "memoryFree": 31369068544, - "memoryUsagePercent": 53.36612486233854, - "memoryEfficiency": 46.63387513766146, - "cpuCount": 32, - "cpuLoad": 0.010625, - "platform": "linux", - "uptime": 109783 - }, - { - "timestamp": 1754093005554, - "memoryTotal": 67266699264, - "memoryUsed": 35981418496, - "memoryFree": 31285280768, - "memoryUsagePercent": 53.490685420410756, - "memoryEfficiency": 46.509314579589244, - "cpuCount": 32, - "cpuLoad": 0.0121875, - "platform": "linux", - "uptime": 109813.03 - }, - { - "timestamp": 1754093035584, - "memoryTotal": 67266699264, - "memoryUsed": 35874639872, - "memoryFree": 31392059392, - "memoryUsagePercent": 53.33194621487768, - "memoryEfficiency": 46.66805378512232, - "cpuCount": 32, - "cpuLoad": 0.0109375, - "platform": "linux", - "uptime": 109843.06 - }, - { - "timestamp": 1754093065614, - "memoryTotal": 67266699264, - "memoryUsed": 36049305600, - "memoryFree": 31217393664, - "memoryUsagePercent": 53.591607726310684, - "memoryEfficiency": 46.408392273689316, - "cpuCount": 32, - "cpuLoad": 0.039375, - "platform": "linux", - "uptime": 109873.09 - }, - { - "timestamp": 1754093095619, - "memoryTotal": 67266699264, - "memoryUsed": 35900170240, - "memoryFree": 31366529024, - "memoryUsagePercent": 53.36990016278852, - "memoryEfficiency": 46.63009983721148, - "cpuCount": 32, - "cpuLoad": 0.0334375, - "platform": "linux", - "uptime": 109903.09 - }, - { - "timestamp": 1754093125650, - "memoryTotal": 67266699264, - "memoryUsed": 35754000384, - "memoryFree": 31512698880, - "memoryUsagePercent": 53.15260117592084, - "memoryEfficiency": 46.84739882407916, - "cpuCount": 32, - "cpuLoad": 0.0521875, - "platform": "linux", - "uptime": 109933.12 - }, - { - "timestamp": 1754093155651, - "memoryTotal": 67266699264, - "memoryUsed": 35735474176, - "memoryFree": 31531225088, - "memoryUsagePercent": 53.12505975021882, - "memoryEfficiency": 46.87494024978118, - "cpuCount": 32, - "cpuLoad": 0.0603125, - "platform": "linux", - "uptime": 109963.12 - }, - { - "timestamp": 1754093185680, - "memoryTotal": 67266699264, - "memoryUsed": 35786694656, - "memoryFree": 31480004608, - "memoryUsagePercent": 53.20120512461719, - "memoryEfficiency": 46.79879487538281, - "cpuCount": 32, - "cpuLoad": 0.04, - "platform": "linux", - "uptime": 109993.15 - }, - { - "timestamp": 1754093215710, - "memoryTotal": 67266699264, - "memoryUsed": 35910774784, - "memoryFree": 31355924480, - "memoryUsagePercent": 53.38566508676432, - "memoryEfficiency": 46.61433491323568, - "cpuCount": 32, - "cpuLoad": 0.0421875, - "platform": "linux", - "uptime": 110023.18 - }, - { - "timestamp": 1754093245740, - "memoryTotal": 67266699264, - "memoryUsed": 35785711616, - "memoryFree": 31480987648, - "memoryUsagePercent": 53.19974371799139, - "memoryEfficiency": 46.80025628200861, - "cpuCount": 32, - "cpuLoad": 0.0390625, - "platform": "linux", - "uptime": 110053.21 - }, - { - "timestamp": 1754093275771, - "memoryTotal": 67266699264, - "memoryUsed": 35793174528, - "memoryFree": 31473524736, - "memoryUsagePercent": 53.21083822995891, - "memoryEfficiency": 46.78916177004109, - "cpuCount": 32, - "cpuLoad": 0.0428125, - "platform": "linux", - "uptime": 110083.24 - }, - { - "timestamp": 1754093305800, - "memoryTotal": 67266699264, - "memoryUsed": 35813449728, - "memoryFree": 31453249536, - "memoryUsagePercent": 53.240979741616, - "memoryEfficiency": 46.759020258384, - "cpuCount": 32, - "cpuLoad": 0.03625, - "platform": "linux", - "uptime": 110113.27 - }, - { - "timestamp": 1754093335830, - "memoryTotal": 67266699264, - "memoryUsed": 35803193344, - "memoryFree": 31463505920, - "memoryUsagePercent": 53.2257323991535, - "memoryEfficiency": 46.7742676008465, - "cpuCount": 32, - "cpuLoad": 0.026875, - "platform": "linux", - "uptime": 110143.3 - }, - { - "timestamp": 1754093365860, - "memoryTotal": 67266699264, - "memoryUsed": 35726860288, - "memoryFree": 31539838976, - "memoryUsagePercent": 53.11225417466026, - "memoryEfficiency": 46.88774582533974, - "cpuCount": 32, - "cpuLoad": 0.0246875, - "platform": "linux", - "uptime": 110173.33 - }, - { - "timestamp": 1754093395885, - "memoryTotal": 67266699264, - "memoryUsed": 35785801728, - "memoryFree": 31480897536, - "memoryUsagePercent": 53.199877680265416, - "memoryEfficiency": 46.800122319734584, - "cpuCount": 32, - "cpuLoad": 0.0209375, - "platform": "linux", - "uptime": 110203.36 - }, - { - "timestamp": 1754093425897, - "memoryTotal": 67266699264, - "memoryUsed": 35778179072, - "memoryFree": 31488520192, - "memoryUsagePercent": 53.18854568972121, - "memoryEfficiency": 46.81145431027879, - "cpuCount": 32, - "cpuLoad": 0.0184375, - "platform": "linux", - "uptime": 110233.37 - }, - { - "timestamp": 1754093455927, - "memoryTotal": 67266699264, - "memoryUsed": 35727470592, - "memoryFree": 31539228672, - "memoryUsagePercent": 53.1131614646071, - "memoryEfficiency": 46.8868385353929, - "cpuCount": 32, - "cpuLoad": 0.0328125, - "platform": "linux", - "uptime": 110263.4 - }, - { - "timestamp": 1754093485930, - "memoryTotal": 67266699264, - "memoryUsed": 35772719104, - "memoryFree": 31493980160, - "memoryUsagePercent": 53.180428793753755, - "memoryEfficiency": 46.819571206246245, - "cpuCount": 32, - "cpuLoad": 0.0371875, - "platform": "linux", - "uptime": 110293.4 - }, - { - "timestamp": 1754093515948, - "memoryTotal": 67266699264, - "memoryUsed": 35922325504, - "memoryFree": 31344373760, - "memoryUsagePercent": 53.402836614617456, - "memoryEfficiency": 46.597163385382544, - "cpuCount": 32, - "cpuLoad": 0.024375, - "platform": "linux", - "uptime": 110323.42 - }, - { - "timestamp": 1754093545978, - "memoryTotal": 67266699264, - "memoryUsed": 35772805120, - "memoryFree": 31493894144, - "memoryUsagePercent": 53.18055666683351, - "memoryEfficiency": 46.81944333316649, - "cpuCount": 32, - "cpuLoad": 0.0296875, - "platform": "linux", - "uptime": 110353.45 - }, - { - "timestamp": 1754093576009, - "memoryTotal": 67266699264, - "memoryUsed": 35863244800, - "memoryFree": 31403454464, - "memoryUsagePercent": 53.315006076406966, - "memoryEfficiency": 46.684993923593034, - "cpuCount": 32, - "cpuLoad": 0.018125, - "platform": "linux", - "uptime": 110383.48 - }, - { - "timestamp": 1754093606034, - "memoryTotal": 67266699264, - "memoryUsed": 36081737728, - "memoryFree": 31184961536, - "memoryUsagePercent": 53.639821966573486, - "memoryEfficiency": 46.360178033426514, - "cpuCount": 32, - "cpuLoad": 0.018125, - "platform": "linux", - "uptime": 110413.51 - }, - { - "timestamp": 1754093636064, - "memoryTotal": 67266699264, - "memoryUsed": 35782500352, - "memoryFree": 31484198912, - "memoryUsagePercent": 53.19496978968045, - "memoryEfficiency": 46.80503021031955, - "cpuCount": 32, - "cpuLoad": 0.0325, - "platform": "linux", - "uptime": 110443.54 - }, - { - "timestamp": 1754093666096, - "memoryTotal": 67266699264, - "memoryUsed": 35809570816, - "memoryFree": 31457128448, - "memoryUsagePercent": 53.23521327463837, - "memoryEfficiency": 46.76478672536163, - "cpuCount": 32, - "cpuLoad": 0.023125, - "platform": "linux", - "uptime": 110473.57 - }, - { - "timestamp": 1754093696126, - "memoryTotal": 67266699264, - "memoryUsed": 35777552384, - "memoryFree": 31489146880, - "memoryUsagePercent": 53.18761404299727, - "memoryEfficiency": 46.81238595700273, - "cpuCount": 32, - "cpuLoad": 0.018125, - "platform": "linux", - "uptime": 110503.6 - }, - { - "timestamp": 1754093726155, - "memoryTotal": 67266699264, - "memoryUsed": 35728539648, - "memoryFree": 31538159616, - "memoryUsagePercent": 53.114750744312666, - "memoryEfficiency": 46.885249255687334, - "cpuCount": 32, - "cpuLoad": 0.026875, - "platform": "linux", - "uptime": 110533.63 - }, - { - "timestamp": 1754093756183, - "memoryTotal": 67266699264, - "memoryUsed": 35699859456, - "memoryFree": 31566839808, - "memoryUsagePercent": 53.072114206005, - "memoryEfficiency": 46.927885793995, - "cpuCount": 32, - "cpuLoad": 0.0184375, - "platform": "linux", - "uptime": 110563.65 - }, - { - "timestamp": 1754093786210, - "memoryTotal": 67266699264, - "memoryUsed": 35769135104, - "memoryFree": 31497564160, - "memoryUsagePercent": 53.17510074876386, - "memoryEfficiency": 46.82489925123614, - "cpuCount": 32, - "cpuLoad": 0.031875, - "platform": "linux", - "uptime": 110593.68 - }, - { - "timestamp": 1754093816241, - "memoryTotal": 67266699264, - "memoryUsed": 35776401408, - "memoryFree": 31490297856, - "memoryUsagePercent": 53.18590297940622, - "memoryEfficiency": 46.81409702059378, - "cpuCount": 32, - "cpuLoad": 0.0359375, - "platform": "linux", - "uptime": 110623.71 - }, - { - "timestamp": 1754093846272, - "memoryTotal": 67266699264, - "memoryUsed": 35730440192, - "memoryFree": 31536259072, - "memoryUsagePercent": 53.117576130455866, - "memoryEfficiency": 46.882423869544134, - "cpuCount": 32, - "cpuLoad": 0.0290625, - "platform": "linux", - "uptime": 110653.74 - }, - { - "timestamp": 1754093876301, - "memoryTotal": 67266699264, - "memoryUsed": 35882475520, - "memoryFree": 31384223744, - "memoryUsagePercent": 53.343594843524144, - "memoryEfficiency": 46.656405156475856, - "cpuCount": 32, - "cpuLoad": 0.0265625, - "platform": "linux", - "uptime": 110683.77 - }, - { - "timestamp": 1754093906331, - "memoryTotal": 67266699264, - "memoryUsed": 35851157504, - "memoryFree": 31415541760, - "memoryUsagePercent": 53.297036864103916, - "memoryEfficiency": 46.702963135896084, - "cpuCount": 32, - "cpuLoad": 0.033125, - "platform": "linux", - "uptime": 110713.8 - }, - { - "timestamp": 1754093936344, - "memoryTotal": 67266699264, - "memoryUsed": 35764867072, - "memoryFree": 31501832192, - "memoryUsagePercent": 53.16875580833019, - "memoryEfficiency": 46.83124419166981, - "cpuCount": 32, - "cpuLoad": 0.02375, - "platform": "linux", - "uptime": 110743.82 - }, - { - "timestamp": 1754093966356, - "memoryTotal": 67266699264, - "memoryUsed": 35738398720, - "memoryFree": 31528300544, - "memoryUsagePercent": 53.12940743493056, - "memoryEfficiency": 46.87059256506944, - "cpuCount": 32, - "cpuLoad": 0.0184375, - "platform": "linux", - "uptime": 110773.83 - }, - { - "timestamp": 1754093996383, - "memoryTotal": 67266699264, - "memoryUsed": 35787911168, - "memoryFree": 31478788096, - "memoryUsagePercent": 53.20301361531661, - "memoryEfficiency": 46.79698638468339, - "cpuCount": 32, - "cpuLoad": 0.029375, - "platform": "linux", - "uptime": 110803.86 - }, - { - "timestamp": 1754094026411, - "memoryTotal": 67266699264, - "memoryUsed": 35748057088, - "memoryFree": 31518642176, - "memoryUsagePercent": 53.14376575502904, - "memoryEfficiency": 46.85623424497096, - "cpuCount": 32, - "cpuLoad": 0.0259375, - "platform": "linux", - "uptime": 110833.88 - }, - { - "timestamp": 1754094056443, - "memoryTotal": 67266699264, - "memoryUsed": 35782950912, - "memoryFree": 31483748352, - "memoryUsagePercent": 53.1956396010506, - "memoryEfficiency": 46.8043603989494, - "cpuCount": 32, - "cpuLoad": 0.028125, - "platform": "linux", - "uptime": 110863.91 - }, - { - "timestamp": 1754094086474, - "memoryTotal": 67266699264, - "memoryUsed": 35826204672, - "memoryFree": 31440494592, - "memoryUsagePercent": 53.25994149258574, - "memoryEfficiency": 46.74005850741426, - "cpuCount": 32, - "cpuLoad": 0.0375, - "platform": "linux", - "uptime": 110893.95 - }, - { - "timestamp": 1754094116500, - "memoryTotal": 67266699264, - "memoryUsed": 35879411712, - "memoryFree": 31387287552, - "memoryUsagePercent": 53.339040126207074, - "memoryEfficiency": 46.660959873792926, - "cpuCount": 32, - "cpuLoad": 0.033125, - "platform": "linux", - "uptime": 110923.97 - }, - { - "timestamp": 1754094146527, - "memoryTotal": 67266699264, - "memoryUsed": 35770585088, - "memoryFree": 31496114176, - "memoryUsagePercent": 53.177256323536916, - "memoryEfficiency": 46.822743676463084, - "cpuCount": 32, - "cpuLoad": 0.0375, - "platform": "linux", - "uptime": 110954 - }, - { - "timestamp": 1754094176551, - "memoryTotal": 67266699264, - "memoryUsed": 35803340800, - "memoryFree": 31463358464, - "memoryUsagePercent": 53.22595161014737, - "memoryEfficiency": 46.77404838985263, - "cpuCount": 32, - "cpuLoad": 0.031875, - "platform": "linux", - "uptime": 110984.02 - }, - { - "timestamp": 1754094206562, - "memoryTotal": 67266699264, - "memoryUsed": 35887374336, - "memoryFree": 31379324928, - "memoryUsagePercent": 53.350877519876036, - "memoryEfficiency": 46.649122480123964, - "cpuCount": 32, - "cpuLoad": 0.0190625, - "platform": "linux", - "uptime": 111014.03 - }, - { - "timestamp": 1754094236591, - "memoryTotal": 67266699264, - "memoryUsed": 35749212160, - "memoryFree": 31517487104, - "memoryUsagePercent": 53.14548290781435, - "memoryEfficiency": 46.85451709218565, - "cpuCount": 32, - "cpuLoad": 0.0178125, - "platform": "linux", - "uptime": 111044.06 - }, - { - "timestamp": 1754094266596, - "memoryTotal": 67266699264, - "memoryUsed": 35816267776, - "memoryFree": 31450431488, - "memoryUsagePercent": 53.245169107276624, - "memoryEfficiency": 46.754830892723376, - "cpuCount": 32, - "cpuLoad": 0.014375, - "platform": "linux", - "uptime": 111074.07 - }, - { - "timestamp": 1754094296621, - "memoryTotal": 67266699264, - "memoryUsed": 35839266816, - "memoryFree": 31427432448, - "memoryUsagePercent": 53.27935993312604, - "memoryEfficiency": 46.72064006687396, - "cpuCount": 32, - "cpuLoad": 0.010625, - "platform": "linux", - "uptime": 111104.09 - }, - { - "timestamp": 1754094326653, - "memoryTotal": 67266699264, - "memoryUsed": 35792592896, - "memoryFree": 31474106368, - "memoryUsagePercent": 53.20997356437198, - "memoryEfficiency": 46.79002643562802, - "cpuCount": 32, - "cpuLoad": 0.0128125, - "platform": "linux", - "uptime": 111134.12 - }, - { - "timestamp": 1754094356680, - "memoryTotal": 67266699264, - "memoryUsed": 35808591872, - "memoryFree": 31458107392, - "memoryUsagePercent": 53.23375795720685, - "memoryEfficiency": 46.76624204279315, - "cpuCount": 32, - "cpuLoad": 0.0103125, - "platform": "linux", - "uptime": 111164.15 - }, - { - "timestamp": 1754094386684, - "memoryTotal": 67266699264, - "memoryUsed": 35833126912, - "memoryFree": 31433572352, - "memoryUsagePercent": 53.270232230909066, - "memoryEfficiency": 46.729767769090934, - "cpuCount": 32, - "cpuLoad": 0.01375, - "platform": "linux", - "uptime": 111194.16 - }, - { - "timestamp": 1754094416714, - "memoryTotal": 67266699264, - "memoryUsed": 35924164608, - "memoryFree": 31342534656, - "memoryUsagePercent": 53.40557066284654, - "memoryEfficiency": 46.59442933715346, - "cpuCount": 32, - "cpuLoad": 0.010625, - "platform": "linux", - "uptime": 111224.19 - }, - { - "timestamp": 1754094446732, - "memoryTotal": 67266699264, - "memoryUsed": 35837009920, - "memoryFree": 31429689344, - "memoryUsagePercent": 53.276004787080964, - "memoryEfficiency": 46.723995212919036, - "cpuCount": 32, - "cpuLoad": 0.0190625, - "platform": "linux", - "uptime": 111254.2 - }, - { - "timestamp": 1754094476761, - "memoryTotal": 67266699264, - "memoryUsed": 35955490816, - "memoryFree": 31311208448, - "memoryUsagePercent": 53.45214082065532, - "memoryEfficiency": 46.54785917934468, - "cpuCount": 32, - "cpuLoad": 0.02375, - "platform": "linux", - "uptime": 111284.23 - }, - { - "timestamp": 1754094506791, - "memoryTotal": 67266699264, - "memoryUsed": 35941892096, - "memoryFree": 31324807168, - "memoryUsagePercent": 53.43192469566511, - "memoryEfficiency": 46.56807530433489, - "cpuCount": 32, - "cpuLoad": 0.026875, - "platform": "linux", - "uptime": 111314.26 - }, - { - "timestamp": 1754094536803, - "memoryTotal": 67266699264, - "memoryUsed": 35812544512, - "memoryFree": 31454154752, - "memoryUsagePercent": 53.23963402968141, - "memoryEfficiency": 46.76036597031859, - "cpuCount": 32, - "cpuLoad": 0.02, - "platform": "linux", - "uptime": 111344.27 - }, - { - "timestamp": 1754094566834, - "memoryTotal": 67266699264, - "memoryUsed": 35760058368, - "memoryFree": 31506640896, - "memoryUsagePercent": 53.161607094252325, - "memoryEfficiency": 46.838392905747675, - "cpuCount": 32, - "cpuLoad": 0.028125, - "platform": "linux", - "uptime": 111374.31 - }, - { - "timestamp": 1754094596863, - "memoryTotal": 67266699264, - "memoryUsed": 35865489408, - "memoryFree": 31401209856, - "memoryUsagePercent": 53.3183429548692, - "memoryEfficiency": 46.6816570451308, - "cpuCount": 32, - "cpuLoad": 0.0240625, - "platform": "linux", - "uptime": 111404.33 - }, - { - "timestamp": 1754094626893, - "memoryTotal": 67266699264, - "memoryUsed": 35882876928, - "memoryFree": 31383822336, - "memoryUsagePercent": 53.34419158456301, - "memoryEfficiency": 46.65580841543699, - "cpuCount": 32, - "cpuLoad": 0.0203125, - "platform": "linux", - "uptime": 111434.36 - }, - { - "timestamp": 1754094656922, - "memoryTotal": 67266699264, - "memoryUsed": 35855474688, - "memoryFree": 31411224576, - "memoryUsagePercent": 53.30345487486888, - "memoryEfficiency": 46.69654512513112, - "cpuCount": 32, - "cpuLoad": 0.034375, - "platform": "linux", - "uptime": 111464.39 - }, - { - "timestamp": 1754094686924, - "memoryTotal": 67266699264, - "memoryUsed": 35858952192, - "memoryFree": 31407747072, - "memoryUsagePercent": 53.30862460080764, - "memoryEfficiency": 46.69137539919236, - "cpuCount": 32, - "cpuLoad": 0.02625, - "platform": "linux", - "uptime": 111494.4 - }, - { - "timestamp": 1754094716950, - "memoryTotal": 67266699264, - "memoryUsed": 35880472576, - "memoryFree": 31386226688, - "memoryUsagePercent": 53.34061722752408, - "memoryEfficiency": 46.65938277247592, - "cpuCount": 32, - "cpuLoad": 0.0203125, - "platform": "linux", - "uptime": 111524.42 - }, - { - "timestamp": 1754094746979, - "memoryTotal": 67266699264, - "memoryUsed": 35868925952, - "memoryFree": 31397773312, - "memoryUsagePercent": 53.32345178886523, - "memoryEfficiency": 46.67654821113477, - "cpuCount": 32, - "cpuLoad": 0.018125, - "platform": "linux", - "uptime": 111554.45 - }, - { - "timestamp": 1754094777010, - "memoryTotal": 67266699264, - "memoryUsed": 35914657792, - "memoryFree": 31352041472, - "memoryUsagePercent": 53.391437642936225, - "memoryEfficiency": 46.608562357063775, - "cpuCount": 32, - "cpuLoad": 0.0128125, - "platform": "linux", - "uptime": 111584.48 - }, - { - "timestamp": 1754094807040, - "memoryTotal": 67266699264, - "memoryUsed": 35954864128, - "memoryFree": 31311835136, - "memoryUsagePercent": 53.45120917393138, - "memoryEfficiency": 46.54879082606862, - "cpuCount": 32, - "cpuLoad": 0.009375, - "platform": "linux", - "uptime": 111614.51 - }, - { - "timestamp": 1754094837069, - "memoryTotal": 67266699264, - "memoryUsed": 35877605376, - "memoryFree": 31389093888, - "memoryUsagePercent": 53.33635479153217, - "memoryEfficiency": 46.66364520846783, - "cpuCount": 32, - "cpuLoad": 0.0196875, - "platform": "linux", - "uptime": 111644.54 - }, - { - "timestamp": 1754094867098, - "memoryTotal": 67266699264, - "memoryUsed": 35889319936, - "memoryFree": 31377379328, - "memoryUsagePercent": 53.35376988715627, - "memoryEfficiency": 46.64623011284373, - "cpuCount": 32, - "cpuLoad": 0.015, - "platform": "linux", - "uptime": 111674.57 - }, - { - "timestamp": 1754094897129, - "memoryTotal": 67266699264, - "memoryUsed": 35873882112, - "memoryFree": 31392817152, - "memoryUsagePercent": 53.33081971393696, - "memoryEfficiency": 46.66918028606304, - "cpuCount": 32, - "cpuLoad": 0.013125, - "platform": "linux", - "uptime": 111704.6 - }, - { - "timestamp": 1754094927159, - "memoryTotal": 67266699264, - "memoryUsed": 35833597952, - "memoryFree": 31433101312, - "memoryUsagePercent": 53.2709324882506, - "memoryEfficiency": 46.7290675117494, - "cpuCount": 32, - "cpuLoad": 0.024375, - "platform": "linux", - "uptime": 111734.63 - }, - { - "timestamp": 1754094957189, - "memoryTotal": 67266699264, - "memoryUsed": 35864690688, - "memoryFree": 31402008576, - "memoryUsagePercent": 53.31715556198574, - "memoryEfficiency": 46.68284443801426, - "cpuCount": 32, - "cpuLoad": 0.0196875, - "platform": "linux", - "uptime": 111764.66 - }, - { - "timestamp": 1754094987220, - "memoryTotal": 67266699264, - "memoryUsed": 35931070464, - "memoryFree": 31335628800, - "memoryUsagePercent": 53.41583704439279, - "memoryEfficiency": 46.58416295560721, - "cpuCount": 32, - "cpuLoad": 0.0203125, - "platform": "linux", - "uptime": 111794.69 - }, - { - "timestamp": 1754095017247, - "memoryTotal": 67266699264, - "memoryUsed": 35954262016, - "memoryFree": 31312437248, - "memoryUsagePercent": 53.45031406237308, - "memoryEfficiency": 46.54968593762692, - "cpuCount": 32, - "cpuLoad": 0.0225, - "platform": "linux", - "uptime": 111824.72 - }, - { - "timestamp": 1754095047276, - "memoryTotal": 67266699264, - "memoryUsed": 35866976256, - "memoryFree": 31399723008, - "memoryUsagePercent": 53.32055333239073, - "memoryEfficiency": 46.67944666760927, - "cpuCount": 32, - "cpuLoad": 0.0175, - "platform": "linux", - "uptime": 111854.75 - }, - { - "timestamp": 1754095077280, - "memoryTotal": 67266699264, - "memoryUsed": 33575825408, - "memoryFree": 33690873856, - "memoryUsagePercent": 49.91448335561369, - "memoryEfficiency": 50.08551664438631, - "cpuCount": 32, - "cpuLoad": 0.0125, - "platform": "linux", - "uptime": 111884.75 - }, - { - "timestamp": 1754095107309, - "memoryTotal": 67266699264, - "memoryUsed": 33599700992, - "memoryFree": 33666998272, - "memoryUsagePercent": 49.949977269037774, - "memoryEfficiency": 50.050022730962226, - "cpuCount": 32, - "cpuLoad": 0.02625, - "platform": "linux", - "uptime": 111914.78 - }, - { - "timestamp": 1754095137338, - "memoryTotal": 67266699264, - "memoryUsed": 33556971520, - "memoryFree": 33709727744, - "memoryUsagePercent": 49.88645479436973, - "memoryEfficiency": 50.11354520563027, - "cpuCount": 32, - "cpuLoad": 0.026875, - "platform": "linux", - "uptime": 111944.81 - }, - { - "timestamp": 1754095167369, - "memoryTotal": 67266699264, - "memoryUsed": 33510117376, - "memoryFree": 33756581888, - "memoryUsagePercent": 49.81680050106762, - "memoryEfficiency": 50.18319949893238, - "cpuCount": 32, - "cpuLoad": 0.0265625, - "platform": "linux", - "uptime": 111974.84 - }, - { - "timestamp": 1754095197399, - "memoryTotal": 67266699264, - "memoryUsed": 33547739136, - "memoryFree": 33718960128, - "memoryUsagePercent": 49.87272975047578, - "memoryEfficiency": 50.12727024952422, - "cpuCount": 32, - "cpuLoad": 0.0209375, - "platform": "linux", - "uptime": 112004.87 - }, - { - "timestamp": 1754095227430, - "memoryTotal": 67266699264, - "memoryUsed": 33515798528, - "memoryFree": 33750900736, - "memoryUsagePercent": 49.82524621352588, - "memoryEfficiency": 50.17475378647412, - "cpuCount": 32, - "cpuLoad": 0.0128125, - "platform": "linux", - "uptime": 112034.9 - }, - { - "timestamp": 1754095257457, - "memoryTotal": 67266699264, - "memoryUsed": 33555714048, - "memoryFree": 33710985216, - "memoryUsagePercent": 49.884585411727564, - "memoryEfficiency": 50.115414588272436, - "cpuCount": 32, - "cpuLoad": 0.0078125, - "platform": "linux", - "uptime": 112064.93 - }, - { - "timestamp": 1754095287489, - "memoryTotal": 67266699264, - "memoryUsed": 33585283072, - "memoryFree": 33681416192, - "memoryUsagePercent": 49.92854330519273, - "memoryEfficiency": 50.07145669480727, - "cpuCount": 32, - "cpuLoad": 0.0209375, - "platform": "linux", - "uptime": 112094.96 - }, - { - "timestamp": 1754095317520, - "memoryTotal": 67266699264, - "memoryUsed": 33637302272, - "memoryFree": 33629396992, - "memoryUsagePercent": 50.005876072474564, - "memoryEfficiency": 49.994123927525436, - "cpuCount": 32, - "cpuLoad": 0.025, - "platform": "linux", - "uptime": 112124.99 - }, - { - "timestamp": 1754095347535, - "memoryTotal": 67266699264, - "memoryUsed": 33563385856, - "memoryFree": 33703313408, - "memoryUsagePercent": 49.89599047260307, - "memoryEfficiency": 50.10400952739693, - "cpuCount": 32, - "cpuLoad": 0.0225, - "platform": "linux", - "uptime": 112155.01 - }, - { - "timestamp": 1754095377561, - "memoryTotal": 67266699264, - "memoryUsed": 33676615680, - "memoryFree": 33590083584, - "memoryUsagePercent": 50.06432015911796, - "memoryEfficiency": 49.93567984088204, - "cpuCount": 32, - "cpuLoad": 0.01375, - "platform": "linux", - "uptime": 112185.03 - }, - { - "timestamp": 1754095407565, - "memoryTotal": 67266699264, - "memoryUsed": 33753792512, - "memoryFree": 33512906752, - "memoryUsagePercent": 50.17905275763168, - "memoryEfficiency": 49.82094724236832, - "cpuCount": 32, - "cpuLoad": 0.01375, - "platform": "linux", - "uptime": 112215.04 - }, - { - "timestamp": 1754095437593, - "memoryTotal": 67266699264, - "memoryUsed": 33572245504, - "memoryFree": 33694453760, - "memoryUsagePercent": 49.90916139981808, - "memoryEfficiency": 50.09083860018192, - "cpuCount": 32, - "cpuLoad": 0.0121875, - "platform": "linux", - "uptime": 112245.07 - }, - { - "timestamp": 1754095467624, - "memoryTotal": 67266699264, - "memoryUsed": 33596149760, - "memoryFree": 33670549504, - "memoryUsagePercent": 49.94469793760208, - "memoryEfficiency": 50.05530206239792, - "cpuCount": 32, - "cpuLoad": 0.0146875, - "platform": "linux", - "uptime": 112275.1 - }, - { - "timestamp": 1754095497654, - "memoryTotal": 67266699264, - "memoryUsed": 33616179200, - "memoryFree": 33650520064, - "memoryUsagePercent": 49.97447409760272, - "memoryEfficiency": 50.02552590239728, - "cpuCount": 32, - "cpuLoad": 0.0278125, - "platform": "linux", - "uptime": 112305.13 - }, - { - "timestamp": 1754095527684, - "memoryTotal": 67266699264, - "memoryUsed": 33545195520, - "memoryFree": 33721503744, - "memoryUsagePercent": 49.868948360831524, - "memoryEfficiency": 50.131051639168476, - "cpuCount": 32, - "cpuLoad": 0.028125, - "platform": "linux", - "uptime": 112335.16 - }, - { - "timestamp": 1754095557711, - "memoryTotal": 67266699264, - "memoryUsed": 33569243136, - "memoryFree": 33697456128, - "memoryUsagePercent": 49.904698020415125, - "memoryEfficiency": 50.095301979584875, - "cpuCount": 32, - "cpuLoad": 0.03125, - "platform": "linux", - "uptime": 112365.18 - }, - { - "timestamp": 1754095587744, - "memoryTotal": 67266699264, - "memoryUsed": 33661902848, - "memoryFree": 33604796416, - "memoryUsagePercent": 50.04244777328517, - "memoryEfficiency": 49.95755222671483, - "cpuCount": 32, - "cpuLoad": 0.0221875, - "platform": "linux", - "uptime": 112395.22 - }, - { - "timestamp": 1754095617774, - "memoryTotal": 67266699264, - "memoryUsed": 33620885504, - "memoryFree": 33645813760, - "memoryUsagePercent": 49.98147058182373, - "memoryEfficiency": 50.01852941817627, - "cpuCount": 32, - "cpuLoad": 0.015625, - "platform": "linux", - "uptime": 112425.25 - }, - { - "timestamp": 1754095647803, - "memoryTotal": 67266699264, - "memoryUsed": 33560440832, - "memoryFree": 33706258432, - "memoryUsagePercent": 49.89161234191995, - "memoryEfficiency": 50.10838765808005, - "cpuCount": 32, - "cpuLoad": 0.06875, - "platform": "linux", - "uptime": 112455.27 - }, - { - "timestamp": 1754095677834, - "memoryTotal": 67266699264, - "memoryUsed": 33635930112, - "memoryFree": 33630769152, - "memoryUsagePercent": 50.003836192392725, - "memoryEfficiency": 49.996163807607275, - "cpuCount": 32, - "cpuLoad": 0.0484375, - "platform": "linux", - "uptime": 112485.31 - }, - { - "timestamp": 1754095707863, - "memoryTotal": 67266699264, - "memoryUsed": 33636933632, - "memoryFree": 33629765632, - "memoryUsagePercent": 50.005328044989895, - "memoryEfficiency": 49.994671955010105, - "cpuCount": 32, - "cpuLoad": 0.034375, - "platform": "linux", - "uptime": 112515.33 - }, - { - "timestamp": 1754095737890, - "memoryTotal": 67266699264, - "memoryUsed": 33546010624, - "memoryFree": 33720688640, - "memoryUsagePercent": 49.87016011049209, - "memoryEfficiency": 50.12983988950791, - "cpuCount": 32, - "cpuLoad": 0.025, - "platform": "linux", - "uptime": 112545.36 - }, - { - "timestamp": 1754095767923, - "memoryTotal": 67266699264, - "memoryUsed": 33529917440, - "memoryFree": 33736781824, - "memoryUsagePercent": 49.84623566618891, - "memoryEfficiency": 50.15376433381109, - "cpuCount": 32, - "cpuLoad": 0.0228125, - "platform": "linux", - "uptime": 112575.39 - }, - { - "timestamp": 1754095797953, - "memoryTotal": 67266699264, - "memoryUsed": 33568161792, - "memoryFree": 33698537472, - "memoryUsagePercent": 49.903090473126746, - "memoryEfficiency": 50.096909526873254, - "cpuCount": 32, - "cpuLoad": 0.02, - "platform": "linux", - "uptime": 112605.42 - }, - { - "timestamp": 1754095827982, - "memoryTotal": 67266699264, - "memoryUsed": 33545830400, - "memoryFree": 33720868864, - "memoryUsagePercent": 49.86989218594402, - "memoryEfficiency": 50.13010781405598, - "cpuCount": 32, - "cpuLoad": 0.0121875, - "platform": "linux", - "uptime": 112635.45 - }, - { - "timestamp": 1754095858007, - "memoryTotal": 67266699264, - "memoryUsed": 33568481280, - "memoryFree": 33698217984, - "memoryUsagePercent": 49.903565430280125, - "memoryEfficiency": 50.096434569719875, - "cpuCount": 32, - "cpuLoad": 0.0228125, - "platform": "linux", - "uptime": 112665.48 - }, - { - "timestamp": 1754095888037, - "memoryTotal": 67266699264, - "memoryUsed": 33609666560, - "memoryFree": 33657032704, - "memoryUsagePercent": 49.9647922787068, - "memoryEfficiency": 50.0352077212932, - "cpuCount": 32, - "cpuLoad": 0.020625, - "platform": "linux", - "uptime": 112695.51 - }, - { - "timestamp": 1754095918064, - "memoryTotal": 67266699264, - "memoryUsed": 33626152960, - "memoryFree": 33640546304, - "memoryUsagePercent": 49.9893012856603, - "memoryEfficiency": 50.0106987143397, - "cpuCount": 32, - "cpuLoad": 0.014375, - "platform": "linux", - "uptime": 112725.54 - }, - { - "timestamp": 1754095948096, - "memoryTotal": 67266699264, - "memoryUsed": 33555705856, - "memoryFree": 33710993408, - "memoryUsagePercent": 49.88457323333902, - "memoryEfficiency": 50.11542676666098, - "cpuCount": 32, - "cpuLoad": 0.0228125, - "platform": "linux", - "uptime": 112755.57 - }, - { - "timestamp": 1754095978127, - "memoryTotal": 67266699264, - "memoryUsed": 33625481216, - "memoryFree": 33641218048, - "memoryUsagePercent": 49.98830265779934, - "memoryEfficiency": 50.01169734220066, - "cpuCount": 32, - "cpuLoad": 0.021875, - "platform": "linux", - "uptime": 112785.6 - }, - { - "timestamp": 1754096008157, - "memoryTotal": 67266699264, - "memoryUsed": 33651814400, - "memoryFree": 33614884864, - "memoryUsagePercent": 50.02745008778792, - "memoryEfficiency": 49.97254991221208, - "cpuCount": 32, - "cpuLoad": 0.0153125, - "platform": "linux", - "uptime": 112815.63 - }, - { - "timestamp": 1754096038185, - "memoryTotal": 67266699264, - "memoryUsed": 33561800704, - "memoryFree": 33704898560, - "memoryUsagePercent": 49.89363395441897, - "memoryEfficiency": 50.10636604558103, - "cpuCount": 32, - "cpuLoad": 0.0259375, - "platform": "linux", - "uptime": 112845.66 - }, - { - "timestamp": 1754096068212, - "memoryTotal": 67266699264, - "memoryUsed": 33639440384, - "memoryFree": 33627258880, - "memoryUsagePercent": 50.009054631885675, - "memoryEfficiency": 49.990945368114325, - "cpuCount": 32, - "cpuLoad": 0.0390625, - "platform": "linux", - "uptime": 112875.68 - }, - { - "timestamp": 1754096098244, - "memoryTotal": 67266699264, - "memoryUsed": 33694838784, - "memoryFree": 33571860480, - "memoryUsagePercent": 50.0914109844437, - "memoryEfficiency": 49.9085890155563, - "cpuCount": 32, - "cpuLoad": 0.0525, - "platform": "linux", - "uptime": 112905.72 - }, - { - "timestamp": 1754096128274, - "memoryTotal": 67266699264, - "memoryUsed": 33609592832, - "memoryFree": 33657106432, - "memoryUsagePercent": 49.96468267320987, - "memoryEfficiency": 50.03531732679013, - "cpuCount": 32, - "cpuLoad": 0.0609375, - "platform": "linux", - "uptime": 112935.75 - }, - { - "timestamp": 1754096158305, - "memoryTotal": 67266699264, - "memoryUsed": 33639714816, - "memoryFree": 33626984448, - "memoryUsagePercent": 50.009462607902044, - "memoryEfficiency": 49.990537392097956, - "cpuCount": 32, - "cpuLoad": 0.06625, - "platform": "linux", - "uptime": 112965.78 - }, - { - "timestamp": 1754096188310, - "memoryTotal": 67266699264, - "memoryUsed": 33689735168, - "memoryFree": 33576964096, - "memoryUsagePercent": 50.08382384837808, - "memoryEfficiency": 49.91617615162192, - "cpuCount": 32, - "cpuLoad": 0.073125, - "platform": "linux", - "uptime": 112995.78 - }, - { - "timestamp": 1754096218342, - "memoryTotal": 67266699264, - "memoryUsed": 33780789248, - "memoryFree": 33485910016, - "memoryUsagePercent": 50.21918663709267, - "memoryEfficiency": 49.78081336290733, - "cpuCount": 32, - "cpuLoad": 0.081875, - "platform": "linux", - "uptime": 113025.81 - }, - { - "timestamp": 1754096248365, - "memoryTotal": 67266699264, - "memoryUsed": 33685897216, - "memoryFree": 33580802048, - "memoryUsagePercent": 50.0781182733432, - "memoryEfficiency": 49.9218817266568, - "cpuCount": 32, - "cpuLoad": 0.0721875, - "platform": "linux", - "uptime": 113055.84 - }, - { - "timestamp": 1754096278394, - "memoryTotal": 67266699264, - "memoryUsed": 33751916544, - "memoryFree": 33514782720, - "memoryUsagePercent": 50.176263906654114, - "memoryEfficiency": 49.823736093345886, - "cpuCount": 32, - "cpuLoad": 0.075, - "platform": "linux", - "uptime": 113085.87 - }, - { - "timestamp": 1754096308424, - "memoryTotal": 67266699264, - "memoryUsed": 33770868736, - "memoryFree": 33495830528, - "memoryUsagePercent": 50.20443860856065, - "memoryEfficiency": 49.79556139143935, - "cpuCount": 32, - "cpuLoad": 0.0746875, - "platform": "linux", - "uptime": 113115.9 - }, - { - "timestamp": 1754096338454, - "memoryTotal": 67266699264, - "memoryUsed": 33600565248, - "memoryFree": 33666134016, - "memoryUsagePercent": 49.951262089029626, - "memoryEfficiency": 50.048737910970374, - "cpuCount": 32, - "cpuLoad": 0.050625, - "platform": "linux", - "uptime": 113145.93 - }, - { - "timestamp": 1754096368484, - "memoryTotal": 67266699264, - "memoryUsed": 33642016768, - "memoryFree": 33624682496, - "memoryUsagePercent": 50.012884735084114, - "memoryEfficiency": 49.987115264915886, - "cpuCount": 32, - "cpuLoad": 0.0328125, - "platform": "linux", - "uptime": 113175.96 - }, - { - "timestamp": 1754096398514, - "memoryTotal": 67266699264, - "memoryUsed": 33671876608, - "memoryFree": 33594822656, - "memoryUsagePercent": 50.05727496134275, - "memoryEfficiency": 49.94272503865725, - "cpuCount": 32, - "cpuLoad": 0.0375, - "platform": "linux", - "uptime": 113205.99 - }, - { - "timestamp": 1754096428534, - "memoryTotal": 67266699264, - "memoryUsed": 33632608256, - "memoryFree": 33634091008, - "memoryUsagePercent": 49.998897855836375, - "memoryEfficiency": 50.001102144163625, - "cpuCount": 32, - "cpuLoad": 0.0321875, - "platform": "linux", - "uptime": 113236.01 - }, - { - "timestamp": 1754096458552, - "memoryTotal": 67266699264, - "memoryUsed": 33669451776, - "memoryFree": 33597247488, - "memoryUsagePercent": 50.05367015833245, - "memoryEfficiency": 49.94632984166755, - "cpuCount": 32, - "cpuLoad": 0.026875, - "platform": "linux", - "uptime": 113266.02 - }, - { - "timestamp": 1754096488582, - "memoryTotal": 67266699264, - "memoryUsed": 33671188480, - "memoryFree": 33595510784, - "memoryUsagePercent": 50.056251976704694, - "memoryEfficiency": 49.943748023295306, - "cpuCount": 32, - "cpuLoad": 0.0296875, - "platform": "linux", - "uptime": 113296.05 - }, - { - "timestamp": 1754096518594, - "memoryTotal": 67266699264, - "memoryUsed": 33690734592, - "memoryFree": 33575964672, - "memoryUsagePercent": 50.08530961178098, - "memoryEfficiency": 49.91469038821902, - "cpuCount": 32, - "cpuLoad": 0.03125, - "platform": "linux", - "uptime": 113326.07 - }, - { - "timestamp": 1754096548604, - "memoryTotal": 67266699264, - "memoryUsed": 33645080576, - "memoryFree": 33621618688, - "memoryUsagePercent": 50.01743945240119, - "memoryEfficiency": 49.98256054759881, - "cpuCount": 32, - "cpuLoad": 0.0290625, - "platform": "linux", - "uptime": 113356.08 - }, - { - "timestamp": 1754096578634, - "memoryTotal": 67266699264, - "memoryUsed": 33674596352, - "memoryFree": 33592102912, - "memoryUsagePercent": 50.0613181863408, - "memoryEfficiency": 49.9386818136592, - "cpuCount": 32, - "cpuLoad": 0.025, - "platform": "linux", - "uptime": 113386.11 - }, - { - "timestamp": 1754096608664, - "memoryTotal": 67266699264, - "memoryUsed": 33724219392, - "memoryFree": 33542479872, - "memoryUsagePercent": 50.135088774972246, - "memoryEfficiency": 49.864911225027754, - "cpuCount": 32, - "cpuLoad": 0.03, - "platform": "linux", - "uptime": 113416.14 - }, - { - "timestamp": 1754096638667, - "memoryTotal": 67266699264, - "memoryUsed": 33642061824, - "memoryFree": 33624637440, - "memoryUsagePercent": 50.012951716221146, - "memoryEfficiency": 49.987048283778854, - "cpuCount": 32, - "cpuLoad": 0.0321875, - "platform": "linux", - "uptime": 113446.14 - }, - { - "timestamp": 1754096668690, - "memoryTotal": 67266699264, - "memoryUsed": 33718358016, - "memoryFree": 33548341248, - "memoryUsagePercent": 50.126375137965915, - "memoryEfficiency": 49.873624862034085, - "cpuCount": 32, - "cpuLoad": 0.019375, - "platform": "linux", - "uptime": 113476.16 - }, - { - "timestamp": 1754096698719, - "memoryTotal": 67266699264, - "memoryUsed": 33689178112, - "memoryFree": 33577521152, - "memoryUsagePercent": 50.082995717956805, - "memoryEfficiency": 49.917004282043195, - "cpuCount": 32, - "cpuLoad": 0.0265625, - "platform": "linux", - "uptime": 113506.19 - }, - { - "timestamp": 1754096728749, - "memoryTotal": 67266699264, - "memoryUsed": 33609216000, - "memoryFree": 33657483264, - "memoryUsagePercent": 49.964122467336644, - "memoryEfficiency": 50.035877532663356, - "cpuCount": 32, - "cpuLoad": 0.025625, - "platform": "linux", - "uptime": 113536.22 - }, - { - "timestamp": 1754096758780, - "memoryTotal": 67266699264, - "memoryUsed": 33605382144, - "memoryFree": 33661317120, - "memoryUsagePercent": 49.958422981496035, - "memoryEfficiency": 50.041577018503965, - "cpuCount": 32, - "cpuLoad": 0.015625, - "platform": "linux", - "uptime": 113566.25 - }, - { - "timestamp": 1754096788787, - "memoryTotal": 67266699264, - "memoryUsed": 33697939456, - "memoryFree": 33568759808, - "memoryUsagePercent": 50.096020504509234, - "memoryEfficiency": 49.903979495490766, - "cpuCount": 32, - "cpuLoad": 0.0146875, - "platform": "linux", - "uptime": 113596.26 - }, - { - "timestamp": 1754096818815, - "memoryTotal": 67266699264, - "memoryUsed": 33875099648, - "memoryFree": 33391599616, - "memoryUsagePercent": 50.359390335255206, - "memoryEfficiency": 49.640609664744794, - "cpuCount": 32, - "cpuLoad": 0.013125, - "platform": "linux", - "uptime": 113626.29 - }, - { - "timestamp": 1754096848829, - "memoryTotal": 67266699264, - "memoryUsed": 33678274560, - "memoryFree": 33588424704, - "memoryUsagePercent": 50.066786282798994, - "memoryEfficiency": 49.933213717201006, - "cpuCount": 32, - "cpuLoad": 0.0096875, - "platform": "linux", - "uptime": 113656.3 - }, - { - "timestamp": 1754096878860, - "memoryTotal": 67266699264, - "memoryUsed": 33657499648, - "memoryFree": 33609199616, - "memoryUsagePercent": 50.035901889440446, - "memoryEfficiency": 49.964098110559554, - "cpuCount": 32, - "cpuLoad": 0.0196875, - "platform": "linux", - "uptime": 113686.33 - }, - { - "timestamp": 1754096908862, - "memoryTotal": 67266699264, - "memoryUsed": 33692602368, - "memoryFree": 33574096896, - "memoryUsagePercent": 50.08808628437001, - "memoryEfficiency": 49.91191371562999, - "cpuCount": 32, - "cpuLoad": 0.014375, - "platform": "linux", - "uptime": 113716.33 - }, - { - "timestamp": 1754096938887, - "memoryTotal": 67266699264, - "memoryUsed": 33678221312, - "memoryFree": 33588477952, - "memoryUsagePercent": 50.066707123273424, - "memoryEfficiency": 49.933292876726576, - "cpuCount": 32, - "cpuLoad": 0.00875, - "platform": "linux", - "uptime": 113746.36 - }, - { - "timestamp": 1754096968917, - "memoryTotal": 67266699264, - "memoryUsed": 33662459904, - "memoryFree": 33604239360, - "memoryUsagePercent": 50.04327590370645, - "memoryEfficiency": 49.95672409629355, - "cpuCount": 32, - "cpuLoad": 0.03125, - "platform": "linux", - "uptime": 113776.39 - }, - { - "timestamp": 1754096998940, - "memoryTotal": 67266699264, - "memoryUsed": 33646108672, - "memoryFree": 33620590592, - "memoryUsagePercent": 50.01896784016401, - "memoryEfficiency": 49.98103215983599, - "cpuCount": 32, - "cpuLoad": 0.020625, - "platform": "linux", - "uptime": 113806.41 - }, - { - "timestamp": 1754097028962, - "memoryTotal": 67266699264, - "memoryUsed": 33570623488, - "memoryFree": 33696075776, - "memoryUsagePercent": 49.906750078885516, - "memoryEfficiency": 50.093249921114484, - "cpuCount": 32, - "cpuLoad": 0.0178125, - "platform": "linux", - "uptime": 113836.43 - }, - { - "timestamp": 1754097058988, - "memoryTotal": 67266699264, - "memoryUsed": 33584590848, - "memoryFree": 33682108416, - "memoryUsagePercent": 49.9275142313604, - "memoryEfficiency": 50.0724857686396, - "cpuCount": 32, - "cpuLoad": 0.02125, - "platform": "linux", - "uptime": 113866.46 - }, - { - "timestamp": 1754097089018, - "memoryTotal": 67266699264, - "memoryUsed": 33602510848, - "memoryFree": 33664188416, - "memoryUsagePercent": 49.954154456309844, - "memoryEfficiency": 50.045845543690156, - "cpuCount": 32, - "cpuLoad": 0.02375, - "platform": "linux", - "uptime": 113896.49 - }, - { - "timestamp": 1754097119032, - "memoryTotal": 67266699264, - "memoryUsed": 33663234048, - "memoryFree": 33603465216, - "memoryUsagePercent": 50.044426761424276, - "memoryEfficiency": 49.955573238575724, - "cpuCount": 32, - "cpuLoad": 0.01875, - "platform": "linux", - "uptime": 113926.5 - }, - { - "timestamp": 1754097149036, - "memoryTotal": 67266699264, - "memoryUsed": 33611587584, - "memoryFree": 33655111680, - "memoryUsagePercent": 49.967648110821386, - "memoryEfficiency": 50.032351889178614, - "cpuCount": 32, - "cpuLoad": 0.01875, - "platform": "linux", - "uptime": 113956.51 - }, - { - "timestamp": 1754097179066, - "memoryTotal": 67266699264, - "memoryUsed": 33645662208, - "memoryFree": 33621037056, - "memoryUsagePercent": 50.01830411798812, - "memoryEfficiency": 49.98169588201188, - "cpuCount": 32, - "cpuLoad": 0.0115625, - "platform": "linux", - "uptime": 113986.54 - }, - { - "timestamp": 1754097209096, - "memoryTotal": 67266699264, - "memoryUsed": 33756086272, - "memoryFree": 33510612992, - "memoryUsagePercent": 50.18246270642521, - "memoryEfficiency": 49.81753729357479, - "cpuCount": 32, - "cpuLoad": 0.0171875, - "platform": "linux", - "uptime": 114016.57 - }, - { - "timestamp": 1754097239126, - "memoryTotal": 67266699264, - "memoryUsed": 33567125504, - "memoryFree": 33699573760, - "memoryUsagePercent": 49.901549906975376, - "memoryEfficiency": 50.098450093024624, - "cpuCount": 32, - "cpuLoad": 0.02125, - "platform": "linux", - "uptime": 114046.6 - }, - { - "timestamp": 1754097269156, - "memoryTotal": 67266699264, - "memoryUsed": 33597390848, - "memoryFree": 33669308416, - "memoryUsagePercent": 49.94654296346715, - "memoryEfficiency": 50.05345703653285, - "cpuCount": 32, - "cpuLoad": 0.0146875, - "platform": "linux", - "uptime": 114076.63 - }, - { - "timestamp": 1754097299177, - "memoryTotal": 67266699264, - "memoryUsed": 33667592192, - "memoryFree": 33599107072, - "memoryUsagePercent": 50.05090566413198, - "memoryEfficiency": 49.94909433586802, - "cpuCount": 32, - "cpuLoad": 0.0134375, - "platform": "linux", - "uptime": 114106.65 - }, - { - "timestamp": 1754097329182, - "memoryTotal": 67266699264, - "memoryUsed": 33610575872, - "memoryFree": 33656123392, - "memoryUsagePercent": 49.966144079835665, - "memoryEfficiency": 50.033855920164335, - "cpuCount": 32, - "cpuLoad": 0.0178125, - "platform": "linux", - "uptime": 114136.65 - }, - { - "timestamp": 1754097359209, - "memoryTotal": 67266699264, - "memoryUsed": 33581928448, - "memoryFree": 33684770816, - "memoryUsagePercent": 49.9235562550822, - "memoryEfficiency": 50.0764437449178, - "cpuCount": 32, - "cpuLoad": 0.0315625, - "platform": "linux", - "uptime": 114166.68 - }, - { - "timestamp": 1754097389238, - "memoryTotal": 67266699264, - "memoryUsed": 33626136576, - "memoryFree": 33640562688, - "memoryUsagePercent": 49.9892769288832, - "memoryEfficiency": 50.0107230711168, - "cpuCount": 32, - "cpuLoad": 0.0190625, - "platform": "linux", - "uptime": 114196.71 - }, - { - "timestamp": 1754097419268, - "memoryTotal": 67266699264, - "memoryUsed": 33656197120, - "memoryFree": 33610502144, - "memoryUsagePercent": 50.03396552566126, - "memoryEfficiency": 49.96603447433874, - "cpuCount": 32, - "cpuLoad": 0.031875, - "platform": "linux", - "uptime": 114226.74 - }, - { - "timestamp": 1754097449298, - "memoryTotal": 67266699264, - "memoryUsed": 33581449216, - "memoryFree": 33685250048, - "memoryUsagePercent": 49.92284381935212, - "memoryEfficiency": 50.07715618064788, - "cpuCount": 32, - "cpuLoad": 0.0278125, - "platform": "linux", - "uptime": 114256.77 - }, - { - "timestamp": 1754097479328, - "memoryTotal": 67266699264, - "memoryUsed": 33658241024, - "memoryFree": 33608458240, - "memoryUsagePercent": 50.03700403360407, - "memoryEfficiency": 49.96299596639593, - "cpuCount": 32, - "cpuLoad": 0.0271875, - "platform": "linux", - "uptime": 114286.8 - }, - { - "timestamp": 1754097509358, - "memoryTotal": 67266699264, - "memoryUsed": 33694334976, - "memoryFree": 33572364288, - "memoryUsagePercent": 50.09066201354797, - "memoryEfficiency": 49.90933798645203, - "cpuCount": 32, - "cpuLoad": 0.0184375, - "platform": "linux", - "uptime": 114316.83 - }, - { - "timestamp": 1754097539388, - "memoryTotal": 67266699264, - "memoryUsed": 33586032640, - "memoryFree": 33680666624, - "memoryUsagePercent": 49.9296576277449, - "memoryEfficiency": 50.0703423722551, - "cpuCount": 32, - "cpuLoad": 0.0340625, - "platform": "linux", - "uptime": 114346.86 - }, - { - "timestamp": 1754097569393, - "memoryTotal": 67266699264, - "memoryUsed": 33579102208, - "memoryFree": 33687597056, - "memoryUsagePercent": 49.91935471103302, - "memoryEfficiency": 50.08064528896698, - "cpuCount": 32, - "cpuLoad": 0.020625, - "platform": "linux", - "uptime": 114376.86 - }, - { - "timestamp": 1754097599422, - "memoryTotal": 67266699264, - "memoryUsed": 33625714688, - "memoryFree": 33640984576, - "memoryUsagePercent": 49.98864974187296, - "memoryEfficiency": 50.01135025812704, - "cpuCount": 32, - "cpuLoad": 0.0175, - "platform": "linux", - "uptime": 114406.89 - }, - { - "timestamp": 1754097629439, - "memoryTotal": 67266699264, - "memoryUsed": 33581748224, - "memoryFree": 33684951040, - "memoryUsagePercent": 49.923288330534135, - "memoryEfficiency": 50.076711669465865, - "cpuCount": 32, - "cpuLoad": 0.0165625, - "platform": "linux", - "uptime": 114436.91 - }, - { - "timestamp": 1754097659469, - "memoryTotal": 67266699264, - "memoryUsed": 33580974080, - "memoryFree": 33685725184, - "memoryUsagePercent": 49.92213747281632, - "memoryEfficiency": 50.07786252718368, - "cpuCount": 32, - "cpuLoad": 0.0184375, - "platform": "linux", - "uptime": 114466.94 - }, - { - "timestamp": 1754097689480, - "memoryTotal": 67266699264, - "memoryUsed": 33705000960, - "memoryFree": 33561698304, - "memoryUsagePercent": 50.106518275437885, - "memoryEfficiency": 49.893481724562115, - "cpuCount": 32, - "cpuLoad": 0.0178125, - "platform": "linux", - "uptime": 114496.95 - }, - { - "timestamp": 1754097719485, - "memoryTotal": 67266699264, - "memoryUsed": 33700831232, - "memoryFree": 33565868032, - "memoryUsagePercent": 50.10031947566679, - "memoryEfficiency": 49.89968052433321, - "cpuCount": 32, - "cpuLoad": 0.025625, - "platform": "linux", - "uptime": 114526.96 - }, - { - "timestamp": 1754097749516, - "memoryTotal": 67266699264, - "memoryUsed": 33612386304, - "memoryFree": 33654312960, - "memoryUsagePercent": 49.96883550370485, - "memoryEfficiency": 50.03116449629515, - "cpuCount": 32, - "cpuLoad": 0.0190625, - "platform": "linux", - "uptime": 114556.99 - }, - { - "timestamp": 1754097779546, - "memoryTotal": 67266699264, - "memoryUsed": 33658855424, - "memoryFree": 33607843840, - "memoryUsagePercent": 50.037917412745195, - "memoryEfficiency": 49.962082587254805, - "cpuCount": 32, - "cpuLoad": 0.0153125, - "platform": "linux", - "uptime": 114587.02 - }, - { - "timestamp": 1754097809564, - "memoryTotal": 67266699264, - "memoryUsed": 33672818688, - "memoryFree": 33593880576, - "memoryUsagePercent": 50.058675476025805, - "memoryEfficiency": 49.941324523974195, - "cpuCount": 32, - "cpuLoad": 0.01875, - "platform": "linux", - "uptime": 114617.04 - }, - { - "timestamp": 1754097839595, - "memoryTotal": 67266699264, - "memoryUsed": 33652219904, - "memoryFree": 33614479360, - "memoryUsagePercent": 50.02805291802106, - "memoryEfficiency": 49.97194708197894, - "cpuCount": 32, - "cpuLoad": 0.03875, - "platform": "linux", - "uptime": 114647.07 - }, - { - "timestamp": 1754097869600, - "memoryTotal": 67266699264, - "memoryUsed": 33615011840, - "memoryFree": 33651687424, - "memoryUsagePercent": 49.97273867723459, - "memoryEfficiency": 50.02726132276541, - "cpuCount": 32, - "cpuLoad": 0.0271875, - "platform": "linux", - "uptime": 114677.07 - }, - { - "timestamp": 1754097899608, - "memoryTotal": 67266699264, - "memoryUsed": 33706016768, - "memoryFree": 33560682496, - "memoryUsagePercent": 50.10802839561788, - "memoryEfficiency": 49.89197160438212, - "cpuCount": 32, - "cpuLoad": 0.0425, - "platform": "linux", - "uptime": 114707.08 - }, - { - "timestamp": 1754097929636, - "memoryTotal": 67266699264, - "memoryUsed": 33632907264, - "memoryFree": 33633792000, - "memoryUsagePercent": 49.99934236701839, - "memoryEfficiency": 50.00065763298161, - "cpuCount": 32, - "cpuLoad": 0.03625, - "platform": "linux", - "uptime": 114737.11 - }, - { - "timestamp": 1754097959657, - "memoryTotal": 67266699264, - "memoryUsed": 33665572864, - "memoryFree": 33601126400, - "memoryUsagePercent": 50.047903691354826, - "memoryEfficiency": 49.952096308645174, - "cpuCount": 32, - "cpuLoad": 0.024375, - "platform": "linux", - "uptime": 114767.13 - }, - { - "timestamp": 1754144952521, - "memoryTotal": 67266699264, - "memoryUsed": 33994915840, - "memoryFree": 33271783424, - "memoryUsagePercent": 50.53751144616294, - "memoryEfficiency": 49.46248855383706, - "cpuCount": 32, - "cpuLoad": 0.2590625, - "platform": "linux", - "uptime": 161758.76 - }, - { - "timestamp": 1754144982550, - "memoryTotal": 67266699264, - "memoryUsed": 33355243520, - "memoryFree": 33911455744, - "memoryUsagePercent": 49.58656197636735, - "memoryEfficiency": 50.41343802363265, - "cpuCount": 32, - "cpuLoad": 0.161875, - "platform": "linux", - "uptime": 161788.79 - }, - { - "timestamp": 1754145012550, - "memoryTotal": 67266699264, - "memoryUsed": 33150599168, - "memoryFree": 34116100096, - "memoryUsagePercent": 49.28233365204176, - "memoryEfficiency": 50.71766634795824, - "cpuCount": 32, - "cpuLoad": 0.1003125, - "platform": "linux", - "uptime": 161818.79 - }, - { - "timestamp": 1754145042577, - "memoryTotal": 67266699264, - "memoryUsed": 33053388800, - "memoryFree": 34213310464, - "memoryUsagePercent": 49.13781880433312, - "memoryEfficiency": 50.86218119566688, - "cpuCount": 32, - "cpuLoad": 0.0803125, - "platform": "linux", - "uptime": 161848.81 - }, - { - "timestamp": 1754145072581, - "memoryTotal": 67266699264, - "memoryUsed": 32942559232, - "memoryFree": 34324140032, - "memoryUsagePercent": 48.97305738566289, - "memoryEfficiency": 51.02694261433711, - "cpuCount": 32, - "cpuLoad": 0.08875, - "platform": "linux", - "uptime": 161878.82 - }, - { - "timestamp": 1754145102594, - "memoryTotal": 67266699264, - "memoryUsed": 32928940032, - "memoryFree": 34337759232, - "memoryUsagePercent": 48.952810814701316, - "memoryEfficiency": 51.047189185298684, - "cpuCount": 32, - "cpuLoad": 0.1046875, - "platform": "linux", - "uptime": 161908.83 - }, - { - "timestamp": 1754145132608, - "memoryTotal": 67266699264, - "memoryUsed": 32940814336, - "memoryFree": 34325884928, - "memoryUsagePercent": 48.970463388902104, - "memoryEfficiency": 51.029536611097896, - "cpuCount": 32, - "cpuLoad": 0.1346875, - "platform": "linux", - "uptime": 161938.85 - }, - { - "timestamp": 1754145162638, - "memoryTotal": 67266699264, - "memoryUsed": 33017712640, - "memoryFree": 34248986624, - "memoryUsagePercent": 49.08478192220518, - "memoryEfficiency": 50.91521807779482, - "cpuCount": 32, - "cpuLoad": 0.09125, - "platform": "linux", - "uptime": 161968.88 - }, - { - "timestamp": 1754145192667, - "memoryTotal": 67266699264, - "memoryUsed": 33139998720, - "memoryFree": 34126700544, - "memoryUsagePercent": 49.266574817260235, - "memoryEfficiency": 50.733425182739765, - "cpuCount": 32, - "cpuLoad": 0.06375, - "platform": "linux", - "uptime": 161998.91 - }, - { - "timestamp": 1754145222697, - "memoryTotal": 67266699264, - "memoryUsed": 33248264192, - "memoryFree": 34018435072, - "memoryUsagePercent": 49.42752440031484, - "memoryEfficiency": 50.57247559968516, - "cpuCount": 32, - "cpuLoad": 0.066875, - "platform": "linux", - "uptime": 162028.93 - }, - { - "timestamp": 1754145252701, - "memoryTotal": 67266699264, - "memoryUsed": 33041702912, - "memoryFree": 34224996352, - "memoryUsagePercent": 49.12044633306894, - "memoryEfficiency": 50.87955366693106, - "cpuCount": 32, - "cpuLoad": 0.054375, - "platform": "linux", - "uptime": 162058.94 - }, - { - "timestamp": 1754145282730, - "memoryTotal": 67266699264, - "memoryUsed": 33133084672, - "memoryFree": 34133614592, - "memoryUsagePercent": 49.25629625732545, - "memoryEfficiency": 50.74370374267455, - "cpuCount": 32, - "cpuLoad": 0.0521875, - "platform": "linux", - "uptime": 162088.97 - }, - { - "timestamp": 1754145312758, - "memoryTotal": 67266699264, - "memoryUsed": 33348337664, - "memoryFree": 33918361600, - "memoryUsagePercent": 49.57629559482112, - "memoryEfficiency": 50.42370440517888, - "cpuCount": 32, - "cpuLoad": 0.066875, - "platform": "linux", - "uptime": 162119 - }, - { - "timestamp": 1754145342778, - "memoryTotal": 67266699264, - "memoryUsed": 33063796736, - "memoryFree": 34202902528, - "memoryUsagePercent": 49.15329144698376, - "memoryEfficiency": 50.84670855301624, - "cpuCount": 32, - "cpuLoad": 0.056875, - "platform": "linux", - "uptime": 162149.02 - }, - { - "timestamp": 1754145372807, - "memoryTotal": 67266699264, - "memoryUsed": 32958738432, - "memoryFree": 34307960832, - "memoryUsagePercent": 48.99710970304583, - "memoryEfficiency": 51.00289029695417, - "cpuCount": 32, - "cpuLoad": 0.0384375, - "platform": "linux", - "uptime": 162179.05 - }, - { - "timestamp": 1754145402831, - "memoryTotal": 67266699264, - "memoryUsed": 32934944768, - "memoryFree": 34331754496, - "memoryUsagePercent": 48.96173757350723, - "memoryEfficiency": 51.03826242649277, - "cpuCount": 32, - "cpuLoad": 0.035625, - "platform": "linux", - "uptime": 162209.07 - }, - { - "timestamp": 1754145432854, - "memoryTotal": 67266699264, - "memoryUsed": 32948625408, - "memoryFree": 34318073856, - "memoryUsagePercent": 48.982075482382925, - "memoryEfficiency": 51.017924517617075, - "cpuCount": 32, - "cpuLoad": 0.0396875, - "platform": "linux", - "uptime": 162239.09 - }, - { - "timestamp": 1754145462858, - "memoryTotal": 67266699264, - "memoryUsed": 32971124736, - "memoryFree": 34295574528, - "memoryUsagePercent": 49.01552342653089, - "memoryEfficiency": 50.98447657346911, - "cpuCount": 32, - "cpuLoad": 0.0384375, - "platform": "linux", - "uptime": 162269.1 - }, - { - "timestamp": 1754145492887, - "memoryTotal": 67266699264, - "memoryUsed": 32998772736, - "memoryFree": 34267926528, - "memoryUsagePercent": 49.05662548788147, - "memoryEfficiency": 50.94337451211853, - "cpuCount": 32, - "cpuLoad": 0.0371875, - "platform": "linux", - "uptime": 162299.13 - }, - { - "timestamp": 1754145522908, - "memoryTotal": 67266699264, - "memoryUsed": 32998322176, - "memoryFree": 34268377088, - "memoryUsagePercent": 49.05595567651131, - "memoryEfficiency": 50.94404432348869, - "cpuCount": 32, - "cpuLoad": 0.03625, - "platform": "linux", - "uptime": 162329.15 - }, - { - "timestamp": 1754145552922, - "memoryTotal": 67266699264, - "memoryUsed": 33292541952, - "memoryFree": 33974157312, - "memoryUsagePercent": 49.493348590418506, - "memoryEfficiency": 50.506651409581494, - "cpuCount": 32, - "cpuLoad": 0.0340625, - "platform": "linux", - "uptime": 162359.16 - }, - { - "timestamp": 1754145582940, - "memoryTotal": 67266699264, - "memoryUsed": 33204154368, - "memoryFree": 34062544896, - "memoryUsagePercent": 49.361949867176406, - "memoryEfficiency": 50.638050132823594, - "cpuCount": 32, - "cpuLoad": 0.0253125, - "platform": "linux", - "uptime": 162389.18 - }, - { - "timestamp": 1754145612967, - "memoryTotal": 67266699264, - "memoryUsed": 33142366208, - "memoryFree": 34124333056, - "memoryUsagePercent": 49.2700943715507, - "memoryEfficiency": 50.7299056284493, - "cpuCount": 32, - "cpuLoad": 0.0265625, - "platform": "linux", - "uptime": 162419.21 - }, - { - "timestamp": 1754145643000, - "memoryTotal": 67266699264, - "memoryUsed": 33104384000, - "memoryFree": 34162315264, - "memoryUsagePercent": 49.21362927304641, - "memoryEfficiency": 50.78637072695359, - "cpuCount": 32, - "cpuLoad": 0.01625, - "platform": "linux", - "uptime": 162449.24 - }, - { - "timestamp": 1754145673030, - "memoryTotal": 67266699264, - "memoryUsed": 33068847104, - "memoryFree": 34197852160, - "memoryUsagePercent": 49.1607994235238, - "memoryEfficiency": 50.8392005764762, - "cpuCount": 32, - "cpuLoad": 0.0146875, - "platform": "linux", - "uptime": 162479.27 - }, - { - "timestamp": 1754145703060, - "memoryTotal": 67266699264, - "memoryUsed": 33126326272, - "memoryFree": 34140372992, - "memoryUsagePercent": 49.24624908677308, - "memoryEfficiency": 50.75375091322692, - "cpuCount": 32, - "cpuLoad": 0.025625, - "platform": "linux", - "uptime": 162509.3 - }, - { - "timestamp": 1754145733087, - "memoryTotal": 67266699264, - "memoryUsed": 33187151872, - "memoryFree": 34079547392, - "memoryUsagePercent": 49.33667362174437, - "memoryEfficiency": 50.66332637825563, - "cpuCount": 32, - "cpuLoad": 0.015625, - "platform": "linux", - "uptime": 162539.33 - }, - { - "timestamp": 1754145763100, - "memoryTotal": 67266699264, - "memoryUsed": 33421471744, - "memoryFree": 33845227520, - "memoryUsagePercent": 49.685018158586246, - "memoryEfficiency": 50.314981841413754, - "cpuCount": 32, - "cpuLoad": 0.0165625, - "platform": "linux", - "uptime": 162569.34 - }, - { - "timestamp": 1754145793124, - "memoryTotal": 67266699264, - "memoryUsed": 33593733120, - "memoryFree": 33672966144, - "memoryUsagePercent": 49.94110531298032, - "memoryEfficiency": 50.05889468701968, - "cpuCount": 32, - "cpuLoad": 0.046875, - "platform": "linux", - "uptime": 162599.36 - } -] \ No newline at end of file diff --git a/.claude-flow/metrics/task-metrics.json b/.claude-flow/metrics/task-metrics.json deleted file mode 100644 index 5da96cd..0000000 --- a/.claude-flow/metrics/task-metrics.json +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "id": "cmd-hooks-1754092494202", - "type": "hooks", - "success": true, - "duration": 2.922643000000008, - "timestamp": 1754092494205, - "metadata": {} - } -] \ No newline at end of file From 3bd50a1818dc4f1bd704a6a7e33a5eb203fe7043 Mon Sep 17 00:00:00 2001 From: David Stenglein Date: Tue, 12 Aug 2025 20:11:15 +0000 Subject: [PATCH 3/4] Updating .gitignore Signed-off-by: David Stenglein --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3eab115..64e3a8d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,8 @@ tmp*/ *-tmp/ rdf_output/ output/ +.kbp/ +fuseki-data/ # Claude Flow generated files .claude/settings.local.json @@ -28,4 +30,4 @@ claude-flow claude-flow.bat claude-flow.ps1 hive-mind-prompt-*.txt -.kbp/ +.claude-flow/metrics From 871b1b5c3a289fa8ae6769c4a8e594356dec7902 Mon Sep 17 00:00:00 2001 From: David Stenglein Date: Wed, 13 Aug 2025 15:00:18 +0000 Subject: [PATCH 4/4] feat: implement vocabulary reference strategy with centralized configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add local vocabulary cache at /vocabulary/ with kb.ttl file - Create centralized vocabulary configuration module - Add VERSION.json for tracking vocabulary metadata - Implement sync script for updating from upstream repository - Add comprehensive documentation for LLM agents - Create ADR-0014 documenting the vocabulary reference strategy - Update existing code to use centralized KB namespace import - Add tests for vocabulary configuration and integration This provides a deterministic, LLM-friendly approach to managing the external vocabulary dependency while maintaining clear provenance. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- CLAUDE.md | 31 ++ .../0014-vocabulary-reference-strategy.md | 153 ++++++ docs/development/vocabulary-usage-guide.md | 243 ++++++++++ scripts/sync-vocabulary.sh | 210 +++++++++ .../config/vocabulary.py | 114 +++++ .../models/kb_entities.py | 6 +- .../rdf_converter/converter.py | 4 +- tests/config/test_vocabulary.py | 177 +++++++ vocabulary/README.md | 173 +++++++ vocabulary/VERSION.json | 8 + vocabulary/kb.ttl | 439 ++++++++++++++++++ 11 files changed, 1552 insertions(+), 6 deletions(-) create mode 100644 docs/architecture/decisions/0014-vocabulary-reference-strategy.md create mode 100644 docs/development/vocabulary-usage-guide.md create mode 100755 scripts/sync-vocabulary.sh create mode 100644 src/knowledgebase_processor/config/vocabulary.py create mode 100644 tests/config/test_vocabulary.py create mode 100644 vocabulary/README.md create mode 100644 vocabulary/VERSION.json create mode 100644 vocabulary/kb.ttl diff --git a/CLAUDE.md b/CLAUDE.md index 5101176..6b28291 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,5 +1,30 @@ # Claude Code Configuration for Claude Flow +## Vocabulary Reference + +The project uses an RDF vocabulary from https://github.com/dstengle/knowledgebase-vocabulary/ + +### Key Information for LLM Agents: + +1. **Always import the vocabulary namespace from the centralized configuration:** + ```python + from knowledgebase_processor.config.vocabulary import KB + ``` + +2. **Never hardcode the namespace URI.** The namespace is managed centrally in `/vocabulary/VERSION.json` + +3. **The vocabulary is stored locally at `/vocabulary/kb.ttl` for deterministic builds** + +4. **Documentation is available at:** + - `/vocabulary/README.md` - Vocabulary usage and update instructions + - `/docs/development/vocabulary-usage-guide.md` - Developer guide for LLM agents + - `/docs/architecture/decisions/0014-vocabulary-reference-strategy.md` - Architecture decision + +5. **To update the vocabulary from the source repository:** + ```bash + ./scripts/sync-vocabulary.sh sync + ``` + ## 🚨 CRITICAL: PARALLEL EXECUTION AFTER SWARM INIT **MANDATORY RULE**: Once swarm is initialized with memory, ALL subsequent operations MUST be parallel: @@ -904,3 +929,9 @@ Claude Flow extends the base coordination with: --- Remember: **Claude Flow coordinates, Claude Code creates!** Start with `mcp__claude-flow__swarm_init` to enhance your development workflow. + +# important-instruction-reminders +Do what has been asked; nothing more, nothing less. +NEVER create files unless they're absolutely necessary for achieving your goal. +ALWAYS prefer editing an existing file to creating a new one. +NEVER proactively create documentation files (*.md) or README files. Only create documentation files if explicitly requested by the User. \ No newline at end of file diff --git a/docs/architecture/decisions/0014-vocabulary-reference-strategy.md b/docs/architecture/decisions/0014-vocabulary-reference-strategy.md new file mode 100644 index 0000000..4e16bab --- /dev/null +++ b/docs/architecture/decisions/0014-vocabulary-reference-strategy.md @@ -0,0 +1,153 @@ +# ADR-0014: Vocabulary Reference Strategy + +**Date:** 2025-08-13 + +**Status:** Proposed + +## Context + +The knowledgebase-processor requires a stable reference to the KB vocabulary defined in the external repository at https://github.com/dstengle/knowledgebase-vocabulary/. This vocabulary defines the RDF ontology used for knowledge graph representation. + +Currently, the project: +- Has a temporary copy at `/tmp-vocab/kb.ttl` +- Uses hardcoded namespace `http://example.org/kb/` in the code +- Needs to ensure all processing uses the correct vocabulary +- Must make the vocabulary reference easy for LLM agent coders to understand and use + +## Decision + +We will implement a **hybrid approach** combining local caching with remote reference documentation: + +### 1. Local Vocabulary Cache +- Maintain a local copy of the vocabulary at `/vocabulary/kb.ttl` +- Track this file in version control for deterministic builds +- Include version metadata in the file header + +### 2. Source Reference Documentation +- Create `/vocabulary/README.md` documenting: + - Source repository URL + - Last sync date and commit hash + - Update instructions + - Namespace URI to use + +### 3. Configuration-Based Namespace +- Define vocabulary namespace in configuration file +- Allow override via environment variable +- Default to the canonical namespace from the vocabulary + +### 4. Sync Mechanism +- Provide a script `/scripts/sync-vocabulary.sh` to update from source +- Document the sync process for maintainers +- Include validation to ensure vocabulary compatibility + +## Implementation Plan + +### Directory Structure +``` +vocabulary/ +├── kb.ttl # Local copy of vocabulary +├── README.md # Documentation and source reference +├── VERSION.json # Version metadata +└── .gitignore # (empty - track all files) +``` + +### Version Metadata Format +```json +{ + "source_repository": "https://github.com/dstengle/knowledgebase-vocabulary", + "source_commit": "sha-hash", + "sync_date": "2025-08-13T14:00:00Z", + "namespace": "http://example.org/kb/vocab#", + "version": "0.1.0-dev" +} +``` + +### Configuration Integration +```python +# src/knowledgebase_processor/config/vocabulary.py +import json +from pathlib import Path +from rdflib import Namespace + +def get_kb_namespace(): + """Get the KB namespace from vocabulary metadata.""" + vocab_dir = Path(__file__).parent.parent.parent.parent / "vocabulary" + version_file = vocab_dir / "VERSION.json" + + if version_file.exists(): + with open(version_file) as f: + metadata = json.load(f) + return Namespace(metadata["namespace"]) + + # Fallback to default + return Namespace("http://example.org/kb/vocab#") + +KB = get_kb_namespace() +``` + +## Rationale + +This approach provides: + +### For Development +- **Deterministic builds**: Local vocabulary ensures consistent behavior +- **Version control**: Track vocabulary changes with code changes +- **Offline development**: No runtime dependency on external repository + +### For LLM Agents +- **Clear documentation**: README explains the vocabulary source and usage +- **Simple imports**: `from knowledgebase_processor.config.vocabulary import KB` +- **Explicit versioning**: VERSION.json shows exactly what vocabulary version is used +- **Update instructions**: Clear process for keeping vocabulary current + +### For Maintenance +- **Traceable updates**: Git history shows when vocabulary was updated +- **Validation possible**: Can add tests to ensure vocabulary compatibility +- **Manual control**: Updates are intentional, not automatic + +## Alternatives Considered + +### 1. Git Submodule +- **Pros**: Automatic tracking of source repository +- **Cons**: Complex for LLM agents, requires git submodule knowledge + +### 2. Runtime Fetching +- **Pros**: Always up-to-date +- **Cons**: Network dependency, non-deterministic, harder to debug + +### 3. Direct Copy Only +- **Pros**: Simplest approach +- **Cons**: Loses connection to source, no version tracking + +### 4. Package Dependency +- **Pros**: Standard Python approach +- **Cons**: Vocabulary repo not published as package + +## Consequences + +### Positive +- Clear provenance of vocabulary +- Deterministic builds +- Easy for LLM agents to understand +- Simple to update when needed +- Works offline + +### Negative +- Manual sync required for updates +- Potential for drift from source +- Duplicate storage of vocabulary + +### Mitigations +- Regular sync schedule (monthly or on major updates) +- CI check to warn if vocabulary is outdated +- Clear documentation of update process + +## Related Decisions + +- [ADR-0009: Knowledge Graph and RDF Store](0009-knowledge-graph-rdf-store.md) +- [ADR-0010: Entity Modeling for RDF Serialization](0010-entity-modeling-for-rdf-serialization.md) +- [ADR-0012: Entity Modeling with Wiki-Based Architecture](0012-entity-modeling-with-wiki-based-architecture.md) + +## Notes + +The vocabulary should be treated as a critical dependency. Any updates should be tested thoroughly to ensure compatibility with existing RDF data and queries. \ No newline at end of file diff --git a/docs/development/vocabulary-usage-guide.md b/docs/development/vocabulary-usage-guide.md new file mode 100644 index 0000000..72ca1ca --- /dev/null +++ b/docs/development/vocabulary-usage-guide.md @@ -0,0 +1,243 @@ +# Vocabulary Usage Guide for LLM Agent Coders + +This guide explains how to work with the KB vocabulary when developing features for the knowledgebase-processor. + +## Quick Start + +### 1. Import the Vocabulary + +Always import the KB namespace from the centralized configuration: + +```python +from knowledgebase_processor.config.vocabulary import KB +``` + +**Never hardcode the namespace URI directly in your code.** + +### 2. Using the Vocabulary + +The KB namespace works like any RDFlib Namespace object: + +```python +from rdflib import Graph, Literal, URIRef, RDF +from knowledgebase_processor.config.vocabulary import KB + +# Create RDF triples +g = Graph() +g.bind("kb", KB) # Bind prefix for serialization + +# Reference vocabulary classes +doc_uri = URIRef("http://example.org/doc/1") +g.add((doc_uri, RDF.type, KB.Document)) +g.add((doc_uri, KB.title, Literal("My Document"))) + +# Reference vocabulary properties +g.add((doc_uri, KB.hasTag, KB["python"])) +g.add((doc_uri, KB.created, Literal("2025-08-13"))) +``` + +## Common Vocabulary Elements + +### Document Types +- `KB.Document` - Base document class +- `KB.DailyNote` - Daily note documents +- `KB.Meeting` - Meeting notes +- `KB.GroupMeeting` - Group meetings +- `KB.OneOnOneMeeting` - 1-on-1 meetings +- `KB.PersonProfile` - Person profiles +- `KB.BookNote` - Book notes +- `KB.ProjectDocument` - Project documents + +### Entity Types +- `KB.Person` - Individual people +- `KB.Company` - Organizations +- `KB.Place` - Locations +- `KB.Book` - Books +- `KB.Todo` - Action items +- `KB.Tag` - Tags/categories + +### Common Properties +- `KB.title` - Document title +- `KB.created` - Creation date +- `KB.hasTag` - Link to tags +- `KB.hasSection` - Document sections +- `KB.hasAttendee` - Meeting attendees +- `KB.isCompleted` - Todo completion status +- `KB.mentionedIn` - Entity mentions +- `KB.describes` - What a document describes + +## Code Patterns + +### Creating Entities + +```python +def create_document_entity(doc_id: str, title: str) -> Graph: + """Create RDF representation of a document.""" + from knowledgebase_processor.config.vocabulary import KB + + g = Graph() + g.bind("kb", KB) + + doc_uri = URIRef(f"http://example.org/documents/{doc_id}") + g.add((doc_uri, RDF.type, KB.Document)) + g.add((doc_uri, KB.title, Literal(title))) + + return g +``` + +### Checking Entity Types + +```python +def is_meeting_document(g: Graph, uri: URIRef) -> bool: + """Check if a URI represents a meeting document.""" + from knowledgebase_processor.config.vocabulary import KB + + return (uri, RDF.type, KB.Meeting) in g or \ + (uri, RDF.type, KB.GroupMeeting) in g or \ + (uri, RDF.type, KB.OneOnOneMeeting) in g +``` + +### Working with Properties + +```python +def add_tags_to_document(g: Graph, doc_uri: URIRef, tags: List[str]): + """Add tags to a document.""" + from knowledgebase_processor.config.vocabulary import KB + + for tag in tags: + tag_uri = KB[tag.replace(" ", "_")] + g.add((doc_uri, KB.hasTag, tag_uri)) +``` + +## Best Practices + +### DO: +- ✅ Import KB from `knowledgebase_processor.config.vocabulary` +- ✅ Use vocabulary classes for RDF.type assertions +- ✅ Use vocabulary properties for relationships +- ✅ Bind the KB prefix when creating graphs +- ✅ Check the vocabulary file for available terms + +### DON'T: +- ❌ Hardcode namespace URIs like `"http://example.org/kb/"` +- ❌ Create custom properties without checking the vocabulary +- ❌ Modify the vocabulary file directly +- ❌ Import Namespace and create your own KB namespace + +## Vocabulary Structure + +The vocabulary follows these patterns: + +1. **Classes** (Types): + - Named with PascalCase: `Document`, `Person`, `TodoItem` + - Represent entity types in the knowledge base + +2. **Properties** (Relationships): + - Named with camelCase: `hasTag`, `isCompleted`, `mentionedIn` + - Connect entities or add attributes + +3. **Instances** (Individuals): + - Can be created dynamically: `KB["tag_name"]` + - Used for tags, categories, etc. + +## Finding Available Terms + +To see what's available in the vocabulary: + +1. **Check the documentation**: `/vocabulary/README.md` +2. **Read the vocabulary file**: `/vocabulary/kb.ttl` +3. **Use introspection**: + +```python +from knowledgebase_processor.config.vocabulary import get_vocabulary_file_path +from rdflib import Graph + +# Load and explore the vocabulary +g = Graph() +g.parse(get_vocabulary_file_path(), format='turtle') + +# Find all classes +for s, p, o in g.triples((None, RDF.type, OWL.Class)): + print(f"Class: {s}") + +# Find all properties +for s, p, o in g.triples((None, RDF.type, OWL.ObjectProperty)): + print(f"Property: {s}") +``` + +## Adding New Terms + +If you need a term that doesn't exist: + +1. **Check if a similar term exists** in the vocabulary +2. **Consider using standard vocabularies** (Schema.org, FOAF, Dublin Core) +3. **Propose additions** to the source repository +4. **Document temporary extensions** clearly in your code + +Example of documenting a temporary extension: + +```python +# TODO: Propose kb:reviewStatus to vocabulary +# Temporary: Using custom property until vocabulary updated +REVIEW_STATUS = URIRef("http://example.org/kb/vocab#reviewStatus") +g.add((doc_uri, REVIEW_STATUS, Literal("pending"))) +``` + +## Testing with the Vocabulary + +```python +def test_document_creation(): + """Test creating a document with vocabulary.""" + from knowledgebase_processor.config.vocabulary import KB, validate_vocabulary + + # Ensure vocabulary is available + assert validate_vocabulary(), "Vocabulary not properly configured" + + # Test document creation + g = Graph() + g.bind("kb", KB) + + doc = URIRef("test:doc1") + g.add((doc, RDF.type, KB.Document)) + + # Verify the triple was added + assert (doc, RDF.type, KB.Document) in g +``` + +## Environment Variables + +For testing or special deployments, you can override the vocabulary namespace: + +```bash +export KB_VOCABULARY_NAMESPACE="http://test.example.org/kb/" +python your_script.py +``` + +## Common Issues and Solutions + +### Issue: "KB is not defined" +**Solution**: Import from the correct module: +```python +from knowledgebase_processor.config.vocabulary import KB +``` + +### Issue: "Unknown property kb:someProperty" +**Solution**: Check if the property exists in the vocabulary: +```bash +grep "someProperty" vocabulary/kb.ttl +``` + +### Issue: "Namespace mismatch in RDF output" +**Solution**: Ensure you're binding the namespace: +```python +g.bind("kb", KB) # Always bind before serializing +``` + +## Summary + +The vocabulary is your semantic schema. It defines: +- What types of things exist (classes) +- How they relate (properties) +- What they mean (semantics) + +Always use the centralized vocabulary configuration to ensure consistency across the codebase. When in doubt, check the vocabulary file and documentation. \ No newline at end of file diff --git a/scripts/sync-vocabulary.sh b/scripts/sync-vocabulary.sh new file mode 100755 index 0000000..1d09098 --- /dev/null +++ b/scripts/sync-vocabulary.sh @@ -0,0 +1,210 @@ +#!/bin/bash + +# Vocabulary Sync Script +# Synchronizes the local vocabulary cache with the source repository + +set -e + +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" +VOCAB_DIR="$PROJECT_ROOT/vocabulary" +VERSION_FILE="$VOCAB_DIR/VERSION.json" +VOCAB_FILE="$VOCAB_DIR/kb.ttl" + +# Source repository details +SOURCE_REPO="https://github.com/dstengle/knowledgebase-vocabulary" +SOURCE_BRANCH="main" +TEMP_DIR="/tmp/kb-vocab-sync-$$" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# Functions +print_usage() { + echo "Usage: $0 {check|diff|sync|help}" + echo "" + echo "Commands:" + echo " check - Check if local vocabulary is up-to-date" + echo " diff - Show differences between local and remote vocabulary" + echo " sync - Sync vocabulary from source repository" + echo " help - Show this help message" +} + +check_dependencies() { + if ! command -v git &> /dev/null; then + echo -e "${RED}Error: git is not installed${NC}" + exit 1 + fi + + if ! command -v curl &> /dev/null; then + echo -e "${RED}Error: curl is not installed${NC}" + exit 1 + fi +} + +get_remote_commit() { + git ls-remote "$SOURCE_REPO" "refs/heads/$SOURCE_BRANCH" | cut -f1 +} + +get_local_commit() { + if [ -f "$VERSION_FILE" ]; then + python3 -c "import json; print(json.load(open('$VERSION_FILE'))['source_commit'])" 2>/dev/null || echo "unknown" + else + echo "unknown" + fi +} + +check_status() { + echo "Checking vocabulary status..." + + local_commit=$(get_local_commit) + remote_commit=$(get_remote_commit) + + echo "Local commit: $local_commit" + echo "Remote commit: $remote_commit" + + if [ "$local_commit" = "$remote_commit" ]; then + echo -e "${GREEN}✓ Vocabulary is up-to-date${NC}" + return 0 + else + echo -e "${YELLOW}⚠ Vocabulary needs updating${NC}" + return 1 + fi +} + +show_diff() { + echo "Fetching remote vocabulary for comparison..." + + # Create temp directory + mkdir -p "$TEMP_DIR" + cd "$TEMP_DIR" + + # Clone repository (shallow clone for efficiency) + git clone --depth 1 --branch "$SOURCE_BRANCH" "$SOURCE_REPO" repo 2>/dev/null + + # Find the vocabulary file in the remote repo + remote_vocab="" + if [ -f "repo/vocabulary/kb.ttl" ]; then + remote_vocab="repo/vocabulary/kb.ttl" + elif [ -f "repo/kb.ttl" ]; then + remote_vocab="repo/kb.ttl" + else + echo -e "${RED}Error: Could not find kb.ttl in remote repository${NC}" + rm -rf "$TEMP_DIR" + exit 1 + fi + + # Show diff + if [ -f "$VOCAB_FILE" ]; then + echo "Showing differences (local vs remote):" + echo "=======================================" + diff -u "$VOCAB_FILE" "$remote_vocab" || true + else + echo -e "${YELLOW}Local vocabulary file does not exist${NC}" + echo "Remote vocabulary preview:" + echo "=========================" + head -n 50 "$remote_vocab" + fi + + # Cleanup + cd - > /dev/null + rm -rf "$TEMP_DIR" +} + +sync_vocabulary() { + echo "Syncing vocabulary from source repository..." + + # Create vocabulary directory if it doesn't exist + mkdir -p "$VOCAB_DIR" + + # Create temp directory + mkdir -p "$TEMP_DIR" + cd "$TEMP_DIR" + + # Clone repository + echo "Cloning repository..." + git clone --depth 1 --branch "$SOURCE_BRANCH" "$SOURCE_REPO" repo 2>/dev/null + + # Get the current commit hash + cd repo + current_commit=$(git rev-parse HEAD) + cd .. + + # Find and copy the vocabulary file + remote_vocab="" + if [ -f "repo/vocabulary/kb.ttl" ]; then + remote_vocab="repo/vocabulary/kb.ttl" + elif [ -f "repo/kb.ttl" ]; then + remote_vocab="repo/kb.ttl" + else + echo -e "${RED}Error: Could not find kb.ttl in remote repository${NC}" + rm -rf "$TEMP_DIR" + exit 1 + fi + + # Backup existing file if it exists + if [ -f "$VOCAB_FILE" ]; then + backup_file="$VOCAB_FILE.backup.$(date +%Y%m%d_%H%M%S)" + echo "Backing up existing vocabulary to: $backup_file" + cp "$VOCAB_FILE" "$backup_file" + fi + + # Copy the new vocabulary file + echo "Copying vocabulary file..." + cp "$remote_vocab" "$VOCAB_FILE" + + # Extract namespace from the vocabulary file + namespace=$(grep -m1 "@prefix kb:" "$VOCAB_FILE" | sed -n 's/.*<\(.*\)>.*/\1/p' || echo "http://example.org/kb/vocab#") + + # Update VERSION.json + echo "Updating VERSION.json..." + cat > "$VERSION_FILE" < /dev/null + rm -rf "$TEMP_DIR" + + echo -e "${GREEN}✓ Vocabulary synchronized successfully${NC}" + echo " Source commit: $current_commit" + echo " Namespace: $namespace" + echo "" + echo "Next steps:" + echo "1. Review the changes: git diff vocabulary/" + echo "2. Run tests: pytest tests/vocabulary/" + echo "3. Commit changes: git add vocabulary/ && git commit -m 'chore: sync vocabulary from upstream'" +} + +# Main script +check_dependencies + +case "${1:-help}" in + check) + check_status + ;; + diff) + show_diff + ;; + sync) + sync_vocabulary + ;; + help|--help|-h) + print_usage + ;; + *) + echo -e "${RED}Error: Unknown command '$1'${NC}" + print_usage + exit 1 + ;; +esac \ No newline at end of file diff --git a/src/knowledgebase_processor/config/vocabulary.py b/src/knowledgebase_processor/config/vocabulary.py new file mode 100644 index 0000000..bee5887 --- /dev/null +++ b/src/knowledgebase_processor/config/vocabulary.py @@ -0,0 +1,114 @@ +""" +Vocabulary configuration module. + +This module provides access to the KB vocabulary namespace used throughout +the knowledgebase-processor. The vocabulary is maintained in an external +repository and cached locally for deterministic builds. + +Usage: + from knowledgebase_processor.config.vocabulary import KB + + # Use the namespace to create URIs + document_class = KB.Document + has_tag_property = KB.hasTag +""" + +import json +import os +from pathlib import Path +from typing import Optional + +from rdflib import Namespace + + +def get_vocabulary_metadata() -> dict: + """ + Load vocabulary metadata from VERSION.json. + + Returns: + Dictionary containing vocabulary metadata including namespace URI. + """ + # Navigate from this file to project root, then to vocabulary directory + vocab_dir = Path(__file__).parent.parent.parent.parent / "vocabulary" + version_file = vocab_dir / "VERSION.json" + + if version_file.exists(): + with open(version_file, 'r') as f: + return json.load(f) + + # Return default metadata if file doesn't exist + return { + "namespace": "http://example.org/kb/vocab#", + "version": "unknown", + "source_repository": "https://github.com/dstengle/knowledgebase-vocabulary" + } + + +def get_kb_namespace() -> Namespace: + """ + Get the KB namespace from vocabulary metadata. + + This function reads the namespace URI from the VERSION.json file + in the vocabulary directory. If the file doesn't exist or can't + be read, it falls back to a default namespace. + + The namespace can be overridden using the KB_VOCABULARY_NAMESPACE + environment variable for testing or special deployments. + + Returns: + rdflib.Namespace object for the KB vocabulary. + """ + # Check for environment variable override + env_namespace = os.environ.get('KB_VOCABULARY_NAMESPACE') + if env_namespace: + return Namespace(env_namespace) + + # Load from metadata + metadata = get_vocabulary_metadata() + return Namespace(metadata["namespace"]) + + +def get_vocabulary_file_path() -> Path: + """ + Get the path to the local vocabulary file. + + Returns: + Path object pointing to the kb.ttl vocabulary file. + """ + vocab_dir = Path(__file__).parent.parent.parent.parent / "vocabulary" + return vocab_dir / "kb.ttl" + + +def validate_vocabulary() -> bool: + """ + Validate that the vocabulary file exists and is readable. + + Returns: + True if vocabulary is valid and accessible, False otherwise. + """ + vocab_file = get_vocabulary_file_path() + + if not vocab_file.exists(): + return False + + try: + # Try to parse the vocabulary file + from rdflib import Graph + g = Graph() + g.parse(vocab_file, format='turtle') + return True + except Exception: + return False + + +# Primary export: the KB namespace +KB = get_kb_namespace() + +# Additional exports for vocabulary management +__all__ = [ + 'KB', + 'get_vocabulary_metadata', + 'get_kb_namespace', + 'get_vocabulary_file_path', + 'validate_vocabulary' +] \ No newline at end of file diff --git a/src/knowledgebase_processor/models/kb_entities.py b/src/knowledgebase_processor/models/kb_entities.py index e6ccb45..7e4f2ca 100644 --- a/src/knowledgebase_processor/models/kb_entities.py +++ b/src/knowledgebase_processor/models/kb_entities.py @@ -2,10 +2,10 @@ from typing import Optional, Tuple, List from pydantic import BaseModel, Field -from rdflib.namespace import SDO as SCHEMA, RDFS, XSD, Namespace # Changed SCHEMA to SDO as SCHEMA +from rdflib.namespace import SDO as SCHEMA, RDFS, XSD -# Define custom namespace -KB = Namespace("http://example.org/kb/") +# Import KB namespace from centralized configuration +from knowledgebase_processor.config.vocabulary import KB class KbBaseEntity(BaseModel): diff --git a/src/knowledgebase_processor/rdf_converter/converter.py b/src/knowledgebase_processor/rdf_converter/converter.py index 1cdae58..eadd8c5 100644 --- a/src/knowledgebase_processor/rdf_converter/converter.py +++ b/src/knowledgebase_processor/rdf_converter/converter.py @@ -6,9 +6,7 @@ from rdflib.namespace import RDF, RDFS, XSD, SDO as SCHEMA from knowledgebase_processor.models.kb_entities import KbBaseEntity - -# Define Namespaces -KB = Namespace("http://example.org/kb/") # Ensure this matches kb_entities.py +from knowledgebase_processor.config.vocabulary import KB class RdfConverter: diff --git a/tests/config/test_vocabulary.py b/tests/config/test_vocabulary.py new file mode 100644 index 0000000..5b19b2f --- /dev/null +++ b/tests/config/test_vocabulary.py @@ -0,0 +1,177 @@ +""" +Tests for vocabulary configuration and integration. +""" + +import json +from pathlib import Path +import pytest +from rdflib import Graph, URIRef, Literal, RDF + +from knowledgebase_processor.config.vocabulary import ( + KB, + get_vocabulary_metadata, + get_vocabulary_file_path, + validate_vocabulary, + get_kb_namespace +) + + +class TestVocabularyConfiguration: + """Test vocabulary configuration module.""" + + def test_kb_namespace_import(self): + """Test that KB namespace can be imported.""" + assert KB is not None + assert str(KB) == "http://example.org/kb/vocab#" + + def test_vocabulary_metadata_loading(self): + """Test loading vocabulary metadata.""" + metadata = get_vocabulary_metadata() + + assert isinstance(metadata, dict) + assert "namespace" in metadata + assert "source_repository" in metadata + assert metadata["source_repository"] == "https://github.com/dstengle/knowledgebase-vocabulary" + + def test_vocabulary_file_path(self): + """Test getting vocabulary file path.""" + vocab_path = get_vocabulary_file_path() + + assert isinstance(vocab_path, Path) + assert vocab_path.name == "kb.ttl" + assert vocab_path.parent.name == "vocabulary" + + def test_vocabulary_validation(self): + """Test vocabulary validation.""" + is_valid = validate_vocabulary() + + # Should be valid after our setup + assert is_valid is True + + def test_vocabulary_file_exists(self): + """Test that vocabulary file exists.""" + vocab_path = get_vocabulary_file_path() + assert vocab_path.exists() + + def test_vocabulary_file_parseable(self): + """Test that vocabulary file can be parsed as RDF.""" + vocab_path = get_vocabulary_file_path() + + g = Graph() + # Should not raise an exception + g.parse(vocab_path, format='turtle') + + # Check that it contains some expected content + assert len(g) > 0 + + def test_kb_namespace_usage(self): + """Test using KB namespace to create URIs.""" + # Test creating class URIs + document_uri = KB.Document + assert isinstance(document_uri, URIRef) + assert str(document_uri) == "http://example.org/kb/vocab#Document" + + # Test creating property URIs + has_tag_uri = KB.hasTag + assert isinstance(has_tag_uri, URIRef) + assert str(has_tag_uri) == "http://example.org/kb/vocab#hasTag" + + # Test creating dynamic URIs + tag_uri = KB["python"] + assert isinstance(tag_uri, URIRef) + assert str(tag_uri) == "http://example.org/kb/vocab#python" + + def test_vocabulary_in_rdf_graph(self): + """Test using vocabulary in RDF graph operations.""" + g = Graph() + g.bind("kb", KB) + + # Create a document entity + doc_uri = URIRef("http://example.org/documents/test-doc") + g.add((doc_uri, RDF.type, KB.Document)) + g.add((doc_uri, KB.title, Literal("Test Document"))) + g.add((doc_uri, KB.hasTag, KB["test"])) + + # Verify triples were added + assert (doc_uri, RDF.type, KB.Document) in g + assert (doc_uri, KB.title, Literal("Test Document")) in g + assert (doc_uri, KB.hasTag, KB["test"]) in g + + # Test serialization includes namespace binding + turtle_output = g.serialize(format='turtle') + assert "@prefix kb:" in turtle_output + assert "kb:Document" in turtle_output or str(KB.Document) in turtle_output + + +class TestVocabularyIntegration: + """Test vocabulary integration with other modules.""" + + def test_kb_entities_import(self): + """Test that kb_entities module uses centralized vocabulary.""" + from knowledgebase_processor.models.kb_entities import KB as entities_KB + from knowledgebase_processor.config.vocabulary import KB as config_KB + + # Should be the same namespace + assert str(entities_KB) == str(config_KB) + + def test_rdf_converter_import(self): + """Test that rdf_converter module uses centralized vocabulary.""" + from knowledgebase_processor.rdf_converter.converter import KB as converter_KB + from knowledgebase_processor.config.vocabulary import KB as config_KB + + # Should be the same namespace + assert str(converter_KB) == str(config_KB) + + def test_vocabulary_consistency(self): + """Test that vocabulary is consistently used across modules.""" + from knowledgebase_processor.models.kb_entities import KbTodoItem + from knowledgebase_processor.rdf_converter.converter import RdfConverter + + # Create a todo item + todo = KbTodoItem( + kb_id="todo-1", + description="Test todo item", + is_completed=False + ) + + # Convert to RDF + converter = RdfConverter() + g = converter.kb_entity_to_graph(todo) + + # Check that it uses the correct namespace + assert len(g) > 0 + + # The entity should have the KB.Entity type (from base class) + todo_uri = URIRef("http://example.org/kb/todo-1") + assert any((todo_uri, RDF.type, o) for s, p, o in g if s == todo_uri) + + +class TestVersionFile: + """Test VERSION.json file structure.""" + + def test_version_file_exists(self): + """Test that VERSION.json exists.""" + version_path = Path(__file__).parent.parent.parent / "vocabulary" / "VERSION.json" + assert version_path.exists() + + def test_version_file_structure(self): + """Test VERSION.json has required fields.""" + version_path = Path(__file__).parent.parent.parent / "vocabulary" / "VERSION.json" + + with open(version_path) as f: + version_data = json.load(f) + + required_fields = [ + "source_repository", + "source_commit", + "sync_date", + "namespace", + "version" + ] + + for field in required_fields: + assert field in version_data, f"Missing required field: {field}" + + # Validate field values + assert version_data["source_repository"] == "https://github.com/dstengle/knowledgebase-vocabulary" + assert version_data["namespace"] == "http://example.org/kb/vocab#" \ No newline at end of file diff --git a/vocabulary/README.md b/vocabulary/README.md new file mode 100644 index 0000000..9bfb6dc --- /dev/null +++ b/vocabulary/README.md @@ -0,0 +1,173 @@ +# KB Vocabulary Reference + +This directory contains the RDF vocabulary/ontology used by the knowledgebase-processor. + +## Source + +The vocabulary is maintained in the external repository: +- **Repository**: https://github.com/dstengle/knowledgebase-vocabulary +- **Primary File**: `vocabulary/kb.ttl` +- **License**: MIT + +## Current Version + +See `VERSION.json` for: +- Source commit reference +- Last sync date +- Namespace URI +- Version information + +## Usage in Code + +### Import the Namespace + +```python +from knowledgebase_processor.config.vocabulary import KB + +# Use the namespace +from rdflib import Graph, URIRef + +g = Graph() +entity_uri = KB.Document # Creates URIRef for kb:Document class +property_uri = KB.hasTag # Creates URIRef for kb:hasTag property +``` + +### Direct File Access + +```python +from pathlib import Path + +vocab_file = Path("vocabulary/kb.ttl") +# Load vocabulary for validation or introspection +``` + +## Vocabulary Structure + +The KB vocabulary defines: + +### Core Classes +- `kb:Document` - Base class for markdown documents +- `kb:Person` - Individual entities +- `kb:Organization` - Companies and groups +- `kb:Meeting` - Meeting notes and events +- `kb:TodoItem` - Tasks and action items +- `kb:Section` - Document structure elements + +### Key Properties +- `kb:hasTag` - Links documents to tags +- `kb:hasAttendee` - Links meetings to participants +- `kb:isCompleted` - Status of todo items +- `kb:mentionedIn` - Entity references in documents + +### Integration with Standard Vocabularies +- FOAF for person modeling +- Schema.org for general semantics +- Dublin Core for metadata +- SKOS for tag hierarchies + +## Updating the Vocabulary + +### Manual Update Process + +1. Check for updates in the source repository: + ```bash + ./scripts/sync-vocabulary.sh check + ``` + +2. Review changes before syncing: + ```bash + ./scripts/sync-vocabulary.sh diff + ``` + +3. Sync from source repository: + ```bash + ./scripts/sync-vocabulary.sh sync + ``` + +4. Update VERSION.json with new commit hash and date + +5. Test compatibility: + ```bash + pytest tests/vocabulary/ + ``` + +6. Commit changes: + ```bash + git add vocabulary/ + git commit -m "chore: sync vocabulary from upstream" + ``` + +### Automated Validation + +The vocabulary is validated during: +- CI/CD pipeline runs +- Pre-commit hooks (if configured) +- Test suite execution + +## For LLM Agent Coders + +When working with the vocabulary: + +1. **Always use the configured namespace**: Import `KB` from `knowledgebase_processor.config.vocabulary` +2. **Reference this documentation**: The vocabulary structure is documented here +3. **Check VERSION.json**: Ensure you're working with the expected version +4. **Don't modify kb.ttl directly**: Changes should be made in the source repository +5. **Use type hints**: The vocabulary provides semantic types for entities + +### Example: Creating RDF Triples + +```python +from rdflib import Graph, Literal, URIRef +from knowledgebase_processor.config.vocabulary import KB + +# Create a graph +g = Graph() +g.bind("kb", KB) + +# Create a document entity +doc_uri = URIRef("http://example.org/documents/my-note") +g.add((doc_uri, RDF.type, KB.Document)) +g.add((doc_uri, KB.title, Literal("My Daily Note"))) +g.add((doc_uri, KB.hasTag, KB["work"])) + +# Create a todo item +todo_uri = URIRef("http://example.org/todos/task-1") +g.add((todo_uri, RDF.type, KB.TodoItem)) +g.add((todo_uri, KB.description, Literal("Complete vocabulary integration"))) +g.add((todo_uri, KB.isCompleted, Literal(False))) +``` + +## Vocabulary Evolution + +The vocabulary is designed to evolve with the project needs: + +1. **Backward Compatibility**: Changes maintain compatibility with existing data +2. **Semantic Versioning**: Version numbers follow semver conventions +3. **Migration Support**: Tools provided for data migration when needed +4. **Documentation**: All changes documented in the source repository + +## Troubleshooting + +### Namespace Mismatch +If you see namespace errors, ensure: +- VERSION.json matches the namespace in kb.ttl +- Code imports use the configured namespace +- RDF data uses consistent namespace URIs + +### Missing Classes/Properties +If a class or property is missing: +1. Check if it exists in the source repository +2. Verify your local copy is up-to-date +3. Consider if it needs to be added to the vocabulary + +### Import Errors +If vocabulary imports fail: +1. Ensure the vocabulary directory exists +2. Check that VERSION.json is valid JSON +3. Verify Python path includes the project root + +## Related Documentation + +- [ADR-0014: Vocabulary Reference Strategy](../architecture/decisions/0014-vocabulary-reference-strategy.md) +- [ADR-0009: Knowledge Graph and RDF Store](../architecture/decisions/0009-knowledge-graph-rdf-store.md) +- [Entity Modeling Documentation](../architecture/decisions/0012-entity-modeling-with-wiki-based-architecture.md) \ No newline at end of file diff --git a/vocabulary/VERSION.json b/vocabulary/VERSION.json new file mode 100644 index 0000000..7b76cbe --- /dev/null +++ b/vocabulary/VERSION.json @@ -0,0 +1,8 @@ +{ + "source_repository": "https://github.com/dstengle/knowledgebase-vocabulary", + "source_commit": "main", + "sync_date": "2025-08-13T14:00:00Z", + "namespace": "http://example.org/kb/vocab#", + "version": "0.1.0-dev", + "notes": "Initial vocabulary sync from tmp-vocab/kb.ttl" +} \ No newline at end of file diff --git a/vocabulary/kb.ttl b/vocabulary/kb.ttl new file mode 100644 index 0000000..99ac140 --- /dev/null +++ b/vocabulary/kb.ttl @@ -0,0 +1,439 @@ +@prefix kb: . +@prefix owl: . +@prefix rdfs: . +@prefix xsd: . +@prefix doco: . +@prefix dcterms: . +@prefix schema: . +@prefix foaf: . +@prefix rel: . +@prefix prov: . +@prefix sioc: . +@prefix skos: . + +# ============================================ +# KB VOCABULARY DEFINITION +# ============================================ + +kb: a owl:Ontology ; + dcterms:title "Personal Knowledge Base Vocabulary" ; + dcterms:description "Vocabulary for markdown-based knowledge management" ; + dcterms:created "2024-11-15"^^xsd:date ; + owl:imports , + , + . + +# ============================================ +# DOCUMENT CLASSES +# ============================================ + +# Base document class +kb:Document a owl:Class ; + rdfs:subClassOf schema:Article ; + rdfs:comment "A markdown document in the knowledge base" . + +# Document type hierarchy +kb:DailyNote a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Daily notes document (type: daily-note)" . + +kb:Meeting a owl:Class ; + rdfs:subClassOf kb:Document, schema:Event ; + rdfs:comment "Meeting notes document" . + +kb:GroupMeeting a owl:Class ; + rdfs:subClassOf kb:Meeting ; + rdfs:comment "Group meeting notes (type: group-meeting)" . + +kb:OneOnOneMeeting a owl:Class ; + rdfs:subClassOf kb:Meeting ; + rdfs:comment "1-on-1 meeting notes (type: 1on1-meeting)" . + +kb:PersonProfile a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Person profile document (type: person)" . + +kb:BookNote a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Book notes document (type: book)" . + +kb:PlaceNote a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Place/location notes (type: place)" . + +kb:ProjectDocument a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Project-related document" . + +kb:ResearchNote a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Research documents" . + +kb:ReadingList a owl:Class ; + rdfs:subClassOf kb:Document ; + rdfs:comment "Reading list or book collection" . + +# ============================================ +# DOCUMENT STRUCTURE CLASSES +# ============================================ + +kb:Section a owl:Class ; + rdfs:subClassOf doco:Section ; + rdfs:comment "A section in a markdown document, marked by ## headers" . + +kb:WikiLink a owl:Class ; + rdfs:comment "A [[wiki-style]] link within a document" . + +kb:TodoItem a owl:Class ; + rdfs:subClassOf doco:ListItem ; + rdfs:comment "A checkbox todo item: - [ ] or - [x]" . + +kb:Property a owl:Class ; + rdfs:comment "A key-value property from front matter or inline" . + +# ============================================ +# ENTITY CLASSES +# ============================================ + +kb:Person a owl:Class ; + owl:equivalentClass foaf:Person ; + rdfs:comment "A person mentioned in the KB" . + +kb:Company a owl:Class ; + rdfs:subClassOf foaf:Organization ; + rdfs:comment "A company/organization mentioned in the KB" . + +kb:Place a owl:Class ; + rdfs:subClassOf schema:Place ; + rdfs:comment "A location mentioned in the KB" . + +kb:Book a owl:Class ; + rdfs:subClassOf schema:Book ; + rdfs:comment "A book referenced in the KB" . + +kb:ResearchPaper a owl:Class ; + rdfs:subClassOf schema:ScholarlyArticle ; + rdfs:comment "Academic paper or publication" . + +kb:Todo a owl:Class ; + rdfs:subClassOf schema:Action ; + rdfs:comment "An inferred todo/action item" . + +kb:Relationship a owl:Class ; + rdfs:comment "An inferred relationship between people" . + +kb:ProfessionalRelationship a owl:Class ; + rdfs:subClassOf kb:Relationship ; + rdfs:comment "Work-related relationship" . + +# ============================================ +# TAG TAXONOMY (using SKOS) +# ============================================ + +kb:Tag a owl:Class ; + rdfs:subClassOf skos:Concept ; + rdfs:comment "A tag or category in the knowledge base" . + +kb:TagScheme a owl:Class ; + rdfs:subClassOf skos:ConceptScheme ; + rdfs:comment "A hierarchical tag taxonomy" . + +# Tag hierarchy uses SKOS properties +kb:hasParentTag rdfs:subPropertyOf skos:broader ; + rdfs:domain kb:Tag ; + rdfs:range kb:Tag ; + rdfs:comment "Parent tag in hierarchy (e.g., bydate/2024 → bydate)" . + +kb:hasChildTag rdfs:subPropertyOf skos:narrower ; + rdfs:domain kb:Tag ; + rdfs:range kb:Tag ; + rdfs:comment "Child tag in hierarchy" . + +kb:relatedTag rdfs:subPropertyOf skos:related ; + rdfs:domain kb:Tag ; + rdfs:range kb:Tag ; + rdfs:comment "Related but not hierarchical" . + +# Tag properties +kb:tagName rdfs:subPropertyOf skos:prefLabel ; + rdfs:domain kb:Tag ; + rdfs:comment "Display name of the tag" . + +kb:autoGenerated a owl:DatatypeProperty ; + rdfs:domain kb:Tag ; + rdfs:range xsd:boolean ; + rdfs:comment "True for system-generated tags like bydate/" . + +# ============================================ +# DOCUMENT PROPERTIES +# ============================================ + +# Reuse standard properties where applicable +kb:title rdfs:subPropertyOf dcterms:title ; + rdfs:domain kb:Document ; + rdfs:comment "Document title from front matter" . + +kb:created rdfs:subPropertyOf dcterms:created ; + rdfs:domain kb:Document ; + rdfs:range xsd:dateTime ; + rdfs:comment "Creation timestamp" . + +kb:filePath a owl:DatatypeProperty ; + rdfs:subPropertyOf dcterms:identifier ; + rdfs:domain kb:Document ; + rdfs:comment "Relative file path in the knowledge base" . + +kb:documentType a owl:DatatypeProperty ; + rdfs:domain kb:Document ; + rdfs:comment "The 'type' field from front matter" . + +kb:hasSection rdfs:subPropertyOf dcterms:hasPart ; + rdfs:domain kb:Document ; + rdfs:range kb:Section ; + rdfs:comment "Links document to its sections" . + +kb:hasTag a owl:ObjectProperty ; + rdfs:subPropertyOf dcterms:subject ; + rdfs:domain kb:Document ; + rdfs:range kb:Tag ; + rdfs:comment "Tags from front matter or inline" . + +# ============================================ +# SECTION PROPERTIES +# ============================================ + +kb:heading a owl:DatatypeProperty ; + rdfs:subPropertyOf dcterms:title ; + rdfs:domain kb:Section ; + rdfs:comment "Section heading text" . + +kb:headingLevel a owl:DatatypeProperty ; + rdfs:domain kb:Section ; + rdfs:range xsd:integer ; + rdfs:comment "Markdown heading level (1-6)" . + +kb:contains a owl:ObjectProperty ; + rdfs:subPropertyOf dcterms:hasPart ; + rdfs:domain kb:Section ; + rdfs:comment "Links, todos, and other content in section" . + +# ============================================ +# LINK PROPERTIES +# ============================================ + +kb:target a owl:ObjectProperty ; + rdfs:domain kb:WikiLink ; + rdfs:comment "Entity the link points to" . + +kb:linkText a owl:DatatypeProperty ; + rdfs:domain kb:WikiLink ; + rdfs:comment "The literal [[link text]]" . + +kb:inSection a owl:ObjectProperty ; + rdfs:domain kb:WikiLink ; + rdfs:range kb:Section ; + rdfs:comment "Section containing this link" . + +kb:surroundingText a owl:DatatypeProperty ; + rdfs:domain kb:WikiLink ; + rdfs:comment "Text context around the link" . + +# ============================================ +# TODO PROPERTIES +# ============================================ + +kb:isCompleted a owl:DatatypeProperty ; + rdfs:domain kb:TodoItem ; + rdfs:range xsd:boolean ; + rdfs:comment "Whether checkbox is checked" . + +kb:rawText a owl:DatatypeProperty ; + rdfs:domain kb:TodoItem ; + rdfs:comment "Original markdown text of todo" . + +kb:due a owl:DatatypeProperty ; + rdfs:subPropertyOf dcterms:date ; + rdfs:domain kb:Todo ; + rdfs:range xsd:date ; + rdfs:comment "Due date from [[due:: date]]" . + +kb:assignedTo a owl:ObjectProperty ; + rdfs:domain kb:Todo ; + rdfs:range kb:Person ; + rdfs:comment "Person responsible for todo" . + +kb:description a owl:DatatypeProperty ; + rdfs:domain kb:Todo ; + rdfs:comment "Todo description text" . + +# ============================================ +# ENTITY PROPERTIES +# ============================================ + +kb:isPlaceholder a owl:DatatypeProperty ; + rdfs:range xsd:boolean ; + rdfs:comment "True if entity has no dedicated document" . + +kb:describedBy a owl:ObjectProperty ; + owl:inverseOf kb:describes ; + rdfs:comment "Document that describes this entity" . + +kb:describes a owl:ObjectProperty ; + rdfs:domain kb:Document ; + rdfs:comment "Entity described by this document" . + +kb:mentionedIn a owl:ObjectProperty ; + rdfs:comment "Documents where entity is mentioned" . + +kb:mentionCount a owl:DatatypeProperty ; + rdfs:range xsd:integer ; + rdfs:comment "Number of times entity is mentioned" . + +# ============================================ +# MEETING PROPERTIES +# ============================================ + +kb:hasAttendee a owl:ObjectProperty ; + rdfs:subPropertyOf schema:attendee ; + rdfs:domain kb:Meeting ; + rdfs:range kb:Person ; + rdfs:comment "Person who attended the meeting" . + +kb:hasSpeaker a owl:ObjectProperty ; + rdfs:domain kb:Meeting ; + rdfs:range kb:Person ; + rdfs:comment "Person who spoke/presented" . + +kb:relatedToCompany a owl:ObjectProperty ; + rdfs:domain kb:Meeting ; + rdfs:range kb:Company ; + rdfs:comment "Company discussed or involved" . + +kb:meetingLocation a owl:ObjectProperty ; + rdfs:subPropertyOf schema:location ; + rdfs:domain kb:Meeting ; + rdfs:range kb:Place ; + rdfs:comment "Where the meeting took place" . + +# ============================================ +# RELATIONSHIP PROPERTIES +# ============================================ + +kb:hasRelationship a owl:ObjectProperty ; + rdfs:domain kb:Person ; + rdfs:range kb:Relationship . + +kb:withPerson a owl:ObjectProperty ; + rdfs:domain kb:Relationship ; + rdfs:range kb:Person . + +kb:relationshipStrength a owl:DatatypeProperty ; + rdfs:domain kb:Relationship ; + rdfs:range xsd:float ; + rdfs:comment "0.0 to 1.0 based on frequency/recency" . + +kb:lastInteraction a owl:DatatypeProperty ; + rdfs:domain kb:Relationship ; + rdfs:range xsd:date . + +kb:isStale a owl:DatatypeProperty ; + rdfs:domain kb:Relationship ; + rdfs:range xsd:boolean ; + rdfs:comment "True if no recent interaction" . + +kb:meetingCount a owl:DatatypeProperty ; + rdfs:domain kb:Relationship ; + rdfs:range xsd:integer . + +# Simple relationship properties (derived) +kb:frequentlyMeetsWith rdfs:subPropertyOf rel:worksWith ; + rdfs:domain kb:Person ; + rdfs:range kb:Person ; + rdfs:comment "Meets at least monthly" . + +# ============================================ +# BOOK PROPERTIES (using Schema.org/Dublin Core) +# ============================================ + +kb:hasAuthor rdfs:subPropertyOf schema:author ; + rdfs:domain kb:Book ; + rdfs:range kb:Person ; + rdfs:comment "Book author (from [[book]] by [[author]] pattern)" . + +kb:isbn rdfs:subPropertyOf schema:isbn ; + rdfs:domain kb:Book ; + rdfs:comment "ISBN from front matter" . + +kb:publicationYear rdfs:subPropertyOf schema:datePublished ; + rdfs:domain kb:Book ; + rdfs:range xsd:integer ; + rdfs:comment "Year of publication" . + +kb:bookStatus a owl:DatatypeProperty ; + rdfs:domain kb:Book ; + rdfs:comment "reading, completed, to-read, abandoned" . + +kb:rating a owl:DatatypeProperty ; + rdfs:domain kb:Book ; + rdfs:range xsd:integer ; + rdfs:comment "Personal rating (1-5 stars)" . + +# ============================================ +# PLACE PROPERTIES (using Schema.org/GeoNames) +# ============================================ + +kb:locatedIn rdfs:subPropertyOf schema:containedInPlace ; + rdfs:domain kb:Place ; + rdfs:range kb:Place ; + rdfs:comment "Hierarchical location (city in country)" . + +kb:placeType a owl:DatatypeProperty ; + rdfs:domain kb:Place ; + rdfs:comment "city, country, venue, office, etc." . + +kb:visitedOn a owl:DatatypeProperty ; + rdfs:domain kb:Place ; + rdfs:range xsd:date ; + rdfs:comment "Dates when visited" . + +kb:coordinates rdfs:subPropertyOf schema:geo ; + rdfs:domain kb:Place ; + rdfs:comment "Geographic coordinates if known" . + +# ============================================ +# PROVENANCE PROPERTIES +# ============================================ + +kb:derivedFrom a owl:ObjectProperty ; + rdfs:subPropertyOf prov:wasDerivedFrom ; + rdfs:comment "Source document/link for inferred data" . + +kb:inferredAt a owl:DatatypeProperty ; + rdfs:subPropertyOf prov:generatedAtTime ; + rdfs:range xsd:dateTime ; + rdfs:comment "When this inference was made" . + +# ============================================ +# INFERENCE RULES (Conceptual) +# ============================================ + +kb:InferenceRule a owl:Class ; + rdfs:comment "Rules for deriving high-level facts" . + +kb:attendeeInference a kb:InferenceRule ; + rdfs:comment """ + IF link appears in section with heading 'Attendees' + THEN document hasAttendee target-of-link + """ . + +kb:todoOwnerInference a kb:InferenceRule ; + rdfs:comment """ + IF todo appears in 1on1-meeting document + THEN todo assignedTo attendee-of-meeting + """ . + +kb:relationshipStalenessInference a kb:InferenceRule ; + rdfs:comment """ + IF relationship lastInteraction < 6-months-ago + THEN relationship isStale true + """ .