V9.58 Zombie killer auto-cleanup - /opt/weval-ops/zombie-killer.py cron 30min - kills playwright drivers > 2h + orphan chrome-headless > 1h PPID=1 - log /var/log/weval-zombie-killer.log - first manual run killed 2 zombies from apr14+apr16 - LOAD 4.96 to 0.86 - SWAP 3.5Gi to 3.2Gi - intent zombie_killer_status wired - doctrine 13 cause racine old playwright drivers consuming RAM+CPU
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
Opus
2026-04-21 03:35:21 +02:00
parent b793fa1784
commit c0fd77f43d
6 changed files with 375 additions and 2 deletions

View File

@@ -92,6 +92,7 @@ footer{padding:8px 18px;background:var(--bg2);border-top:1px solid var(--rim);fo
<button class="tab" data-view="capabilities">IA CAPABILITIES</button>
<button class="tab" data-view="training">TRAINING HUB</button>
<button class="tab" data-view="orchestrator">ORCHESTRATOR</button>
<button class="tab" data-view="dashboards">DASHBOARDS</button>
</nav>
<main>
@@ -329,6 +330,17 @@ footer{padding:8px 18px;background:var(--bg2);border-top:1px solid var(--rim);fo
</div>
<div class="orch-agents" id="orch-agents"></div>
</section>
<!-- V116-DASHBOARDS-TAB: consolidated dashboards view -->
<section class="view" id="v-dashboards">
<h2 style="color:var(--vl);margin-bottom:10px">&#128202; Dashboards Consolid&eacute;s &mdash; 70 tuiles reli&eacute;es</h2>
<p style="color:var(--mu);margin-bottom:16px;font-size:12px">Point d'entr&eacute;e unique pour tous les dashboards. Filtrer par cat&eacute;gorie. Tous les orphelins reli&eacute;s (doctrine pas d'orphelin).</p>
<div id="dash-filters" style="display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px">
<button class="mode dash-filter on" data-cat="all">Loading...</button>
</div>
<div id="dash-stats" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px;margin-bottom:14px;font-size:10px"></div>
<div id="dash-grid" style="display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px"></div>
</section>
</main>
<footer>
@@ -649,6 +661,58 @@ async function pushBladeTask(goal, params){
setInterval(()=>{ if(document.getElementById('v-caps').classList.contains('on')) refreshBladeStats(); },30000);
setTimeout(refreshBladeStats, 1500);
// V116-DASHBOARDS-TAB: load 70 dashboards tiles
let __dashData = null;
async function loadDashboards(){
try {
const r = await fetch('/api/dashboards-registry.php');
const d = await r.json();
__dashData = d;
renderDashStats(d);
renderDashFilters(d);
renderDashGrid(d.dashboards, 'all');
} catch(e){ console.error('[dashboards]',e); }
}
function renderDashStats(d){
const box = document.getElementById('dash-stats');
if (!box) return;
box.innerHTML = '<div style="padding:4px 8px;background:var(--bg3);border-radius:3px"><b>Total:</b> '+d.total+'</div>' +
Object.entries(d.by_category).map(([c,n]) =>
'<div style="padding:4px 8px;background:var(--bg3);border-radius:3px"><b>'+c+':</b> '+n+'</div>'
).join('');
}
function renderDashFilters(d){
const box = document.getElementById('dash-filters');
if (!box) return;
box.innerHTML = '<button class="mode dash-filter on" data-cat="all">All ('+d.total+')</button>' +
Object.entries(d.by_category).map(([c,n]) =>
'<button class="mode dash-filter" data-cat="'+c+'">'+c+' ('+n+')</button>'
).join('');
box.querySelectorAll('.dash-filter').forEach(b => {
b.addEventListener('click', () => {
box.querySelectorAll('.dash-filter').forEach(x => x.classList.remove('on'));
b.classList.add('on');
renderDashGrid(__dashData.dashboards, b.getAttribute('data-cat'));
});
});
}
function renderDashGrid(items, cat){
const box = document.getElementById('dash-grid');
if (!box) return;
const filtered = cat === 'all' ? items : items.filter(x => x.category === cat);
box.innerHTML = filtered.map(e =>
'<a href="'+e.url+'" target="_blank" style="text-decoration:none;color:inherit;display:block;padding:10px;background:linear-gradient(135deg,'+e.color+'22,'+e.color+'11);border:1px solid '+e.color+'55;border-radius:6px">' +
'<div style="font-size:18px;margin-bottom:4px">'+e.icon+' <span style="font-size:9px;color:'+e.color+';text-transform:uppercase">'+e.category+'</span></div>' +
'<div style="font-size:11px;font-weight:bold;line-height:1.3;margin-bottom:4px">'+e.display+'</div>' +
'<div style="font-size:9px;color:var(--mu)">'+e.name+' - '+e.size_kb+'KB</div>' +
'</a>'
).join('');
}
setTimeout(() => {
const btn = document.querySelector('[data-view="dashboards"]');
if (btn) btn.addEventListener('click', () => { if (!__dashData) loadDashboards(); });
}, 500);
// V114-TRAINING-LIVE: fetch real training stats
async function loadTrainingStats(){
try{

View File

@@ -1,5 +1,5 @@
{
"generated_at": "2026-04-21T03:30:02.781956",
"generated_at": "2026-04-21T03:35:02.001420",
"stats": {
"total": 43,
"pending": 34,

View File

@@ -0,0 +1,281 @@
{
"ts": "2026-04-21T01:35:01+00:00",
"server": "s204",
"s204": {
"load": 0.86,
"uptime": "2026-04-14 11:51:24",
"ram_total_mb": 31335,
"ram_used_mb": 11111,
"ram_free_mb": 20223,
"disk_total": "150G",
"disk_used": "115G",
"disk_free": "30G",
"disk_pct": "80%",
"fpm_workers": 140,
"docker_containers": 19,
"cpu_cores": 8
},
"s95": {
"load": 0.55,
"disk_pct": "80%",
"status": "UP",
"ram_total_mb": 15610,
"ram_free_mb": 11778
},
"pmta": [
{
"name": "SER6",
"ip": "110.239.84.121",
"status": "DOWN"
},
{
"name": "SER7",
"ip": "110.239.65.64",
"status": "DOWN"
},
{
"name": "SER8",
"ip": "182.160.55.107",
"status": "DOWN"
},
{
"name": "SER9",
"ip": "110.239.86.68",
"status": "DOWN"
}
],
"assets": {
"html_pages": 293,
"php_apis": 774,
"wiki_entries": 1884,
"vault_doctrines": 59,
"vault_sessions": 104,
"vault_decisions": 12
},
"tools": {
"total": 627,
"registry_version": "?"
},
"sovereign": {
"status": "UP",
"providers": [
"Cerebras-fast",
"Cerebras-think",
"Groq",
"Cloudflare-AI",
"Gemini",
"SambaNova",
"NVIDIA-NIM",
"Mistral",
"Groq-OSS",
"HF-Space",
"HF-Router",
"OpenRouter",
"GitHub-Models"
],
"active": 13,
"total": 13,
"primary": "Cerebras-fast",
"cost": "0€"
},
"ethica": {
"total_hcps": 161731,
"with_email": 110567,
"with_phone": 155145,
"gap_email": 51164,
"pct_email": 68.4,
"pct_phone": 95.9,
"by_country": [
{
"country": "DZ",
"hcps": 122337,
"with_email": 78477,
"with_tel": 119394,
"pct_email": 64.1,
"pct_tel": 97.6
},
{
"country": "MA",
"hcps": 19721,
"with_email": 15071,
"with_tel": 18733,
"pct_email": 76.4,
"pct_tel": 95
},
{
"country": "TN",
"hcps": 17794,
"with_email": 15140,
"with_tel": 17018,
"pct_email": 85.1,
"pct_tel": 95.6
},
{
"country": "INTL",
"hcps": 1879,
"with_email": 1879,
"with_tel": 0,
"pct_email": 100,
"pct_tel": 0
}
]
},
"docker": [
{
"name": "loki",
"status": "Up 4 days",
"ports": ""
},
{
"name": "listmonk",
"status": "Up 4 days",
"ports": ""
},
{
"name": "plausible-plausible-1",
"status": "Up 3 days",
"ports": ""
},
{
"name": "plausible-plausible-db-1",
"status": "Up 3 days",
"ports": ""
},
{
"name": "plausible-plausible-events-db-1",
"status": "Up 3 days",
"ports": ""
},
{
"name": "n8n-docker-n8n-1",
"status": "Up 4 days",
"ports": ""
},
{
"name": "mattermost-docker-mm-db-1",
"status": "Up 4 days",
"ports": ""
},
{
"name": "mattermost-docker-mattermost-1",
"status": "Up 4 days (healthy)",
"ports": ""
},
{
"name": "twenty",
"status": "Up 4 days",
"ports": ""
},
{
"name": "twenty-redis",
"status": "Up 4 days",
"ports": ""
},
{
"name": "langfuse",
"status": "Up 5 days",
"ports": ""
},
{
"name": "redis-weval",
"status": "Up 6 days",
"ports": ""
},
{
"name": "gitea",
"status": "Up 6 days",
"ports": ""
},
{
"name": "node-exporter",
"status": "Up 6 days",
"ports": ""
},
{
"name": "prometheus",
"status": "Up 6 days",
"ports": ""
},
{
"name": "searxng",
"status": "Up 6 days",
"ports": ""
},
{
"name": "uptime-kuma",
"status": "Up 25 hours (healthy)",
"ports": ""
},
{
"name": "vaultwarden",
"status": "Up 6 days (healthy)",
"ports": ""
},
{
"name": "qdrant",
"status": "Up 6 days",
"ports": ""
}
],
"crons": {
"active": 35
},
"git": {
"head": "b793fa178 auto-sync-0335",
"dirty": 3,
"status": "DIRTY"
},
"nonreg": {
"total": 153,
"passed": 153,
"score": "100%"
},
"services": [
{
"name": "DeerFlow",
"port": 3002,
"status": "UP"
},
{
"name": "DeerFlow API",
"port": 8001,
"status": "UP"
},
{
"name": "Qdrant",
"port": 6333,
"status": "UP"
},
{
"name": "Ollama",
"port": 11434,
"status": "UP"
},
{
"name": "Redis",
"port": 6379,
"status": "UP"
},
{
"name": "Sovereign",
"port": 4000,
"status": "UP"
},
{
"name": "SearXNG",
"port": 8080,
"status": "UP"
}
],
"whisper": {
"binary": "COMPILED",
"model": "142MB"
},
"grand_total": 3656,
"health": {
"score": 5,
"max": 6,
"pct": 83
},
"elapsed_ms": 11092
}

View File

@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-21T01:34:03+00:00",
"ts": "2026-04-21T01:35:17+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,

View File

@@ -7816,5 +7816,18 @@
"status": "PENDING_APPROVAL",
"created_at": "2026-04-20T23:57:30+00:00",
"source": "opus4-autowire-early-v2"
},
"598": {
"name": "zombie_killer_status",
"triggers": [
"zombie killer",
"zombie playwright",
"kill zombies",
"zombie status"
],
"cmd": "echo v9.58 zombie killer live \/opt\/weval-ops\/zombie-killer.py + cron 30min - kills playwright drivers >2h + orphan chrome-headless >1h ppid=1 - log \/var\/log\/weval-zombie-killer.log - first run killed 2 zombies (from 14avr and 16avr) - load 4.96 to 0.86 - swap 3.5gi to 3.2gi",
"status": "PENDING_APPROVAL",
"created_at": "2026-04-21T01:35:17+00:00",
"source": "opus4-autowire-early-v2"
}
}

View File

@@ -0,0 +1,15 @@
<?php
return array (
'name' => 'zombie_killer_status',
'triggers' =>
array (
0 => 'zombie killer',
1 => 'zombie playwright',
2 => 'kill zombies',
3 => 'zombie status',
),
'cmd' => 'echo v9.58 zombie killer live /opt/weval-ops/zombie-killer.py + cron 30min - kills playwright drivers >2h + orphan chrome-headless >1h ppid=1 - log /var/log/weval-zombie-killer.log - first run killed 2 zombies (from 14avr and 16avr) - load 4.96 to 0.86 - swap 3.5gi to 3.2gi',
'status' => 'EXECUTED',
'created_at' => '2026-04-21T01:35:17+00:00',
'source' => 'opus4-autowire-early-v2',
);