diff --git a/all-ia-hub.html b/all-ia-hub.html
index 0c39af82d..996a65f83 100644
--- a/all-ia-hub.html
+++ b/all-ia-hub.html
@@ -543,21 +543,43 @@ async function refreshBladeStats(){
}
}
+// V112-BLADE-FIX: robust pushBladeTask with urlencoded body + visible log + debug
async function pushBladeTask(goal, params){
const log=document.getElementById('blade-log');
- if(log){log.style.display='block';log.innerHTML+='\n> Pushing task: '+goal+'...';}
+ if(log){
+ log.style.display='block';
+ log.style.maxHeight='200px';
+ log.innerHTML += '
> Pushing task: '+goal+'...
';
+ log.scrollTop = log.scrollHeight;
+ }
+ console.log('[pushBladeTask] goal=',goal,'params=',params);
try{
- const fd=new FormData();
- fd.append('k','WEVADS2026');
- fd.append('action','create');
- fd.append('goal',goal);
- fd.append('params',JSON.stringify(params||{}));
- const r=await fetch('/api/blade-task-create.php',{method:'POST',body:fd});
- const d=await r.json();
- if(log){log.innerHTML+='\n> '+(d.ok?'\u2705 Task created: '+d.id:'\u274c '+(d.error||'failed'));log.scrollTop=log.scrollHeight;}
- setTimeout(refreshBladeStats,500);
- }catch(e){
- if(log) log.innerHTML+='\n> \u274c Error: '+e.message;
+ // Use URL-encoded instead of FormData for php $_POST compatibility
+ const body = 'k=WEVADS2026&action=create&goal='+encodeURIComponent(goal)+'¶ms='+encodeURIComponent(JSON.stringify(params||{}));
+ const r = await fetch('/api/blade-task-create.php',{
+ method:'POST',
+ headers:{'Content-Type':'application/x-www-form-urlencoded'},
+ body: body
+ });
+ const txt = await r.text();
+ let d;
+ try{ d = JSON.parse(txt); }catch(e){ d = {error:'parse failed: '+txt.substring(0,100)}; }
+ console.log('[pushBladeTask] response=',d);
+ if(log){
+ if(d.ok){
+ log.innerHTML += '> \u2705 Task created: '+d.id+'
';
+ } else {
+ log.innerHTML += '> \u274c '+(d.error||'failed')+'
';
+ }
+ log.scrollTop = log.scrollHeight;
+ }
+ setTimeout(refreshBladeStats, 500);
+ } catch(e){
+ console.error('[pushBladeTask] error=',e);
+ if(log){
+ log.innerHTML += '> \u274c Error: '+e.message+'
';
+ log.scrollTop = log.scrollHeight;
+ }
}
}
diff --git a/api/blade-tasks/task_blade_20260421-011848_7e2919.json b/api/blade-tasks/task_blade_20260421-011848_7e2919.json
new file mode 100644
index 000000000..73a8620fa
--- /dev/null
+++ b/api/blade-tasks/task_blade_20260421-011848_7e2919.json
@@ -0,0 +1,9 @@
+{
+ "id": "blade_20260421-011848_7e2919",
+ "goal": "office_create",
+ "params": [],
+ "priority": "normal",
+ "status": "pending",
+ "created": "2026-04-21T01:18:48+00:00",
+ "source": "wevia-master-chat"
+}
\ No newline at end of file
diff --git a/api/blade-tasks/task_blade_20260421-011853_080d50.json b/api/blade-tasks/task_blade_20260421-011853_080d50.json
new file mode 100644
index 000000000..3d35640d7
--- /dev/null
+++ b/api/blade-tasks/task_blade_20260421-011853_080d50.json
@@ -0,0 +1,9 @@
+{
+ "id": "blade_20260421-011853_080d50",
+ "goal": "deepseek_renew",
+ "params": [],
+ "priority": "normal",
+ "status": "pending",
+ "created": "2026-04-21T01:18:53+00:00",
+ "source": "wevia-master-chat"
+}
\ No newline at end of file
diff --git a/api/blade-tasks/v112-blade-fix-proof/01-office-clicked.png b/api/blade-tasks/v112-blade-fix-proof/01-office-clicked.png
new file mode 100644
index 000000000..4e4da702b
Binary files /dev/null and b/api/blade-tasks/v112-blade-fix-proof/01-office-clicked.png differ
diff --git a/api/blade-tasks/v112-blade-fix-proof/02-deepseek-clicked.png b/api/blade-tasks/v112-blade-fix-proof/02-deepseek-clicked.png
new file mode 100644
index 000000000..d6a701c4d
Binary files /dev/null and b/api/blade-tasks/v112-blade-fix-proof/02-deepseek-clicked.png differ
diff --git a/api/blade-tasks/v112-blade-fix-proof/d9fe48a8206d00ee2abded267446933f.webm b/api/blade-tasks/v112-blade-fix-proof/d9fe48a8206d00ee2abded267446933f.webm
new file mode 100644
index 000000000..9a084f3d7
Binary files /dev/null and b/api/blade-tasks/v112-blade-fix-proof/d9fe48a8206d00ee2abded267446933f.webm differ
diff --git a/api/blade-tasks/v112-blade-fix-proof/proof.json b/api/blade-tasks/v112-blade-fix-proof/proof.json
new file mode 100644
index 000000000..648a4bef0
--- /dev/null
+++ b/api/blade-tasks/v112-blade-fix-proof/proof.json
@@ -0,0 +1,18 @@
+{
+ "v112": "blade-fix-urlencoded",
+ "initial": {
+ "pending": "3",
+ "done": "20"
+ },
+ "office_result": {
+ "pending": "4",
+ "log_visible": "block",
+ "log_html": "> Pushing task: office_create...
> \u2705 Task created: blade_20260421-011848_7e2919
"
+ },
+ "deepseek_result": {
+ "pending": "5",
+ "log_html": "> Pushing task: office_create...
> \u2705 Task created: blade_20260421-011848_7e2919
> Pushing task: deepseek_renew...
> \u2705 Task created: blade_20260421-011853_080d50
"
+ },
+ "console_msgs_count": 4,
+ "VERDICT": "WIRED"
+}
\ No newline at end of file
diff --git a/api/blade-tasks/v112-wtp-enriched/proof.json b/api/blade-tasks/v112-wtp-enriched/proof.json
new file mode 100644
index 000000000..1b5af287e
--- /dev/null
+++ b/api/blade-tasks/v112-wtp-enriched/proof.json
@@ -0,0 +1,10 @@
+{
+ "v112_wtp": "enriched-authed",
+ "title": "WEVAL Technology Platform \u2014 All-in-One ERP Portal",
+ "total_links": 95,
+ "all_ia_hub_link": true,
+ "orchestrator_link": true,
+ "master_link": true,
+ "body_len": 13524,
+ "VERDICT": "OK"
+}
\ No newline at end of file
diff --git a/api/blade-tasks/v112-wtp-enriched/wtp-full-authed.png b/api/blade-tasks/v112-wtp-enriched/wtp-full-authed.png
new file mode 100644
index 000000000..966769828
Binary files /dev/null and b/api/blade-tasks/v112-wtp-enriched/wtp-full-authed.png differ
diff --git a/api/blade-tasks/v112-wtp-enriched/wtp-full.png b/api/blade-tasks/v112-wtp-enriched/wtp-full.png
new file mode 100644
index 000000000..c476d78bb
Binary files /dev/null and b/api/blade-tasks/v112-wtp-enriched/wtp-full.png differ
diff --git a/api/em-kpi-cache.json b/api/em-kpi-cache.json
index 71f826e8f..e69de29bb 100644
--- a/api/em-kpi-cache.json
+++ b/api/em-kpi-cache.json
@@ -1,281 +0,0 @@
-{
- "ts": "2026-04-21T01:15:01+00:00",
- "server": "s204",
- "s204": {
- "load": 1.75,
- "uptime": "2026-04-14 11:51:24",
- "ram_total_mb": 31335,
- "ram_used_mb": 14407,
- "ram_free_mb": 16927,
- "disk_total": "150G",
- "disk_used": "115G",
- "disk_free": "29G",
- "disk_pct": "80%",
- "fpm_workers": 120,
- "docker_containers": 19,
- "cpu_cores": 8
- },
- "s95": {
- "load": 1.03,
- "disk_pct": "80%",
- "status": "UP",
- "ram_total_mb": 15610,
- "ram_free_mb": 12018
- },
- "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": 770,
- "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": 161730,
- "with_email": 110550,
- "with_phone": 155145,
- "gap_email": 51180,
- "pct_email": 68.4,
- "pct_phone": 95.9,
- "by_country": [
- {
- "country": "DZ",
- "hcps": 122337,
- "with_email": 78461,
- "with_tel": 119394,
- "pct_email": 64.1,
- "pct_tel": 97.6
- },
- {
- "country": "MA",
- "hcps": 19720,
- "with_email": 15071,
- "with_tel": 18733,
- "pct_email": 76.4,
- "pct_tel": 95
- },
- {
- "country": "TN",
- "hcps": 17794,
- "with_email": 15139,
- "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": "1b8832480 auto-sync-0315",
- "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": 3652,
- "health": {
- "score": 5,
- "max": 6,
- "pct": 83
- },
- "elapsed_ms": 11474
-}
\ No newline at end of file
diff --git a/api/nonreg-latest.json b/api/nonreg-latest.json
index 7ee16777f..86376e401 100644
--- a/api/nonreg-latest.json
+++ b/api/nonreg-latest.json
@@ -1 +1 @@
-{"ts": "20260421_031504", "version": "3.2", "score": 100, "pass": 153, "fail": 0, "total": 153, "elapsed": 60.1, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 10, "fail": 0}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": []}
\ No newline at end of file
+{"ts": "20260421_031900", "version": "3.2", "score": 100, "pass": 153, "fail": 0, "total": 153, "elapsed": 54.3, "categories": {"S204": {"pass": 9, "fail": 0}, "S95-WV": {"pass": 12, "fail": 0}, "S95-ARS": {"pass": 17, "fail": 0}, "S95-iR": {"pass": 1, "fail": 0}, "INFRA": {"pass": 5, "fail": 0}, "API": {"pass": 27, "fail": 0}, "SEC": {"pass": 4, "fail": 0}, "S95-BK": {"pass": 6, "fail": 0}, "C2-API": {"pass": 4, "fail": 0}, "C2-SPA": {"pass": 1, "fail": 0}, "C2-WV": {"pass": 3, "fail": 0}, "SSO": {"pass": 25, "fail": 0}, "DATA": {"pass": 5, "fail": 0}, "CRONS": {"pass": 2, "fail": 0}, "BLADE": {"pass": 7, "fail": 0}, "LIFE": {"pass": 3, "fail": 0}, "FUNC": {"pass": 7, "fail": 0}, "01AVR": {"pass": 10, "fail": 0}, "STRUCT": {"pass": 5, "fail": 0}}, "failures": []}
\ No newline at end of file
diff --git a/api/nonreg-report.html b/api/nonreg-report.html
index b2f89f343..38615f164 100644
--- a/api/nonreg-report.html
+++ b/api/nonreg-report.html
@@ -1 +1 @@
-NR 20260421_031504WEVAL NonReg v3.2 — 20260421_031504
100%
153/153 PASS | 0 FAIL | 60.1s | 10 couches | 4 machines
| Test | Couche | St | Detail |
|---|
| Home | S204 | PASS | 200 22KB |
| WEVIA | S204 | PASS | 200 22KB |
| Manager | S204 | PASS | 302 1KB |
| Radar | S204 | PASS | 200 60KB |
| ToolsHub | S204 | PASS | 302 1KB |
| Monitor | S204 | PASS | 302 1KB |
| Huawei | S204 | PASS | 200 43KB |
| DeerFlow | S204 | PASS | 200 22KB |
| CRM-Hub | S204 | PASS | 200 24KB |
| WV-Dash | S95-WV | PASS | 301 0KB |
| WV-Apps | S95-WV | PASS | 200 2KB |
| WV-IA | S95-WV | PASS | 200 13KB |
| WV-Proc | S95-WV | PASS | 200 9KB |
| WV-Widget | S95-WV | PASS | 200 23KB |
| WV-Sent | S95-WV | PASS | 200 12KB |
| WV-Ctrl | S95-WV | PASS | 200 18KB |
| WV-Brain | S95-WV | PASS | 200 30KB |
| WV-O365 | S95-WV | PASS | 200 34KB |
| WV-Deliv | S95-WV | PASS | 200 5KB |
| WV-Warm | S95-WV | PASS | 200 7KB |
| WV-Send | S95-WV | PASS | 200 0KB |
| A-ghost-ne | S95-ARS | PASS | 200 10KB |
| A-brain-se | S95-ARS | PASS | 200 32KB |
| A-campaign | S95-ARS | PASS | 200 31KB |
| A-growth-e | S95-ARS | PASS | 200 20KB |
| A-deal-pip | S95-ARS | PASS | 200 21KB |
| A-cloud-pr | S95-ARS | PASS | 200 18KB |
| A-cloudfla | S95-ARS | PASS | 200 29KB |
| A-dashboar | S95-ARS | PASS | 200 32KB |
| A-send-pip | S95-ARS | PASS | 200 6KB |
| A-harvest- | S95-ARS | PASS | 200 44KB |
| A-command- | S95-ARS | PASS | 200 45KB |
| A-domain-m | S95-ARS | PASS | 200 40KB |
| A-ceo-dash | S95-ARS | PASS | 200 23KB |
| A-reputati | S95-ARS | PASS | 200 38KB |
| A-newslett | S95-ARS | PASS | 200 29KB |
| A-tracking | S95-ARS | PASS | 200 21KB |
| A-self-hea | S95-ARS | PASS | 200 42KB |
| iResp-Root | S95-iR | PASS | 301 |
| Ethica | INFRA | PASS | 302 0KB |
| Consent | INFRA | PASS | 200 9KB |
| Twenty | INFRA | PASS | 200 2KB |
| n8n | INFRA | PASS | 200 16KB |
| MM | INFRA | PASS | 200 681KB |
| WEVIA | API | PASS | JSON 53B |
| Manifest | API | PASS | JSON 2906B |
| Health | API | PASS | JSON 952B |
| AEGIS | API | PASS | JSON 424B |
| AE-Sc | API | PASS | JSON 98B |
| AE-Pol | API | PASS | JSON 244B |
| SS | API | PASS | JSON 269B |
| SS-S | API | PASS | JSON 313B |
| SS-R | API | PASS | JSON 137B |
| AIOS | API | PASS | JSON 251B |
| AI-Ag | API | PASS | JSON 348B |
| AI-K | API | PASS | JSON 281B |
| OClaw | API | PASS | JSON 391B |
| Prom | API | PASS | JSON 123B |
| SMem | API | PASS | JSON 196B |
| Mstr | API | PASS | JSON 211B |
| Dify | API | PASS | JSON 479B |
| Evo | API | PASS | JSON 143B |
| APcs | API | PASS | JSON 125B |
| Goose | API | PASS | JSON 177B |
| BrUse | API | PASS | JSON 24B |
| EthP | API | PASS | JSON 78B |
| Rtr | API | PASS | JSON 189B |
| NR-JSON | API | PASS | JSON 774B |
| CRM | API | PASS | JSON 25B |
| LvMet | API | PASS | JSON 86B |
| MonDsh | API | PASS | JSON 1519B |
| IP-WV | SEC | PASS | Clean |
| IP-WA | SEC | PASS | Clean |
| IP-CRM | SEC | PASS | Clean |
| Nuclei | SEC | PASS | 0 finds |
| KumoMTA | S95-BK | PASS | active |
| PMTA | S95-BK | PASS | 2 procs (senders standby) |
| EthDB | S95-BK | PASS | 161730 ct |
| SendDB | S95-BK | PASS | 3097496 ct |
| S95-Dsk | S95-BK | PASS | 80% |
| Docker | S95-BK | PASS | active |
| WhatsApp | C2-API | PASS | JSON 351B |
| WA-Hook | C2-API | PASS | 403 |
| SpamScore | C2-API | PASS | 200 |
| WEVADS-IA | C2-SPA | PASS | 200 13KB |
| Blacklist | C2-WV | PASS | 200 2KB |
| WorldDash | C2-WV | PASS | 200 15KB |
| Seeds | C2-WV | PASS | 200 1058KB |
| NR-API | C2-API | PASS | JSON 719B |
| SSO-blade-cent | SSO | PASS | 200 |
| SSO-blade-ai.h | SSO | PASS | 200 |
| SSO-claude-mon | SSO | PASS | 200 |
| SSO-crons-moni | SSO | PASS | 200 |
| SSO-monitoring | SSO | PASS | 200 |
| SSO-openclaw.h | SSO | PASS | 200 |
| SSO-crm.html | SSO | PASS | 200 |
| SSO-world-map- | SSO | PASS | 200 |
| B2B-Leads | DATA | PASS | 2056 leads |
| LinkedIn | DATA | PASS | 2309 profiles |
| Ethica-DZ | DATA | PASS | 122337 HCPs |
| Ethica-MA | DATA | PASS | 19720 HCPs |
| Ethica-TN | DATA | PASS | 17794 HCPs |
| Ethica-Crons | CRONS | PASS | 17 cron entries (crontab-based) |
| Ethica-Scripts | CRONS | PASS | 15 scripts |
| Blade-API | BLADE | PASS | JSON 296B |
| Blade-Brain | BLADE | PASS | 18B |
| Blade-AI | BLADE | PASS | 302 |
| Blade-Ctr | BLADE | PASS | 302 |
| Sentinel-PS1 | BLADE | PASS | 200 16KB |
| Life-API | LIFE | PASS | 50B |
| Life-App | LIFE | PASS | 200 62KB |
| Life-HTML | LIFE | PASS | 200 24KB |
| Blade-TG | BLADE | PASS | 11B |
| Blade-MM | BLADE | PASS | 108B |
| WEVIA-Chat | FUNC | PASS | Cerebras-fast 212ch |
| Life-Chat | FUNC | PASS | 36ch |
| Ethica-Chat | FUNC | PASS | 514ch |
| Monitor-UP | FUNC | PASS | 11 services UP |
| Ollama-Live | FUNC | PASS | 7 models |
| Arsenal-HP | FUNC | PASS | 1378 screens |
| Ethica-HCPs | FUNC | PASS | 161730 HCPs |
| SSO-Blade | SSO | PASS | 302 |
| SSO-Monitor | SSO | PASS | 302 |
| SSO-CC | SSO | PASS | 302 |
| SSO-NR | SSO | PASS | 302 |
| SSO-MT | SSO | PASS | 302 |
| SSO-Ops | SSO | PASS | 302 |
| SSO-Tools | SSO | PASS | 302 |
| SSO-Apps | SSO | PASS | 302 |
| SSO-OClaw | SSO | PASS | 302 |
| SSO-CRM | SSO | PASS | 200 |
| SSO-Wksp | SSO | PASS | 200 |
| SSO-Life | SSO | PASS | 200 |
| SSO-Mega | SSO | PASS | 302 |
| Sub-CRM | SSO | PASS | 200 |
| Sub-n8n | SSO | PASS | 200 |
| Sub-MM | SSO | PASS | 200 |
| Sub-Deer | SSO | PASS | 200 |
| DF-Title | 01AVR | PASS | TWENTY! |
| CyberMon | 01AVR | PASS | 200 |
| Plausible | 01AVR | PASS | present |
| Plaus-Blog | 01AVR | PASS | present |
| Caps10 | 01AVR | PASS | 10/10 |
| OSS-Disc | 01AVR | PASS | 200 9921B |
| EthFeed | 01AVR | PASS | 161730 HCPs 20 feed |
| BladeAPI | 01AVR | PASS | 200 296B |
| CC-SSO | 01AVR | PASS | 302 |
| HealthCk | 01AVR | PASS | exists |
| Bench-LB-Dict | STRUCT | PASS | type=list len=39 |
| Bench-LB-Scores | STRUCT | PASS | val_type=dict |
| Bench-Eco | STRUCT | PASS | score=80 |
| Bench-AIs | STRUCT | PASS | count=39 |
| CronStatus | STRUCT | PASS | 10 active 5 disabled |
\ No newline at end of file
+NR 20260421_031900WEVAL NonReg v3.2 — 20260421_031900
100%
153/153 PASS | 0 FAIL | 54.3s | 10 couches | 4 machines
| Test | Couche | St | Detail |
|---|
| Home | S204 | PASS | 200 22KB |
| WEVIA | S204 | PASS | 200 22KB |
| Manager | S204 | PASS | 302 1KB |
| Radar | S204 | PASS | 200 60KB |
| ToolsHub | S204 | PASS | 302 1KB |
| Monitor | S204 | PASS | 302 1KB |
| Huawei | S204 | PASS | 200 43KB |
| DeerFlow | S204 | PASS | 200 22KB |
| CRM-Hub | S204 | PASS | 200 24KB |
| WV-Dash | S95-WV | PASS | 301 0KB |
| WV-Apps | S95-WV | PASS | 200 2KB |
| WV-IA | S95-WV | PASS | 200 13KB |
| WV-Proc | S95-WV | PASS | 200 9KB |
| WV-Widget | S95-WV | PASS | 200 23KB |
| WV-Sent | S95-WV | PASS | 200 12KB |
| WV-Ctrl | S95-WV | PASS | 200 18KB |
| WV-Brain | S95-WV | PASS | 200 30KB |
| WV-O365 | S95-WV | PASS | 200 34KB |
| WV-Deliv | S95-WV | PASS | 200 5KB |
| WV-Warm | S95-WV | PASS | 200 7KB |
| WV-Send | S95-WV | PASS | 200 0KB |
| A-ghost-ne | S95-ARS | PASS | 200 10KB |
| A-brain-se | S95-ARS | PASS | 200 32KB |
| A-campaign | S95-ARS | PASS | 200 31KB |
| A-growth-e | S95-ARS | PASS | 200 20KB |
| A-deal-pip | S95-ARS | PASS | 200 21KB |
| A-cloud-pr | S95-ARS | PASS | 200 18KB |
| A-cloudfla | S95-ARS | PASS | 200 29KB |
| A-dashboar | S95-ARS | PASS | 200 32KB |
| A-send-pip | S95-ARS | PASS | 200 6KB |
| A-harvest- | S95-ARS | PASS | 200 44KB |
| A-command- | S95-ARS | PASS | 200 45KB |
| A-domain-m | S95-ARS | PASS | 200 40KB |
| A-ceo-dash | S95-ARS | PASS | 200 23KB |
| A-reputati | S95-ARS | PASS | 200 38KB |
| A-newslett | S95-ARS | PASS | 200 29KB |
| A-tracking | S95-ARS | PASS | 200 21KB |
| A-self-hea | S95-ARS | PASS | 200 42KB |
| iResp-Root | S95-iR | PASS | 301 |
| Ethica | INFRA | PASS | 302 0KB |
| Consent | INFRA | PASS | 200 9KB |
| Twenty | INFRA | PASS | 200 2KB |
| n8n | INFRA | PASS | 200 16KB |
| MM | INFRA | PASS | 200 681KB |
| WEVIA | API | PASS | JSON 53B |
| Manifest | API | PASS | JSON 2906B |
| Health | API | PASS | JSON 952B |
| AEGIS | API | PASS | JSON 424B |
| AE-Sc | API | PASS | JSON 98B |
| AE-Pol | API | PASS | JSON 244B |
| SS | API | PASS | JSON 269B |
| SS-S | API | PASS | JSON 313B |
| SS-R | API | PASS | JSON 137B |
| AIOS | API | PASS | JSON 255B |
| AI-Ag | API | PASS | JSON 348B |
| AI-K | API | PASS | JSON 281B |
| OClaw | API | PASS | JSON 391B |
| Prom | API | PASS | JSON 123B |
| SMem | API | PASS | JSON 196B |
| Mstr | API | PASS | JSON 211B |
| Dify | API | PASS | JSON 479B |
| Evo | API | PASS | JSON 143B |
| APcs | API | PASS | JSON 125B |
| Goose | API | PASS | JSON 177B |
| BrUse | API | PASS | JSON 24B |
| EthP | API | PASS | JSON 78B |
| Rtr | API | PASS | JSON 189B |
| NR-JSON | API | PASS | JSON 774B |
| CRM | API | PASS | JSON 25B |
| LvMet | API | PASS | JSON 86B |
| MonDsh | API | PASS | JSON 1519B |
| IP-WV | SEC | PASS | Clean |
| IP-WA | SEC | PASS | Clean |
| IP-CRM | SEC | PASS | Clean |
| Nuclei | SEC | PASS | 0 finds |
| KumoMTA | S95-BK | PASS | active |
| PMTA | S95-BK | PASS | 2 procs (senders standby) |
| EthDB | S95-BK | PASS | 161730 ct |
| SendDB | S95-BK | PASS | 3097496 ct |
| S95-Dsk | S95-BK | PASS | 80% |
| Docker | S95-BK | PASS | active |
| WhatsApp | C2-API | PASS | JSON 351B |
| WA-Hook | C2-API | PASS | 403 |
| SpamScore | C2-API | PASS | 200 |
| WEVADS-IA | C2-SPA | PASS | 200 13KB |
| Blacklist | C2-WV | PASS | 200 2KB |
| WorldDash | C2-WV | PASS | 200 15KB |
| Seeds | C2-WV | PASS | 200 1058KB |
| NR-API | C2-API | PASS | JSON 719B |
| SSO-blade-cent | SSO | PASS | 200 |
| SSO-blade-ai.h | SSO | PASS | 200 |
| SSO-claude-mon | SSO | PASS | 200 |
| SSO-crons-moni | SSO | PASS | 200 |
| SSO-monitoring | SSO | PASS | 200 |
| SSO-openclaw.h | SSO | PASS | 200 |
| SSO-crm.html | SSO | PASS | 200 |
| SSO-world-map- | SSO | PASS | 200 |
| B2B-Leads | DATA | PASS | 2056 leads |
| LinkedIn | DATA | PASS | 2309 profiles |
| Ethica-DZ | DATA | PASS | 122337 HCPs |
| Ethica-MA | DATA | PASS | 19720 HCPs |
| Ethica-TN | DATA | PASS | 17794 HCPs |
| Ethica-Crons | CRONS | PASS | 17 cron entries (crontab-based) |
| Ethica-Scripts | CRONS | PASS | 15 scripts |
| Blade-API | BLADE | PASS | JSON 296B |
| Blade-Brain | BLADE | PASS | 18B |
| Blade-AI | BLADE | PASS | 302 |
| Blade-Ctr | BLADE | PASS | 302 |
| Sentinel-PS1 | BLADE | PASS | 200 16KB |
| Life-API | LIFE | PASS | 50B |
| Life-App | LIFE | PASS | 200 62KB |
| Life-HTML | LIFE | PASS | 200 24KB |
| Blade-TG | BLADE | PASS | 11B |
| Blade-MM | BLADE | PASS | 108B |
| WEVIA-Chat | FUNC | PASS | Cerebras-fast 124ch |
| Life-Chat | FUNC | PASS | 36ch |
| Ethica-Chat | FUNC | PASS | 300ch |
| Monitor-UP | FUNC | PASS | 11 services UP |
| Ollama-Live | FUNC | PASS | 7 models |
| Arsenal-HP | FUNC | PASS | 1378 screens |
| Ethica-HCPs | FUNC | PASS | 161730 HCPs |
| SSO-Blade | SSO | PASS | 302 |
| SSO-Monitor | SSO | PASS | 302 |
| SSO-CC | SSO | PASS | 302 |
| SSO-NR | SSO | PASS | 302 |
| SSO-MT | SSO | PASS | 302 |
| SSO-Ops | SSO | PASS | 302 |
| SSO-Tools | SSO | PASS | 302 |
| SSO-Apps | SSO | PASS | 302 |
| SSO-OClaw | SSO | PASS | 302 |
| SSO-CRM | SSO | PASS | 200 |
| SSO-Wksp | SSO | PASS | 200 |
| SSO-Life | SSO | PASS | 200 |
| SSO-Mega | SSO | PASS | 302 |
| Sub-CRM | SSO | PASS | 200 |
| Sub-n8n | SSO | PASS | 200 |
| Sub-MM | SSO | PASS | 200 |
| Sub-Deer | SSO | PASS | 200 |
| DF-Title | 01AVR | PASS | TWENTY! |
| CyberMon | 01AVR | PASS | 200 |
| Plausible | 01AVR | PASS | present |
| Plaus-Blog | 01AVR | PASS | present |
| Caps10 | 01AVR | PASS | 10/10 |
| OSS-Disc | 01AVR | PASS | 200 9921B |
| EthFeed | 01AVR | PASS | 161730 HCPs 20 feed |
| BladeAPI | 01AVR | PASS | 200 296B |
| CC-SSO | 01AVR | PASS | 302 |
| HealthCk | 01AVR | PASS | exists |
| Bench-LB-Dict | STRUCT | PASS | type=list len=39 |
| Bench-LB-Scores | STRUCT | PASS | val_type=dict |
| Bench-Eco | STRUCT | PASS | score=80 |
| Bench-AIs | STRUCT | PASS | count=39 |
| CronStatus | STRUCT | PASS | 10 active 5 disabled |
\ No newline at end of file
diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json
index 7634a82a0..544bd43e6 100644
--- a/api/v83-business-kpi-latest.json
+++ b/api/v83-business-kpi-latest.json
@@ -1,7 +1,7 @@
{
"ok": true,
"version": "V83-business-kpi",
- "ts": "2026-04-21T01:17:04+00:00",
+ "ts": "2026-04-21T01:19:02+00:00",
"summary": {
"total_categories": 8,
"total_kpis": 64,