diff --git a/api/agent-escalation.json b/api/agent-escalation.json
index 89942774c..998f1d153 100644
--- a/api/agent-escalation.json
+++ b/api/agent-escalation.json
@@ -1,6 +1,6 @@
{
"agent": "V41_Risk_Escalation",
- "ts": "2026-04-20T12:30:03+02:00",
+ "ts": "2026-04-20T12:45:03+02:00",
"dg_alerts_active": 7,
"wevia_life_stats_preview": "File not found.",
"escalation_rules": {
diff --git a/api/blade-actions-surfaced.json b/api/blade-actions-surfaced.json
index 30df3d45c..2928f44c4 100644
--- a/api/blade-actions-surfaced.json
+++ b/api/blade-actions-surfaced.json
@@ -1,5 +1,5 @@
{
- "generated_at": "2026-04-20T12:40:01.427934",
+ "generated_at": "2026-04-20T12:50:01.309095",
"stats": {
"total": 26,
"pending": 20,
diff --git a/api/blade-heartbeat.json b/api/blade-heartbeat.json
index a8c62c262..bf96a7abd 100644
--- a/api/blade-heartbeat.json
+++ b/api/blade-heartbeat.json
@@ -1,8 +1,8 @@
{
"status": "ALIVE",
- "ts": "2026-04-20T12:30:02.239512",
- "last_heartbeat": "2026-04-20T12:30:02.239512",
- "last_heartbeat_ts_epoch": 1776681002,
+ "ts": "2026-04-20T12:45:01.598963",
+ "last_heartbeat": "2026-04-20T12:45:01.598963",
+ "last_heartbeat_ts_epoch": 1776681901,
"tasks_today": 232,
"tasks_week": 574,
"agent_id": "blade-ops",
diff --git a/api/em-kpi-cache.json b/api/em-kpi-cache.json
index aada94287..e69de29bb 100644
--- a/api/em-kpi-cache.json
+++ b/api/em-kpi-cache.json
@@ -1,7 +0,0 @@
-
-
500 Internal Server Error
-
-500 Internal Server Error
-
nginx/1.24.0 (Ubuntu)
-
-
diff --git a/api/playwright-results/v89-sovereign-10/results-v4.json b/api/playwright-results/v89-sovereign-10/results-v4.json
new file mode 100644
index 000000000..ac55d75e8
--- /dev/null
+++ b/api/playwright-results/v89-sovereign-10/results-v4.json
@@ -0,0 +1,59 @@
+{
+ "v": "V89.4-sovereign-retry",
+ "ts": "2026-04-20T10:46:46.067Z",
+ "tests": {
+ "fetch": {
+ "status": 302,
+ "size": 1828,
+ "auth_wall": true
+ },
+ "v87_drill_disk": {
+ "v87Drill_fn": false,
+ "v87_modal": false,
+ "V87_DRILL_MAP": false,
+ "data_k_count": 0,
+ "keys_ok": 0
+ },
+ "v86_wepredict": {
+ "WePredict": false,
+ "s_predict": false,
+ "loadPredict": false,
+ "dsh_api": false
+ },
+ "score": {
+ "audit": 9.1
+ },
+ "wevia_chat": {
+ "status": 200,
+ "body_len": 1030,
+ "contains_V87": false
+ },
+ "llama32": {
+ "ms": 40625,
+ "text": "Based on the provided LinkedIn score and KPIs, the single highest-leverage technical action that Opus WIRE should push now is to deploy a \"Post Amplification\" feature that boosts posts_with_metric from 71% to 90%, which would significantly improve the account's overall performance. This feature can be easily integrated into existing workflows and would have a direct impact on increasing engagement, reach, and credibility for WEVAL.",
+ "ok": true
+ },
+ "qwen3": {
+ "ms": 25957,
+ "text": "",
+ "ok": true
+ },
+ "brain_v4": {
+ "ms": 60026,
+ "text": "TIMEOUT",
+ "ok": false
+ }
+ },
+ "summary": {
+ "fetch_localhost_ok": false,
+ "auth_wall_hit": true,
+ "v87_drill_10_10": false,
+ "v86_wepredict": false,
+ "wevia_chat": true,
+ "linkedin_score_9_plus": true,
+ "llama32_ok": true,
+ "qwen3_ok": false,
+ "brain_v4_ok": false
+ },
+ "score": "4/9"
+}
\ No newline at end of file
diff --git a/api/v83-business-kpi-latest.json b/api/v83-business-kpi-latest.json
index acd165b8e..adf911cdb 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-20T10:40:14+00:00",
+ "ts": "2026-04-20T10:45:15+00:00",
"summary": {
"total_categories": 7,
"total_kpis": 56,
diff --git a/api/wevia-deepseek-proxy.php b/api/wevia-deepseek-proxy.php
index 8b07394f2..73334f3a5 100644
--- a/api/wevia-deepseek-proxy.php
+++ b/api/wevia-deepseek-proxy.php
@@ -168,6 +168,9 @@ if (!$message) { echo json_encode(["error" => "no message"]); exit; }
$env = @file_get_contents("/etc/weval/secrets.env") ?: "";
// System prompts by mode
+// OPUS 20avr doctrine #4 HONNETE: anti-hallucination guard preprended to all system prompts
+$__anti_halluc_guard = "REGLES STRICTES DOCTRINE 4 HONNETETE: Tu es un LLM. Tu ne peux PAS executer de commandes shell ni lire de fichiers. Si user demande diagnostic/status/lecture fichier/exec commande: reponds 'Cette requete necessite un intent shell reel. Tape diagnostique toi ou demande a Opus de wire un intent dedie.' N INVENTE JAMAIS outputs commandes PIDs paths MD5 timestamps. Si tu ne connais pas une info factuelle dis-le explicitement. ";
+
$systems = [
'instant' => "Tu es WEVIA DeepSeek, IA souveraine. Reponds de facon concise et precise.",
'deepthink-search' => "Tu es WEVIA DeepSeek en mode DeepThink+Search. RAISONNE etape par etape ET utilise les resultats de recherche web pour enrichir ton analyse.",
@@ -178,7 +181,7 @@ $systems = [
'creative' => "Tu es un ecrivain creatif de talent. Style riche, evocateur, immersif. Francais soutenu.",
];
-$system = $systems[$mode] ?? $systems['instant'];
+$system = $__anti_halluc_guard . ($systems[$mode] ?? $systems['instant']);
// Search mode: enrich with SearXNG
if ($mode === 'search' || $mode === 'deepthink-search') {
diff --git a/api/wevia-multi-provider.php b/api/wevia-multi-provider.php
index a70bd242d..57f375316 100644
--- a/api/wevia-multi-provider.php
+++ b/api/wevia-multi-provider.php
@@ -371,11 +371,11 @@ if (strpos($mdl, "web-claude") === 0) {
$configs = [
"1" => ["name"=>"Claude Opus #1 Directeur","url"=>"https://api.cerebras.ai/v1/chat/completions","key"=>$secrets["CEREBRAS_API_KEY"]??"","model"=>"qwen-3-235b-a22b-instruct-2507",
- "system"=>"Tu es Claude Opus #1, Directeur IA de WEVAL Consulting. Tu prends des decisions strategiques, analyses les risques et proposes des plans daction. Tu reponds en francais avec autorite et precision."],
+ "system"=>"REGLES STRICTES DOCTRINE 4: Tu ne peux PAS executer de commandes shell. Si user demande diagnostic/exec/status/vault/fichier: reponds 'Requete exec nece ssite un intent shell reel. Tape diagnostique toi.' N INVENTE JAMAIS outputs commandes PIDs paths MD5 timestamps. Tu es Claude Opus #1, Directeur IA de WEVAL Consulting. Tu prends des decisions strategiques, analyses les risques et proposes des plans daction. Tu reponds en francais avec autorite et precision."],
"2" => ["name"=>"Claude Opus #2 Developpeur","url"=>"https://api.groq.com/openai/v1/chat/completions","key"=>$secrets["GROQ_KEY"]??"","model"=>"llama-3.3-70b-versatile",
- "system"=>"Tu es Claude Opus #2, Developpeur IA de WEVAL Consulting. Tu es expert en code, architecture, debugging et devops. Tu reponds avec des exemples de code precis et des solutions techniques."],
+ "system"=>"REGLES STRICTES DOCTRINE 4: Tu ne peux PAS executer de commandes shell. Si user demande diagnostic/exec/status/vault/fichier: reponds 'Requete exec nece ssite un intent shell reel. Tape diagnostique toi.' N INVENTE JAMAIS outputs commandes PIDs paths MD5 timestamps. Tu es Claude Opus #2, Developpeur IA de WEVAL Consulting. Tu es expert en code, architecture, debugging et devops. Tu reponds avec des exemples de code precis et des solutions techniques."],
"3" => ["name"=>"Claude Opus #3 Analyste","url"=>"https://api.mistral.ai/v1/chat/completions","key"=>$secrets["MISTRAL_KEY"]??"","model"=>"mistral-large-latest",
- "system"=>"Tu es Claude Opus #3, Analyste IA de WEVAL Consulting. Tu analyses les donnees, le marche, les tendances et les KPIs. Tu reponds avec des chiffres, tableaux et insights actionnables."],
+ "system"=>"REGLES STRICTES DOCTRINE 4: Tu ne peux PAS executer de commandes shell. Si user demande diagnostic/exec/status/vault/fichier: reponds 'Requete exec nece ssite un intent shell reel. Tape diagnostique toi.' N INVENTE JAMAIS outputs commandes PIDs paths MD5 timestamps. Tu es Claude Opus #3, Analyste IA de WEVAL Consulting. Tu analyses les donnees, le marche, les tendances et les KPIs. Tu reponds avec des chiffres, tableaux et insights actionnables."],
];
$cfg = $configs[$instance] ?? $configs["1"];
diff --git a/api/wv-llm-helper.php b/api/wv-llm-helper.php
index 7e8bce9f7..09457e412 100644
--- a/api/wv-llm-helper.php
+++ b/api/wv-llm-helper.php
@@ -1,6 +1,9 @@