From 511b5dcb6f689a5064b60865c9ebd0d9ca8280b2 Mon Sep 17 00:00:00 2001 From: opus Date: Tue, 21 Apr 2026 15:24:48 +0200 Subject: [PATCH] auto-sync via WEVIA git_sync_all intent 2026-04-21T15:24:47+02:00 --- api/ambre-doc-gen.php | 88 +++++ api/ambre-libs-check.php | 45 +++ api/ambre-list-stubs.php | 33 ++ api/nonreg-latest.json | 2 +- api/nonreg-report.html | 2 +- api/v83-business-kpi-latest.json | 2 +- .../report.json | 312 ++++++++++++++++++ ...a-Test-WEVIA-PDF-20260421-132444-4ffe9c.md | 13 + ...-Test-WEVIA-PDF-20260421-132444-4ffe9c.pdf | Bin 0 -> 16658 bytes ...est-WEVIA-Word-20260421-132445-edfdb4.docx | Bin 0 -> 10138 bytes ...-Test-WEVIA-Word-20260421-132445-edfdb4.md | 15 + ...VIA-Presentation-20260421-132446-5df203.md | 14 + ...A-Presentation-20260421-132446-5df203.pptx | Bin 0 -> 30138 bytes ...sion-opus-v932x-godmode-multiagent-1523.md | 62 ++++ 14 files changed, 585 insertions(+), 3 deletions(-) create mode 100644 api/ambre-doc-gen.php create mode 100644 api/ambre-libs-check.php create mode 100644 api/ambre-list-stubs.php create mode 100644 api/v_opus_godmode_20260421-152121/report.json create mode 100644 generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.md create mode 100644 generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.pdf create mode 100644 generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.docx create mode 100644 generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.md create mode 100644 generated/wevia-WEVIA-Presentation-20260421-132446-5df203.md create mode 100644 generated/wevia-WEVIA-Presentation-20260421-132446-5df203.pptx create mode 100644 wiki/session-opus-v932x-godmode-multiagent-1523.md diff --git a/api/ambre-doc-gen.php b/api/ambre-doc-gen.php new file mode 100644 index 000000000..7b89f94ac --- /dev/null +++ b/api/ambre-doc-gen.php @@ -0,0 +1,88 @@ +false, "error"=>"content required"]); + exit; +} + +// === Type validation === +$allowed = ["pdf","docx","pptx","html","odt","epub"]; +if (!in_array($type, $allowed)) { + http_response_code(400); + echo json_encode(["ok"=>false, "error"=>"invalid type", "allowed"=>$allowed]); + exit; +} + +// === Prepare output dir === +$outdir = "/var/www/html/generated"; +if (!is_dir($outdir)) @mkdir($outdir, 0755, true); + +$ts = date("Ymd-His"); +$rand = substr(md5(random_bytes(8)), 0, 6); +$safe_title = preg_replace("/[^a-zA-Z0-9\-_]/", "-", substr($title, 0, 40)); +$basename = "wevia-{$safe_title}-{$ts}-{$rand}"; +$md_path = "$outdir/$basename.md"; +$out_path = "$outdir/$basename.$type"; + +// === Write markdown input === +$md_content = "# $title\n\n" . $content; +file_put_contents($md_path, $md_content); + +// === Generate via pandoc === +$start = microtime(true); +if ($type === "pdf") { + // Use wkhtmltopdf via pandoc for better rendering + $cmd = "pandoc " . escapeshellarg($md_path) . " --pdf-engine=wkhtmltopdf -o " . escapeshellarg($out_path) . " 2>&1"; +} else if ($type === "pptx" || $type === "docx" || $type === "odt" || $type === "html" || $type === "epub") { + $cmd = "pandoc " . escapeshellarg($md_path) . " -o " . escapeshellarg($out_path) . " 2>&1"; +} +$cmd_output = @shell_exec("timeout 30 $cmd"); +$elapsed = round((microtime(true) - $start) * 1000); + +// === Check result === +if (!file_exists($out_path) || filesize($out_path) === 0) { + @unlink($md_path); + echo json_encode([ + "ok" => false, + "error" => "pandoc failed", + "pandoc_output" => $cmd_output, + "cmd" => $cmd, + "elapsed_ms" => $elapsed, + ]); + exit; +} + +$size = filesize($out_path); +$url = "/generated/$basename.$type"; + +// Keep md source for provenance +echo json_encode([ + "ok" => true, + "url" => $url, + "full_url" => "https://weval-consulting.com$url", + "size" => $size, + "size_human" => $size > 1024 ? round($size/1024, 1) . "KB" : "$size B", + "type" => $type, + "title" => $title, + "elapsed_ms" => $elapsed, + "md_source" => "/generated/$basename.md", + "ts" => date("c"), + "engine" => $type === "pdf" ? "pandoc+wkhtmltopdf" : "pandoc", +], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); diff --git a/api/ambre-libs-check.php b/api/ambre-libs-check.php new file mode 100644 index 000000000..55d16aea0 --- /dev/null +++ b/api/ambre-libs-check.php @@ -0,0 +1,45 @@ +true, "ts"=>date("c"), "s204"=>[]]; + +// Shell binary checks +foreach (["pandoc","wkhtmltopdf","libreoffice","soffice","unoconv","markdown","gs"] as $cmd) { + $p = @trim(shell_exec("which $cmd 2>/dev/null")); + $out["s204"]["bin_$cmd"] = $p ?: "NOT FOUND"; +} + +// Composer autoload paths (commonly in /var/www/html/vendor or /opt/wevia-brain/vendor) +foreach (["/var/www/html/vendor/autoload.php","/opt/wevia-brain/vendor/autoload.php","/var/www/weval/vendor/autoload.php","/opt/weval-l99/vendor/autoload.php"] as $autoload) { + if (file_exists($autoload)) { + $out["s204"]["composer_$autoload"] = "EXISTS"; + } +} + +// Scan vendor folder for specific packages +foreach (["/var/www/html/vendor","/opt/wevia-brain/vendor","/var/www/weval/vendor"] as $vendor_dir) { + if (is_dir($vendor_dir)) { + foreach (["dompdf","phpoffice","mpdf","tcpdf","phpspreadsheet","phppresentation","phpword"] as $pkg) { + $found = @shell_exec("find $vendor_dir -maxdepth 3 -type d -iname "*$pkg*" 2>/dev/null | head -3"); + if (trim($found)) $out["s204"]["pkg_$pkg"] = trim($found); + } + } +} + +// PHP extensions +$ext_list = get_loaded_extensions(); +foreach (["gd","imagick","zip","mbstring","xml","curl","openssl"] as $ext) { + $out["s204"]["ext_$ext"] = in_array($ext, $ext_list) ? "YES" : "NO"; +} + +// Check /var/www/html/generated directory +$out["s204"]["generated_dir"] = is_dir("/var/www/html/generated") ? "EXISTS" : "MISSING"; +if (is_dir("/var/www/html/generated")) { + $files = glob("/var/www/html/generated/*"); + $out["s204"]["generated_count"] = count($files); + $out["s204"]["generated_sample"] = array_slice(array_map("basename", $files), 0, 5); +} + +echo json_encode($out, JSON_PRETTY_PRINT); diff --git a/api/ambre-list-stubs.php b/api/ambre-list-stubs.php new file mode 100644 index 000000000..7df88bd6b --- /dev/null +++ b/api/ambre-list-stubs.php @@ -0,0 +1,33 @@ +count($files), "matches"=>[]]; +foreach ($files as $f) { + $name = basename($f, ".php"); + $short = str_replace("intent-opus4-", "", $name); + if ($kw && stripos($short, $kw) === false) continue; + // Read metadata if array stub + ob_start(); + $info = @include $f; + @ob_end_clean(); + $meta = [ + "name" => $short, + "size" => filesize($f), + "mtime" => gmdate("c", filemtime($f)), + ]; + if (is_array($info)) { + $meta["triggers"] = $info["triggers"] ?? []; + $meta["status"] = $info["status"] ?? "?"; + $meta["cmd"] = $info["cmd"] ?? "?"; + } else { + $meta["type"] = "direct-exec"; + } + $out["matches"][] = $meta; +} +$out["matches_count"] = count($out["matches"]); +echo json_encode($out, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); diff --git a/api/nonreg-latest.json b/api/nonreg-latest.json index ebbbccd09..fc0f89391 100644 --- a/api/nonreg-latest.json +++ b/api/nonreg-latest.json @@ -1 +1 @@ -{"ts": "20260421_150335", "version": "3.2", "score": 100, "pass": 153, "fail": 0, "total": 153, "elapsed": 32.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 +{"ts": "20260421_152221", "version": "3.2", "score": 100, "pass": 153, "fail": 0, "total": 153, "elapsed": 32.4, "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 57b262c93..c198f6332 100644 --- a/api/nonreg-report.html +++ b/api/nonreg-report.html @@ -1 +1 @@ -NR 20260421_150335

WEVAL NonReg v3.2 — 20260421_150335

100%

153/153 PASS | 0 FAIL | 32.3s | 10 couches | 4 machines

TestCoucheStDetail
HomeS204PASS200 22KB
WEVIAS204PASS200 22KB
ManagerS204PASS302 1KB
RadarS204PASS200 60KB
ToolsHubS204PASS302 1KB
MonitorS204PASS302 1KB
HuaweiS204PASS200 43KB
DeerFlowS204PASS200 22KB
CRM-HubS204PASS200 25KB
WV-DashS95-WVPASS301 0KB
WV-AppsS95-WVPASS200 2KB
WV-IAS95-WVPASS200 13KB
WV-ProcS95-WVPASS200 9KB
WV-WidgetS95-WVPASS200 23KB
WV-SentS95-WVPASS200 12KB
WV-CtrlS95-WVPASS200 18KB
WV-BrainS95-WVPASS200 30KB
WV-O365S95-WVPASS200 34KB
WV-DelivS95-WVPASS200 5KB
WV-WarmS95-WVPASS200 7KB
WV-SendS95-WVPASS200 0KB
A-ghost-neS95-ARSPASS200 10KB
A-brain-seS95-ARSPASS200 32KB
A-campaignS95-ARSPASS200 31KB
A-growth-eS95-ARSPASS200 20KB
A-deal-pipS95-ARSPASS200 21KB
A-cloud-prS95-ARSPASS200 18KB
A-cloudflaS95-ARSPASS200 29KB
A-dashboarS95-ARSPASS200 32KB
A-send-pipS95-ARSPASS200 6KB
A-harvest-S95-ARSPASS200 44KB
A-command-S95-ARSPASS200 45KB
A-domain-mS95-ARSPASS200 40KB
A-ceo-dashS95-ARSPASS200 23KB
A-reputatiS95-ARSPASS200 38KB
A-newslettS95-ARSPASS200 29KB
A-trackingS95-ARSPASS200 21KB
A-self-heaS95-ARSPASS200 42KB
iResp-RootS95-iRPASS200
EthicaINFRAPASS302 0KB
ConsentINFRAPASS200 9KB
TwentyINFRAPASS200 2KB
n8nINFRAPASS200 16KB
MMINFRAPASS200 681KB
WEVIAAPIPASSJSON 53B
ManifestAPIPASSJSON 2906B
HealthAPIPASSJSON 952B
AEGISAPIPASSJSON 424B
AE-ScAPIPASSJSON 98B
AE-PolAPIPASSJSON 244B
SSAPIPASSJSON 269B
SS-SAPIPASSJSON 313B
SS-RAPIPASSJSON 137B
AIOSAPIPASSJSON 254B
AI-AgAPIPASSJSON 348B
AI-KAPIPASSJSON 281B
OClawAPIPASSJSON 391B
PromAPIPASSJSON 121B
SMemAPIPASSJSON 196B
MstrAPIPASSJSON 211B
DifyAPIPASSJSON 479B
EvoAPIPASSJSON 143B
APcsAPIPASSJSON 125B
GooseAPIPASSJSON 177B
BrUseAPIPASSJSON 24B
EthPAPIPASSJSON 78B
RtrAPIPASSJSON 189B
NR-JSONAPIPASSJSON 774B
CRMAPIPASSJSON 25B
LvMetAPIPASSJSON 85B
MonDshAPIPASSJSON 1520B
IP-WVSECPASSClean
IP-WASECPASSClean
IP-CRMSECPASSClean
NucleiSECPASS0 finds
KumoMTAS95-BKPASSactive
PMTAS95-BKPASS2 procs (senders standby)
EthDBS95-BKPASS161733 ct
SendDBS95-BKPASS3097643 ct
S95-DskS95-BKPASS81%
DockerS95-BKPASSactive
WhatsAppC2-APIPASSJSON 352B
WA-HookC2-APIPASS403
SpamScoreC2-APIPASS200
WEVADS-IAC2-SPAPASS200 13KB
BlacklistC2-WVPASS200 2KB
WorldDashC2-WVPASS200 15KB
SeedsC2-WVPASS200 1058KB
NR-APIC2-APIPASSJSON 719B
SSO-blade-centSSOPASS200
SSO-blade-ai.hSSOPASS200
SSO-claude-monSSOPASS200
SSO-crons-moniSSOPASS200
SSO-monitoringSSOPASS200
SSO-openclaw.hSSOPASS200
SSO-crm.htmlSSOPASS200
SSO-world-map-SSOPASS200
B2B-LeadsDATAPASS2089 leads
LinkedInDATAPASS2344 profiles
Ethica-DZDATAPASS122337 HCPs
Ethica-MADATAPASS19723 HCPs
Ethica-TNDATAPASS17794 HCPs
Ethica-CronsCRONSPASS17 cron entries (crontab-based)
Ethica-ScriptsCRONSPASS15 scripts
Blade-APIBLADEPASSJSON 294B
Blade-BrainBLADEPASS18B
Blade-AIBLADEPASS302
Blade-CtrBLADEPASS302
Sentinel-PS1BLADEPASS200 16KB
Life-APILIFEPASS50B
Life-AppLIFEPASS200 62KB
Life-HTMLLIFEPASS200 24KB
Blade-TGBLADEPASS11B
Blade-MMBLADEPASS108B
WEVIA-ChatFUNCPASSWEVIA Engine 183ch
Life-ChatFUNCPASS36ch
Ethica-ChatFUNCPASS451ch
Monitor-UPFUNCPASS11 services UP
Ollama-LiveFUNCPASS7 models
Arsenal-HPFUNCPASS1378 screens
Ethica-HCPsFUNCPASS161733 HCPs
SSO-BladeSSOPASS302
SSO-MonitorSSOPASS302
SSO-CCSSOPASS302
SSO-NRSSOPASS302
SSO-MTSSOPASS302
SSO-OpsSSOPASS302
SSO-ToolsSSOPASS302
SSO-AppsSSOPASS302
SSO-OClawSSOPASS302
SSO-CRMSSOPASS200
SSO-WkspSSOPASS200
SSO-LifeSSOPASS200
SSO-MegaSSOPASS302
Sub-CRMSSOPASS200
Sub-n8nSSOPASS200
Sub-MMSSOPASS200
Sub-DeerSSOPASS200
DF-Title01AVRPASSTWENTY!
CyberMon01AVRPASS200
Plausible01AVRPASSpresent
Plaus-Blog01AVRPASSpresent
Caps1001AVRPASS10/10
OSS-Disc01AVRPASS200 9921B
EthFeed01AVRPASS161733 HCPs 20 feed
BladeAPI01AVRPASS200 294B
CC-SSO01AVRPASS302
HealthCk01AVRPASSexists
Bench-LB-DictSTRUCTPASStype=list len=39
Bench-LB-ScoresSTRUCTPASSval_type=dict
Bench-EcoSTRUCTPASSscore=80
Bench-AIsSTRUCTPASScount=39
CronStatusSTRUCTPASS10 active 5 disabled
\ No newline at end of file +NR 20260421_152221

WEVAL NonReg v3.2 — 20260421_152221

100%

153/153 PASS | 0 FAIL | 32.4s | 10 couches | 4 machines

TestCoucheStDetail
HomeS204PASS200 22KB
WEVIAS204PASS200 22KB
ManagerS204PASS302 1KB
RadarS204PASS200 60KB
ToolsHubS204PASS302 1KB
MonitorS204PASS302 1KB
HuaweiS204PASS200 43KB
DeerFlowS204PASS200 22KB
CRM-HubS204PASS200 25KB
WV-DashS95-WVPASS301 0KB
WV-AppsS95-WVPASS200 2KB
WV-IAS95-WVPASS200 13KB
WV-ProcS95-WVPASS200 9KB
WV-WidgetS95-WVPASS200 23KB
WV-SentS95-WVPASS200 12KB
WV-CtrlS95-WVPASS200 18KB
WV-BrainS95-WVPASS200 30KB
WV-O365S95-WVPASS200 34KB
WV-DelivS95-WVPASS200 5KB
WV-WarmS95-WVPASS200 7KB
WV-SendS95-WVPASS200 0KB
A-ghost-neS95-ARSPASS200 10KB
A-brain-seS95-ARSPASS200 32KB
A-campaignS95-ARSPASS200 31KB
A-growth-eS95-ARSPASS200 20KB
A-deal-pipS95-ARSPASS200 21KB
A-cloud-prS95-ARSPASS200 18KB
A-cloudflaS95-ARSPASS200 29KB
A-dashboarS95-ARSPASS200 32KB
A-send-pipS95-ARSPASS200 6KB
A-harvest-S95-ARSPASS200 44KB
A-command-S95-ARSPASS200 45KB
A-domain-mS95-ARSPASS200 40KB
A-ceo-dashS95-ARSPASS200 23KB
A-reputatiS95-ARSPASS200 38KB
A-newslettS95-ARSPASS200 29KB
A-trackingS95-ARSPASS200 21KB
A-self-heaS95-ARSPASS200 42KB
iResp-RootS95-iRPASS200
EthicaINFRAPASS302 0KB
ConsentINFRAPASS200 9KB
TwentyINFRAPASS200 2KB
n8nINFRAPASS200 16KB
MMINFRAPASS200 681KB
WEVIAAPIPASSJSON 53B
ManifestAPIPASSJSON 2906B
HealthAPIPASSJSON 952B
AEGISAPIPASSJSON 424B
AE-ScAPIPASSJSON 98B
AE-PolAPIPASSJSON 244B
SSAPIPASSJSON 269B
SS-SAPIPASSJSON 313B
SS-RAPIPASSJSON 137B
AIOSAPIPASSJSON 255B
AI-AgAPIPASSJSON 348B
AI-KAPIPASSJSON 281B
OClawAPIPASSJSON 391B
PromAPIPASSJSON 123B
SMemAPIPASSJSON 196B
MstrAPIPASSJSON 211B
DifyAPIPASSJSON 479B
EvoAPIPASSJSON 143B
APcsAPIPASSJSON 125B
GooseAPIPASSJSON 177B
BrUseAPIPASSJSON 24B
EthPAPIPASSJSON 78B
RtrAPIPASSJSON 189B
NR-JSONAPIPASSJSON 774B
CRMAPIPASSJSON 25B
LvMetAPIPASSJSON 85B
MonDshAPIPASSJSON 1520B
IP-WVSECPASSClean
IP-WASECPASSClean
IP-CRMSECPASSClean
NucleiSECPASS0 finds
KumoMTAS95-BKPASSactive
PMTAS95-BKPASS2 procs (senders standby)
EthDBS95-BKPASS161733 ct
SendDBS95-BKPASS3097643 ct
S95-DskS95-BKPASS81%
DockerS95-BKPASSactive
WhatsAppC2-APIPASSJSON 352B
WA-HookC2-APIPASS403
SpamScoreC2-APIPASS200
WEVADS-IAC2-SPAPASS200 13KB
BlacklistC2-WVPASS200 2KB
WorldDashC2-WVPASS200 15KB
SeedsC2-WVPASS200 1058KB
NR-APIC2-APIPASSJSON 719B
SSO-blade-centSSOPASS200
SSO-blade-ai.hSSOPASS200
SSO-claude-monSSOPASS200
SSO-crons-moniSSOPASS200
SSO-monitoringSSOPASS200
SSO-openclaw.hSSOPASS200
SSO-crm.htmlSSOPASS200
SSO-world-map-SSOPASS200
B2B-LeadsDATAPASS2089 leads
LinkedInDATAPASS2344 profiles
Ethica-DZDATAPASS122337 HCPs
Ethica-MADATAPASS19723 HCPs
Ethica-TNDATAPASS17794 HCPs
Ethica-CronsCRONSPASS17 cron entries (crontab-based)
Ethica-ScriptsCRONSPASS15 scripts
Blade-APIBLADEPASSJSON 294B
Blade-BrainBLADEPASS18B
Blade-AIBLADEPASS302
Blade-CtrBLADEPASS302
Sentinel-PS1BLADEPASS200 16KB
Life-APILIFEPASS50B
Life-AppLIFEPASS200 62KB
Life-HTMLLIFEPASS200 24KB
Blade-TGBLADEPASS11B
Blade-MMBLADEPASS108B
WEVIA-ChatFUNCPASSWEVIA Engine 152ch
Life-ChatFUNCPASS36ch
Ethica-ChatFUNCPASS220ch
Monitor-UPFUNCPASS11 services UP
Ollama-LiveFUNCPASS7 models
Arsenal-HPFUNCPASS1378 screens
Ethica-HCPsFUNCPASS161733 HCPs
SSO-BladeSSOPASS302
SSO-MonitorSSOPASS302
SSO-CCSSOPASS302
SSO-NRSSOPASS302
SSO-MTSSOPASS302
SSO-OpsSSOPASS302
SSO-ToolsSSOPASS302
SSO-AppsSSOPASS302
SSO-OClawSSOPASS302
SSO-CRMSSOPASS200
SSO-WkspSSOPASS200
SSO-LifeSSOPASS200
SSO-MegaSSOPASS302
Sub-CRMSSOPASS200
Sub-n8nSSOPASS200
Sub-MMSSOPASS200
Sub-DeerSSOPASS200
DF-Title01AVRPASSTWENTY!
CyberMon01AVRPASS200
Plausible01AVRPASSpresent
Plaus-Blog01AVRPASSpresent
Caps1001AVRPASS10/10
OSS-Disc01AVRPASS200 9921B
EthFeed01AVRPASS161733 HCPs 20 feed
BladeAPI01AVRPASS200 294B
CC-SSO01AVRPASS302
HealthCk01AVRPASSexists
Bench-LB-DictSTRUCTPASStype=list len=39
Bench-LB-ScoresSTRUCTPASSval_type=dict
Bench-EcoSTRUCTPASSscore=80
Bench-AIsSTRUCTPASScount=39
CronStatusSTRUCTPASS10 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 2c2873202..d9b065373 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-21T13:19:43+00:00", + "ts": "2026-04-21T13:23:43+00:00", "summary": { "total_categories": 8, "total_kpis": 64, diff --git a/api/v_opus_godmode_20260421-152121/report.json b/api/v_opus_godmode_20260421-152121/report.json new file mode 100644 index 000000000..7f38ec589 --- /dev/null +++ b/api/v_opus_godmode_20260421-152121/report.json @@ -0,0 +1,312 @@ +{ + "ts": "20260421-152121", + "pages_tested": 30, + "pages_ok": 29, + "pages_with_overlaps": 1, + "pages_error": 0, + "total_overlaps": 1, + "total_x_buttons": 148, + "doctrine_loaded_count": 30, + "results": [ + { + "name": "wevia-erp-unified", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "WEVIA ERP \u00b7 Source unique v\u00e9rit\u00e9 \u00b7 Tableau bord premium", + "bodyLen": 4166 + }, + { + "name": "wepredict", + "http": 200, + "fixed": 2, + "overlaps": 0, + "xBtns": 64, + "doctrine": true, + "title": "WePredict Cockpit \u00b7 V146 \u00b7 WEVAL ecosystem", + "bodyLen": 9397 + }, + { + "name": "weval-technology-platform", + "http": 200, + "fixed": 6, + "overlaps": 1, + "xBtns": 4, + "doctrine": true, + "title": "WEVAL Technology Platform \u2014 All-in-One ERP Portal", + "bodyLen": 15931 + }, + { + "name": "wevia-master", + "http": 200, + "fixed": 1, + "overlaps": 0, + "xBtns": 1, + "doctrine": true, + "title": "WEVIA Master AI", + "bodyLen": 974 + }, + { + "name": "all-ia-hub", + "http": 200, + "fixed": 2, + "overlaps": 0, + "xBtns": 0, + "doctrine": true, + "title": "All-IA Hub \u2014 Remplacement Claude Code + Opus (Souverain)", + "bodyLen": 902 + }, + { + "name": "wevia-orchestrator", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 1, + "doctrine": true, + "title": "WEVIA \u2014 Orchestrator GODMODE", + "bodyLen": 36233 + }, + { + "name": "wevcode", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "WEVCODE \u2014 Sovereign Coding Agent", + "bodyLen": 436 + }, + { + "name": "wevia-unified-hub", + "http": 200, + "fixed": 4, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "WEVIA Unified Hub v2 \u00b7 tout d\u00e9dupliqu\u00e9", + "bodyLen": 1934 + }, + { + "name": "wevia-training", + "http": 200, + "fixed": 5, + "overlaps": 0, + "xBtns": 5, + "doctrine": true, + "title": "WEVIA Master Control Center \u2014 Training Auto + Brain Monitor", + "bodyLen": 2892 + }, + { + "name": "wiki", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 3, + "doctrine": true, + "title": "WEVIA \u2014 Wiki", + "bodyLen": 32181 + }, + { + "name": "cartographie-screens", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 1, + "doctrine": true, + "title": "WEVADS Cartographie Exhaustive Ecrans - 3914", + "bodyLen": 25625 + }, + { + "name": "orphans-hub", + "http": 200, + "fixed": 4, + "overlaps": 0, + "xBtns": 3, + "doctrine": true, + "title": "\ud83d\udcc7 Orphans Hub \u00b7 All pages wired", + "bodyLen": 9675 + }, + { + "name": "admin", + "http": 200, + "fixed": 5, + "overlaps": 0, + "xBtns": 4, + "doctrine": true, + "title": "WEVAL Admin", + "bodyLen": 8067 + }, + { + "name": "agents-archi", + "http": 200, + "fixed": 12, + "overlaps": 0, + "xBtns": 12, + "doctrine": true, + "title": "WEVIA \u2014 Architecture Agents IA 3D", + "bodyLen": 3649 + }, + { + "name": "director-center", + "http": 200, + "fixed": 5, + "overlaps": 0, + "xBtns": 6, + "doctrine": true, + "title": "WEVIA Director \u2014 Autonomous Center", + "bodyLen": 2131 + }, + { + "name": "tools-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 3, + "doctrine": true, + "title": "WEVAL Tools Hub \u2014 \u00c9cosyst\u00e8me Souverain", + "bodyLen": 11188 + }, + { + "name": "enterprise-model", + "http": 200, + "fixed": 5, + "overlaps": 0, + "xBtns": 6, + "doctrine": true, + "title": "WEVAL Enterprise Model", + "bodyLen": 512 + }, + { + "name": "wevia-backoffice", + "http": 200, + "fixed": 2, + "overlaps": 0, + "xBtns": 1, + "doctrine": true, + "title": "WEVAL \u00b7 WEVIA Backoffice", + "bodyLen": 206 + }, + { + "name": "dg-command-center", + "http": 200, + "fixed": 2, + "overlaps": 0, + "xBtns": 1, + "doctrine": true, + "title": "WEVAL \u00b7 DG Command Center \u2014 Real-time Pilotage", + "bodyLen": 4371 + }, + { + "name": "dmaic-tracker-NEW", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "DMAIC Tracker NEW \u2014 WEVAL Lean 6\u03c3", + "bodyLen": 1271 + }, + { + "name": "ethica-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "Ethica Hub \u2014 WEVAL", + "bodyLen": 2985 + }, + { + "name": "wevads-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "WEVADS Hub \u2014 WEVAL", + "bodyLen": 808 + }, + { + "name": "agents-hub", + "http": 200, + "fixed": 4, + "overlaps": 0, + "xBtns": 3, + "doctrine": true, + "title": "Agents Hub \u2014 WEVAL", + "bodyLen": 959 + }, + { + "name": "email-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "Email MTA Hub \u2014 WEVAL", + "bodyLen": 1918 + }, + { + "name": "anthropic-hub", + "http": 200, + "fixed": 4, + "overlaps": 0, + "xBtns": 3, + "doctrine": true, + "title": "Anthropic Hub \u2014 WEVAL", + "bodyLen": 627 + }, + { + "name": "cloudflare-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "Cloudflare Hub \u2014 WEVAL", + "bodyLen": 2041 + }, + { + "name": "office-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "Office 365 Hub \u2014 WEVAL", + "bodyLen": 2162 + }, + { + "name": "gpu-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 2, + "doctrine": true, + "title": "GPU Free Hub \u2014 WEVAL", + "bodyLen": 2245 + }, + { + "name": "monitoring-hub", + "http": 200, + "fixed": 3, + "overlaps": 0, + "xBtns": 3, + "doctrine": true, + "title": "Monitoring Hub \u2014 WEVAL", + "bodyLen": 1948 + }, + { + "name": "security-hub", + "http": 200, + "fixed": 4, + "overlaps": 0, + "xBtns": 4, + "doctrine": true, + "title": "Security Hub \u2014 WEVAL", + "bodyLen": 944 + } + ] +} \ No newline at end of file diff --git a/generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.md b/generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.md new file mode 100644 index 000000000..dcb8febd6 --- /dev/null +++ b/generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.md @@ -0,0 +1,13 @@ +# Test WEVIA PDF + +## Introduction + +Ceci est un test de generation PDF via pandoc + wkhtmltopdf. + +- Point 1 +- Point 2 +- Point 3 + +## Conclusion + +Generation **ok**. \ No newline at end of file diff --git a/generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.pdf b/generated/wevia-Test-WEVIA-PDF-20260421-132444-4ffe9c.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b5f305ddf0b451c27af85c5954ec7ca97455eecb GIT binary patch literal 16658 zcmeI4by(ET_vitUMkJ(>r9lLC7j~EK?(T-AySqV<21yA)5tQzd7EnT@1*9Y-BovT_ zyMTW3d%wSX|G59%eV%1@=6&Y8&zyPBc|Xs2&A^~6F3ARB=fYy>%I|uP1p)v8j;1zP z{QOuP>eg;{Z~!w47KfM%+{De%1;Bi9iR6i7i)4l5hGdUqhxqG=^ zfsnw6zfeREWfwLB6e zCZ*cSnE*iSK*VT8Zb}guHGqYQo$IxXiK{JuL($Oz z{--^VU+VP`w|8@cyEp(i#Ni&+W^h$0QG?$`L;q#Nm91A6yTBdXewoZ6=IG#tsJa4p zu7|*(3U_sMcQHeZ33N3hs#qK%4i1ip>!2$qAgT&*b88b(M=yXL5YYhPfv^LwKLBnn z@UNc+fAPe%mf!O#=4j{WqUK~`1_xYCv$B|)6X0qr2(?!~{~W}1-ST&Xl#7Y?l}e63 zoOs<`O3egt<>+h2|KSOQ;ww=}#JH}dBw+y9%`GIk0o;FxYb%-Bz|F2j5aNHj_Ij9C z_UZxt@Z^R=N=8?W3B!q&YlX}MA!aJ03fZ2Rgp&CB3TGhCJ={Z!Y z<;tr?(dL`NrE1k+G!NMe%EM&S>W{~*5W1N0jrbNCI9D}fglabF{KBA6;W-i7%tYJ8 zfKe&rGZw4xi3ccP*8O7GkJrSLO8@!R9ZKOay;dQT?K-VT+sVZ{kdti_W#D?k`NhQN zZ=wl0{uobopH2DrkXTdf_wBK*pnF)^i9dq%d+t$8Hyp?EkWvIw!XxETnih9YX)i?y*c~ss$6EYvP1TP=GbCz2no%SFiTEM7t+vS%Y;CgRA zg5M*$xFC@Ln53H&5jVwQODH0UG51d-C!=lAEfW*`*^Vmmg*!%#yPL>gP(I}09-SIy zl?@km;&VH>G!XBE$Jx^lqW#%Pa4WO)F)q@?^#|RK<<4%D=-pmfKp}`DQ%!zvrFGe& zmn4s>sNQpY%D&vu`v(^p&r8{IjAP>{N(o=5$#8n9woqy%Pb*42TAlH(dC64VuU6%s z=oX_n-WmG&OA%1m2>de#JK+ms@^4TC643#tK)V4wAB;tX6HRhR%UEOEtNK8w%l)G-^^0q zqxbSHsld^oOjvxUg4d!j?gF`Q8@R8X_2wsW&a?pcq*)G);-(ohxvvINQ~q$uD&{8r zL!;;=)d?Q<8S>tO*Uq+9Y&mw$T5Z6m|d&uLGmSo4c=bFgl@@kj8CT7&xw3eL3DYbr*atFNY z+7qj%AW&@>SshWRJ6fK)RH?snPVDYeFFa@Rf)&iuXvf?46zi35!uiS&ox|OWA;OKk zRbc_PXSnf}S^NUD!4pfj5{}UuP@x4)NCsJfok~O;XM3p4b{8l!3KD5of%4Zv{T1i0 zSM}9O=K({1hf&Z~Y`57O}H^QRV@so|46T;5J34;KE05(o;9(E8E2!cQXAZ`d3 zB9e0Q01+{m3lU#IJP=MqG~$p!ymPG0L>w#;FGnCkm58g^RV3%(a z#>*G4(F6}J{%ZsJS;EKU!DY&gyoZ~y^e`;w$I-;9FHt5p7kxZsV`cgcb$zhP;yVteYq(MvCKDYR zE->}0W1ghW`){mCHUz{c^fY6*Q&tE_WrcC`WyRx*2KJuS#bqXVS_koynw5f)lU70G|LDP4B#5?+yWl4ADy}%&*A{a9o<` zP4Z1mt_cVu<#Lik+xAFv_=Z=w^dakD;Gz=KlCxy))bC`zTJ? z=NofN<_F(3nwdCGIu-J`v$f3k-sN*X6fG+jOX$P+Cu?+W$fZ0k>4F!i#&aOwxnZmc zKFsy9O>HdVNe@qVl*hzJlb;*Qnv2csyGA0K7#nO{CL6em(2nYBkcA;ldYPU(ExZ-( z^G7}NEqOf0YibweiVB9GA+474bJKGdzN)jEQ$N<|${n#)e1=*((LovpidqV@Z(bco z1P>}~Z)%p{ILuz|OS_p+vHGR!&Tlzvtm}SAEm^}s!@HQ;eJ2V?N_uKBG}E^78GD#1 z`YCs*u$@_Uv59qkw*q1N+SzF@b>Z`xf?YKGqWOj>wtA`zYD(S%3!qgXqf(phkw^gJ zp|KfZK@LTmhfDJ0G$GjE$GtS3L&#lmYt8Iq26}05LUzRbs9WWtcbSg3D zJ;S85y0`zb)7D!r*`BVPaQl$#qbqJ>s}-SYVE`s-WLi+Rr6x@2Ib$5{+4nrLM{#Fb zi=F7y<~!JE%($pK{Vw{1$s8^GAPw#G`s{hZv$Za|E`6B#*QIC8srqv7u*!-Y@RuzK zA%hhW1@6%{`mA>2S3m?X72WI)8%AJC2tI92c2p@?13pmU2{`2lBPeEi%z|w zI-dSdY5`fHIU>x_pEHgEP}fUA&rzq1m$ip0TiM6!2Cy>CoWOQS>X292Q8lhEw{m9OnnYqDf#V5ZProklEzb{T_@`1MuI$Ib{0MAt6W8(=(+OY)g)p)zhy+wSFBm7JSb@5Sop<^FKb9Iudz zVKcYNCKz90X)`?8V|i8KV_jQoq2(S5`B5~L5uaP6VYjcR|M^BI1-cJ(wBc;nkw9i+ zmjCt}QR3+j$mQ7HDG!NDDK>}3N93cYetbUJcCzyKJUmfu@D-R1w3A#RTaR&Aa-E52 znixHpC2>t>{G4pEuuk{&^u_T0GFswYxqi>^ZYZb6?1y-$;LlG3)NhW73mjWycHUer zK2n++1*e`(27J?PpPk;0bhD%*+#LXyWJ@jkaJtt(M zv6v@@gwG9pz2|6BZ%^Q~cl@T>y6<(1rSP`yT$jXfX7-5niM;IwuboiNRBzhw&Yal% zx$`25KK<k3wzN03)_>+_&N=UC#kt|B>(9w8 zlJK^EX%h3q-7i(S9HV-V_dJ6f9?-Xm!y+qVx!0hex@2CTLQ+2CGXaoC$l1`_PZGpa zWduv!FFw@i#FW!c&a~3>XblOeU&foh2`bUMPy-o?x4tFsZiwUlUVF-7(4p=c=S_yrReV{ zN%}cNOA_W}#rR9S;P~1^!$`^0HPplnlyD3MDubGElOxa&c~%+kP-TVS-| z#RB{cX?g{I;3gAUf@5f6+KYv>L?@NBI4!VWUxfwA+!8=X?!>qTohv4RQu?j1CJLJw z^Lyig1I~|0!G{mu#e^8%UM4Nk>L?34w8320sP#l)(A(*BSc<6$dqH(YN&j>hrDO3{@}V>x53!tV21v&;iIJ0`tEzGM34xh2gpGv^ zs2s%=62MH43>#R%*HK$|jc#0kM7ge__Fc)STQ+26bIP&W26e?PK|Qg&w%rN+QV>jQ z+mvtdX}T_MTXuzEymb7vitDDn7eUc{%qyBNj*BuyWD65WJ(xYSK}Gg}tz8NdUPfUl ziV}@QwNUB4BBieM`d~w{iG&v>=CGRjUXgY2G6gMHU3tZ#>GaR3iHjbAWGJjsCHgJ= zuw#K7Pw;9vj^b-`0(0+|7dy+;L(9`VY)?Un#_Dm$KXi-3k^H_JIhjo&WG^M+fY`hg91A$*0sU^7evO6XrvWJ5 z7gc-{v`I^e+Zn{_A8jHrSkv#l8=VFTYU|5n?b6$RBB zuzLPrQ}(_BE%o{kyyJBQ>dU1j!a(q2!8uF%}9C;H>F@<}hNT2Bw@J7>ovQ$^OzJOYdOjONr> zn}GeH{a0^#yIH~Vouq@|3w_cLwlwy@B$DxwzF3niT5B7bYr^0!a$0M(7W<|ay6$Q% z(eLu--`~Se7cc+PFelL4y2gHD&=S(G*Id^8aAsf{Q+^#3vF$iI;VEsi!d$0s78-G!2iFww!WsmIQoj8+&yO~Dzw~qm9Uu^x&(WiHV>o8;^R1N_HXbYoE%SVq5 z)5#)i1@8mSxNN4eJ6|(T+%f8{OqYHRG^)~#>We34GY@sThjy;_)_`N}=X1fh`B3@q z&J~f>Mt}oaDSgh#DeOoTuWrjni>?^UwC@T@{Gr2W!;b0M zMOt`Fi{-%bfL>sY=CBZN(zRI6c|x3+KxK6)DHYmL5EZ&7q*_BMa(QdF|Kla|fH(+h z_|b8_*2NMDfsc+Mybv^N~z`V-4RA=_f^DGxrgSv`sWa^ftSrax`rn|B5U zBo^ULXAB$z7+&4Jj%1bvYv>YgzR{I;Oi~R#^m&v>P|JFQCK73}&$Zh^QI4H-B6OT7 ziI2%1&=xOGzNVAg-rK*UmIiMIhxn%}AqN9h&6lbVGF$r5PjzwHc1XKh4H{k3a_`F( zj{MjwEG(H!%|#tx=MSn{f6zEmGL<_hP`saAc!mR;`~dftgAVN%jF!8f0DbF^XN%7E zDSBO-yotx63kh5=m7|%GW!~sbj}AJ9T0ddFY%P3lFj}3Zty0?0ZzSubyD+iO^XbjV z9gTBbQ1oewHJqR~f;+?M(nU0NXkO=_RJ-^@^FRkw;dlJ-0utk?=~t+lU=omHN9Y4F z^%r7w?j!@|1{4(M8}PhUc>#M?n8>(3T!H0MXaIH95CA@S%T(J5Jj z)TyE@RVJ<4%AxQ3)unZHHD2Nq^cFVkg07|ZEnk%Ew@3nc`(Hm~MM@;gBuX1if_@ki zuT7nvrqPjOd`|6UC^$KAsNV^FG zCz_@yQl=caj1K?g6H^c*`?fQ?F}(<10==ah;8X0A2Cd*K?qoNESQdg$x6sTQYqCJ} zp-VE%EDK%?labik;tHh6?TxUwU?nj6#_6LcOk@RT1EWZEptK{K3Q0P!PWg&o}Q49nj)M}tUiI|>d z{+uK^j!7l}tj0hlN(MY9zl%1TwW9Jq72N)&cmD;dVr*XsBnVlCUE}DL1%QJqRTJW^ zSf7zN)Q5?QQ=9SZ!OqJ9{>fa;C0WtMD8>RDX#vt8RhIiwLkb&S{xakXeFgNmxZQ9A zvVK5JrMlqLv18htJXM@0YkuM3Qss5#7W$v*EM+BLhstFR zT;dV-{RsZ>ez~$zRy^WOvI07z23r}YXC?9M=Q{V$M(_2eL};X<@Yp~R&iLEfRluFk zQJ5MmD9MF5MdXa|YGuyV+~S%maLPqo?nR& zQB0L|kxz#K9 z;_YpbVx7|B6Jv2+E-1I}gz^Mdz<{5>;@zpZuT6p@q0=t379TQVg^`A(5nvR?O0ggA zTi;$#-%GtK<>{l{CPco>dn)oO4cEI%C2+^7ox(z_YcWsxEjsUsu>D8sZ+M~i=AYqZ zAxX64m-q?^SXsRu@oKPz zx)E>z`=oO&=#fN(UrT@>(*1K2BS#{JU|(a}ASYk3j!4HDpnOmk90jGS`w?S1GRN7b zg!x*)-OnpN`FTz?81QDHFMB}8Pt=QdPr7J=`j;?S8{)g#neYsi7gj)DT+=MkrN57N zb_nLekg(_|d*D?G2Cc8svmjm$(O;l5bakrLfj&UnK}IAN{)FI8$X6$fW1N(5zWAv{ z+3xOo^LVSaH~zvNT@L1T^G9Jg2FhPcQ8&a^2F+E6D@RNy(g4cGYj z|C;Yb&^mWhw;T2+BYu?uzRCrIu{cCcT;bQS36XmJXV&*Bb?WVkNV3W}SU4hR6aazO zEUghaXKw(r2!braSpXbLF6M|lv4bUmS;icZxV3ikMl`CqJ2~0G?XMEKKma1;dX2OG zOgRItlhRkzOh#PYQA$Q!!306ie)q@X(7J+idQe1O8OFs0fO0|s5GW^r3kn8sa&aSa zv|vsE3{io>pom89>kQEk@>pB$31K{LFT;qXWmr$Oo zl=R<7-=Dw{@H_ttLFAPG#9>$F$~aiN0j?me*;P{6!rH;y)ub;&V-k|8X6B)63N2@8Z9DT^H9nKnNW`AP6Q1&_k3E zuInlka$UeUZ;G2nAkTFTf)GVWa@~kPpf|OfYg{+lAXkPVL~ijEly zQ{0HaZj?c9?g#y)>{m_fMp9Jp28sS25dxZA&&(hGG;?>kLd)0FckSgX?^!#*|CnJX zN2jZ0cK!YLa=Zcz{{}68S$J1df}rI8ZN*7AAZFoeHT|&~*rb0$5pxpx zQ)dKHQFqjEu)dl&0O;!RRs9Rz_|u#}a0b_3*zV=!CDOmg0Q!>^|22C2xpe0yjBYB&H+x%0y;lXA24%#0wZ&TYY4uu(S)T)Us)zVR#Zy~6 zXJa_4hXgM#E_W_3dgmJDjo2(rLA+o!Rrv0QL<}B4~5U<3{BK^ z1V0!rd}$jR#*Wqg`89_805AV3hCbo(kW|u-i6}PLvarqPPX2PDI6qk1n*BILNhZ78 z<&x$zB{ho3%HR#Fs(z}UF7EYXJNa{nTHtj?$bHvJz^5?_b*7~8Ydk3x3h!(hqJ6=c zu`ijdQpkCRpYhUftt(y@H}aN35z{xUyxPd8nczXK)upH;dO?3WQFKEgiEUacEY?#T zlO>wnD%3o0_-d7nYX*;t;Jz;?RlCv;(DJokX@NqqC5+_h1=+)h2hmIG?5l z-_kBRr8fV``!SyL-Y4btb0@ZHzP)97(|qj1c{+tjEOu=Uy~76-pgEy3znZ`=bEo%D zMJ|cotn`=}V}y5X!;L39&(PFjSvwp)e0{LnIP%sHs;^1+lG@+*(7b%*)&M z)c(-j-R$#hqhmvhJAUi-3w zd;Mi@HD{jfk60hr&SRBZ_sH4$f5@C>O&zbTi#j|k>rJ^AwgL$%@8J$34(`=hFcQmX z{H(7@WaiZRz4j6H1Mf{x23Qkd>{H!U`AzPHhgRegHft5l206)#-E}*at>^oxaNEPltR9ST* z+Tja8RIBhngD)xzO9`gj%0@yy(Opq^Nq}?a)+WqHVe|5W)Y0o7IjOduo>FVE#|{q& z*>l@x#uGo&4SS6(pqCsfI{V9OiQ)%!Wy z%y*g>xNSAVIk6tseFwYl1f5Zkw>mK7E%Zfktp9%X+IJ_6!bgVwYy$LQRtGG_xP=`< zX_i|=#N+*=cHd3 zxU_D}ztQ)pWE?hT6v>+{daY8ebC~NXJdhn%GB)A!Ex~0?cci zslP+u<;%@e!$H|kd%mCj4y=4iTT1U;TK(uwAG3bddH$4|w`LvfP}36IaIQU9R~LlG zBoXlt?H#*FG>sC*d{|&|Utj@R)ELjeI<0RrA7As~+@y$)+N9w~RnNuQL|QNK{;7*C z^t6Y<_`cjS9|irnjf<(DpQ$R@JYH&qF_W&9A7;vHje-oYS;`#NxcEI5m>=3u)8yuN zuN@6RWyv_|NrAl+634EiI*!(|vm=FB^vyR*O9F;|7DfY+U%0cqPhQDe{HP_Z{w`Qs znPA?6yf!}m@Ku>96es20-fC+4z|jDn)A+3fY{JtNtw3S6quo-DOSH?M^?e^mFM1}O z2@T!XY%{~ZDl+4-peyn#RfTC=p%Zzx&`$hGbeffyZ zOuJy9QTXe#Jfppbt-li+mG(@IRZFkUkZD^@3a;2KiZ+n^}7sM$!Nywjj=Vev|I{| z>rK(h6E{6F@?_zlEro^7`8l#bop?GG1@D=QvG3P$MLSRSmzX`C`ldbUDE1AVb>MEdbkpSBOzVdmuy zJ)y%!s?6g?u8r#SpzMR7(T<)MX5C2NA(OApHvHPVEI)0Fuq}zvD+GPij^QqHAEZeL zO{V)mh1w^hYgJ6{LM1Nrb~Dv*F?P%_*fvEiFyrjQ@N+5H{H}QP=&-5&CmprWr)5p2 zaYs{h`)AIlW=|c`IW1`_zweJ(pK+fUk9eMx>~Yg1-OV6CgGR$XHa z$x?d#p0|ke{M6~>VK`+lH#tS|dragXAD(5sjp74wwayEihPP!kM)`oz5)XrFGQ9F{ zxA+NW%>$j^ewP07;vPA)!0eUyaw*4_>V;VcB|J@WAg2W_w_&JtV$`+we*7dbOs>4? z%w;6YP$NJGlc4vBn9SMd)~EIHTbrBRrS`_(k=I)II=(#MZmUQqXp_}uErAYilrl3r z8&`+mvY7`SIYaR`1K~4ubFJsS#zI|Yo-EYn-FfCsZs#ZHy)cIclhNnrtZ{bw^K-46 za@!xGM|%9V*o)frPTCqbPZXj_x(VhlQnOHkB z^+y-Dl>-&*SKOuFYa|%u=PrgN5)zmCj#M{hGQb<@TAZCzm<7w3`5Zfp8tflXk$o4JK(Plxil(c=-*$jpaLklHE}zTu0BR!M(zz@+kM z5%t{#RvG%o1eS=17|%SKt}Qjog$wdg!ZrA4|2sRcjIu4}DfE+{&mc{0YAs3>tixnp z@g1kgY8Wy>d6WnF&BIE=r)&P--ijRo0#sl|B$Kh57cY!n>`cs;2o(vH<$@mqYe-ci z9^nRtTGoyC1cB}hX#~PbHP6E~nz4SOtsd|MrhTz>-8)}nf%aJ4aj-C>0x!7Rl{`A; zqM$H7(||%dkGLtGezfyRlGyjImxsm2T0ZZ0f4L!tJ*H zo@$lqvdmbH%zE+qWWJoP42}{N;7#`j}cqchx^6?h=q4*hk z{}d0|!)J-w!%RvbBNnYwExfyQTBQ%{EJV8< zwZw@+qTsy#O_-K^S=2Ns{$;x`NLA>7?s2D+n87v)Sf#-RS(`RwPb`|bhr?_9_Tz(L z3WCoBEOe|vU1(L+KQYNz9=vS0R~PZp)c)&Q=CEn{1NAQY>I9p*E>o~Qz#)(r>TWeqatJD3CIA~p;X)nM_1 zuyq3(ONH2qOnc48axXB{-25|BVr)cEOTp1jPb|VWrYr7e`#6}c_7V6KUiZ+ z9$E9)V2~bpl_9kwHRNIC$9IXfG$(8-`Xbt0oR?#iIHH=2uZT0|hL142m^*%WS>G|6 zLs_RpZNsU3w#rkP{xxji#iAN2tIlK2ct&x71nV-~c7u$$aXY^^w^@q|0Dyi~wg*gf zTwD z$T$_egjnkG%+Pk=mDOltOll$AVD347pVW_#hgRcvUkX6F`H8R|MyxSaniR~3MUhIQ zz7o`U35+K!k+Z?aQk|iB%-xp&9o@jG(BQWsvbKEJ`>cXwg^atN@P)9U#W>*Jdz;!M z%aRIoqOzr;A^zww;W9_t#+Oxj9xfOB--*`mzpeblwC>p&s4xA{e3xJ05R&6<&T6{h zXN$@7oaanN*Iz}qUssCm6MW)ejO-rEBA5Ezz0Q)+pB$zVE3DYMUQLR7%;JejUIkd6 zNKtvdD1;5dv3!`7s-*@E27BBBUMTIqs^|@W42~%TWny+5Clbv({m?H@TKaGsvx(g& zr!2>WO8VJRl7vq!8B1D*?yUU01nR_2SUyIKa=EBm3p~PqIBC!K1dFzOt0^_aPR+K^ zc3O~Ac+>DBKmn{Oelc?eTeH3*Y$-E}bhz)}#Z^kaY39oKB3M{!WXhkI!e=fc5OaDQAD!*CBmr zf&XhLpTE;em=05HboLz0AzKakWLLV?e!k&rx$(tNrF>tyfxEMmEsR>(fE{E5^HOa4 zXHflTgGvnk>YlIxkB<82_lfuJq_2k~_F9WAbG@G4Yk!SYN>vqStdfXkEa+HEn(|b4 zEWy1i1#iE;y4mC7*2@!&09N?p7y+KFQk+-WF5+B-*>{A;B+B2}arhkuW##^`E)*=b z5*T}=*-(D+B_Cr)gT$&SC8IOGZ`qAc#P=W%Se;Rh}qM% zi;=sBzSzcLIi+;I6G9?&j@K?9)YEh41k$3rU890K+sMCBa52S#XK0fbK1cVEK(N^* zsWqgCo7sro0ktt%w@OX&jMFFInl6z9aXi+2 z_r%rCugb92v(eZHd*mw>&t!eH=XU3)*@e2U*F_ES{&Z(@&~*4rksV@FP=Myv&_+&5 z;3^A$*I9;^S&!qTfSz7r)M$Q%R8c34_SIEV%*v&H+pZaGGs|TJQ4FUR}2$9 z^!7WkhhH{0tlwI&h?eg6a{nM?IL_ca++(a)CqQ)&mX4&Wg>It+e5^@HT_rihB+F5Q zd<~FfGw_&e8yQi$3}uB4x)1?eTq5u=WdsSozTI_WD<}{UWh6^kQ_2ER;e$~=kq_*$ z=wRqHI-zAff-g8BBE3u1yYH`5*xAhKwE=hDEjV#OFf>DuGNt?QgU`#}qlcP;aleQQ z#|3!+WTa(;E5cPxU)_e&#HG=LNLM=U14#!M!=DWFqbhM{BE_W<#JVAWCF%Ns;pFhD zKpHH{OBYck68sudqN8$6Sd*AJBLB8#q$)5G7oVO^g@@Jxj+7h&784hIu8L_>P4JG; zvqWF@nc?V>EWT|pE^DO@lLfa-5OibmK*Kp&SSg(qaM9P+3$W zfYKWeqhxt=kv9YsAMY-V1+{D6B28HKOUyOJ`a#>p&>aJOK9j|tN!-a#TJ`GL;~mCh zm3$$Vi2Oxn87@H@v5gL-CqMG;9_SaujgjOc>rbKP=0%8x5K+mikcLJLyNT0AOGo?= zQKn72M}FVBi2<@C`oP35U$}#d!7e+3p&TFZlHj?14fA+ML5%Rlq09q0GyBkEC$#GxcQ^qHWtD`Hnh6cchSGRtsoslCamjIhEV1z zibZ|Dg&F)=`5b+46oqgR&fY2aOhx+M9?I$uvio1EUfsQA$Fj{zJl?e@p-DjaqRM(r z`k5EI2rtH1G-LW|sB^$w%1~YTsKyKD#V8GPtW08IA_5bX*R$QVJ_5)ecIQD8v zW`+)q-uOEd_P^Kp7SK?q-FUDq+*}W94-OmJ#Vk5iuV zcvsIuw?+ft*Pq-?KG_aR6q6{M{BuZ?E88CE!q)9_XJ%&&FF6 zrTWEu3pBiXBCoPHD^F1zq#V;`dk^+ceBK0*tT~0~#?Opy++rO15o{hEM`YP_F-18VzAY6+;wp#S`7ka;d^)pbV4xq(w}5w~|I>k1?vwSN zS2Lzm%l$%ug`YkR#3T)-j_WS3KDFPIN}HXvU&;FE;QO>c7bf~PozI*1T?jO-cct1> zhbJ(;f06Ol!tjxhWTc%>dC3@PileO2MpZ*6#&Y6ss+ ztHFEc@F{leCj~k2Gi=!xDZ>7dFEV1p8Fbexa2X})c4YieVme-D5$($fBKN#c9XT%B7Nn3wW>@7f+u468X&&bjX|ljgVePOUjUw@zoh$lf`- zjL?M<#7b@Ef4oyaJ(B1~wfR2xr%~DPCDK?4f5E?@$93}lD!~s0f+9T{h%<-?`~n3czKDK22poH@ z6LzEb3f2Dp!Vu*3?}Qcn=Q-3r2`e|~{}a~#Gs21ho>zpG>lfAhPsH;VVf{OH{mn*i z@G0~cpuK^xzhUYPcKyXv|08{c-9T8_4VeWaU@F2E*o_wGO%2L@16svzieK3ErXTp` z?wmI_;=EzFoHs+^LTI@@tor|o%>Ldd@xR>?@!!ZS;@Iy08I-+_7^;7Rve!@iU!d$Y zTl_mp1VH`{W&abE{qqPPg7{wV;kZ7wjm05nZSD%d(!;uDzlhxoh~v=ih&>me>tp2C zI}{K{ti>e}0SxYi*tQ^Jk2pas`l}TC>*fb97sNgRAOH-(x&r$*9{>~r;e-Gz0DrVy zVdtw4z~PTJ5DXC~|JDYA@W2qU>2Ga7Aoz-+{-cfaKj`B`?Bn={95)!TcjNDEAP5Y> zkN@5V1VXw0)fWWiMmX>4^B0@BxDo#PM;jEepX48HAQF)Jcx($?|r$sfdBF{Hxv;k|1JmO;{KQaKoAh*pY|c<*P_y=dBc1~U+P>cObM+QPY}8S8baVqCMs#yn-PO&+#qIi$ SK^*yn!2nnc3=&F`SpN&0C#{qK literal 0 HcmV?d00001 diff --git a/generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.docx b/generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.docx new file mode 100644 index 0000000000000000000000000000000000000000..52016fda485b1ca23cd765f9a6be0f310bc30964 GIT binary patch literal 10138 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 Ka3TNo>;C{Y{f4&y literal 0 HcmV?d00001 diff --git a/generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.md b/generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.md new file mode 100644 index 000000000..19d37f7dc --- /dev/null +++ b/generated/wevia-Test-WEVIA-Word-20260421-132445-edfdb4.md @@ -0,0 +1,15 @@ +# Test WEVIA Word + +## Section 1 + +Texte avec **gras** et *italique*. + +| A | B | C | +|---|---|---| +| 1 | 2 | 3 | + +## Section 2 + +Bullet list: +- First +- Second \ No newline at end of file diff --git a/generated/wevia-WEVIA-Presentation-20260421-132446-5df203.md b/generated/wevia-WEVIA-Presentation-20260421-132446-5df203.md new file mode 100644 index 000000000..7e2864dc0 --- /dev/null +++ b/generated/wevia-WEVIA-Presentation-20260421-132446-5df203.md @@ -0,0 +1,14 @@ +# WEVIA Presentation + +# Slide 1 + +Point 1 + +# Slide 2 + +- Bullet A +- Bullet B + +# Slide 3 + +Conclusion \ No newline at end of file diff --git a/generated/wevia-WEVIA-Presentation-20260421-132446-5df203.pptx b/generated/wevia-WEVIA-Presentation-20260421-132446-5df203.pptx new file mode 100644 index 0000000000000000000000000000000000000000..a541aff996cfe15b9980b1073c02b1b9cdb89524 GIT binary patch literal 30138 zcmd?RV{~Qhwlx~twv&o&CzYgP+qP}nW(5`7wpp=l+fKgJyU)Gfes?>kozw2Wd-jhx zSDUM?A8U;MjNXUVl9d1kK>+}QfB-006MHb)<8!G&3}E z_{R$at*ez~l!As#FFnRPmDFZIcK`!)fT@syU@XYo;fhmvO;f#5w2uuPmE^u(%0pY$ z%!;~P z^6BE)Wl4xjZi{DfMpsQC2slzhyBZ|)3DuWui+5$M#(}()_6UltAo}D(6SMWOv#fc? z7E|@V7W(=xbQ1j;Yxk8Di(P_ebVnYRk194&Q?;A0fmQcYfc^UYlM#UCOkP^|##q&k z;Cp#9nvcwhd(Zd%Dg(Wjhg@?J@-u-+ghvP@(-$S?^VPIVf4D(l!NBbx^?jBWs?A4p zNcZef(%Dc(g!HVsbkch!IS^ILC!yf=)a9a@@PTO|!SdBZumvRPkWPeD@ zY1*DPUK~9O$qe-!x{l?^l2Lu~z*f4wo%Ki;1oZlbzsb5gJgZ$@EG5&#STya$zm=NU+wYN>) zLjU)m6>=4wNJhOk0MI#73#je-M+dm7c?YSK=QSwYPrcMMSPusLdclq>0rlCPgk4CH zUiz_u<@zTxClANy!#e0ikO4$~DO1ykHVm!rqPm$=%s3j~VD1(cEU@&B*#bRYz);lV zjt%Wan3KR_4&Mn6&)sR#nj6oQppl`&(8EPyF*%O~jT}O%Ip~0<_GYt5NKGtDT%C`U zwL=xtJ|@}joOJ0E9MYy;wfXvL!jyITw3+Du^M=;(exDbblz?N3L zL?Iq_x=8EmfoBlnso%E0*l4`f*0bOH7wf22T}R{s%{QmeTnLwf5hgih=d!V(IUg1V zDX?~CtRP(OT=He(CBG%$3(5VucHPLd-zZ=7@5$8D0OdqM0*?{M-3u$R~TaT%)zHZW0M0 z2csb|n!+6E`E~4~fa1yC{q_kkQe%3cK|z?4LA>l4r|&J_zPCFa_W~#OG5>qxUxJi< zq2Oos7qVXe1+vWl5v11Ge}c5%BVbolseY7GzKTxHeB=ULmi-~u9(im0<wpo zf@yZLysWG~kQwj@afLrWB;=jRSk=)&ys-i7jfO6JY~DB%A9kDJgv4M%kj7x|5|LP4 zj5W1ZYn0FMgT1KS*v|b&m{y1tWEjp2Fx55!DG=pc29_H!yxW7(`W6?j%C&kYXeSOz zds8Zt$LEzvVfS8^HIZ@O1CYCjYv81kFiJ;|^VKKo@I^V@NhH!Dvu1|1oV|Ux3z7?E zr15Tfx@;@k+GiQ8W)SZaljwjS?usMij7YsF<+1Sa?By`vVkUZV`pP@uqSz`})x`+d zFyo+T6&(?m`m2+dR$JEV*Lb-yWMR}SXmxGX1qsF;3yb$0gP*H_gt`RrZ#?Yeg3q2O z_0LTV_IcFa{{_)C><;{rFJ&bCLY3g}3aMjnWcklJN&DwHDrOw2mmVQdhxBYc|ABx= z$^-G&me>h!pkW4B27bKa*=mLXG#>ZG*>5(6X4bxOs{&P6ee@DKu^f1^2$==2o12aw0spD z{i@pAzT0N{)k0D$nHV^d1c!O_V6KVtJA4}WE{ z=jvMatE>o}P$6DtAS?EOuwd94;Qd9WcB)yjs)a#19Pt+ z7Hj|Z**V#{t#hl`W+_<>7BbagIO@hdl#;gAU_8_A&)L{47W!B}@vJ%S}-0x2df)J{~m9mVaM@$Go|(^2xceW*mj3AV{VcHb!^ z4c;h6#_rR=7TL5y5SkI2tV!?-HGzpUZ1^{N^}E-=J5oVZecEG>Nh*^Sf0txkYibW; z`wDwxmEhB$SCdF9)z;UBC*eYY+?e4bA3=s{mOF_W*;#zns5|VQYqjS?@==9~F zv`lAz20JL9+^tVL^baya!u&~tX`_eSP~*lCA?%UR95o`>ieSI6LS|;fl*O%kW9KGX z%FX@j#(8>>Yvg;V#|L2ZkLUc+VNq`-UZl<2xRAvgL=KFq8^mXJg1xP9*KN5ZKlk>% z=pC?qg(vP^_ZGyAcHp>hb99`A=6vpG5r#u-Ud279>vy7EAvC1ThVyy2rWx7`^Y6+m z33$oS6oXNq<`2@Y`7L+YL=(r|xXxT~jqej%sW}tZTNqAfJyQ>@eFf8cST)gqL(@X6uZbO(`e7WsFs# zm#5(vejD+N*n2V(0F{&lHO^JNUjpfYBhp|bIcoiUgpr#)H;Fz=&CnhghgOAQ+Mqtz zWeINO(j#9UmOTQ~8yrfQbI^M0h`gi{Rx$EC%8Eu9lx@oFDMr=>;)C$OT@+#G2jsM4 z_)v8Kgh&OzR#&;4%>H=WzAfr>00`<<|g*sUOaiCZt1ek zkNf+0+D$ciyw$K0F9zLaCjZQJtk!ctNWT7K04&sQ3`+~sru3Nf#Gb?Ny~XB({j;Ud zsNr_H;aj9KxWn^G0)5qQ8|vdGgN$RXiw)_W8og-b;v4!i#T5&?Yy~^zjFoU8kcExV ze)6FA3g=hV{=}4P47y+@%18w7mxDtYpHz6F;9+S*i3?%s7W5iJXnpt4P993_Eijp& z(Mt_ky9W$Z#XSEm9?Iw_ARn3d0mugoG|fK2EC94Ku8l0ih}{bY>ipmVFCbOVkY*X+ zF+LxBdP?i4@W*pGfyUDWuM)jim#6U&s%*F=y2`tmG|7-D@$sw|m^=5Isn9 z)mE9Q`X#?Z&k!Rn>h;n|OUGn2x+EqtWiPUJJ8fST_vUT#s)gs3N=M?Xrnq*xsipNz z{>xGx%hf!5{YdBe@`m$Ncm|QSlb`C3RUsJpTK5bUZ6n`dW-3?07dqAn!OT?fpDQ#f z{=CE6qQS=d=QCaaP1fJx7(~k^rw`DJ=ie+6=AVY{^L+j#VYNTFXae|3R=dFg0I2^n zQT(U0^`E5iuRLI2UcjP{00sQ2ifE%qY^Bhw-ot+q3g=*XP>yC0*nOlGoG%ghovO62nNt%3WZSj!p)a2N&Lkel(S{H%E)$I1JJs zj-i$3Pym*Gq`MqA!J6~*8>Ygs$3^~2EYDRbx%tH*(~&(HN0a}H!>X)(TxSS5xdC@% zYmkat-6F<;aNkVUoSTEM+*0K%R8~c+wC)b>Z%3jEgOG&l;BUO zZD+sI)wLf&bPsk7@ChyWQ%M1=0gYy5vp!wG#l#VEsqyzx>xp9U^#&qj{%i931 z*isO6VLN-mgCsDZ&kp-!bAv5@n6jsqqhP>)4+?urYdA?p=rfL$Lly@Gl0hnAGPf)F z(w7IZB7XNw>1=umY6$El%|3j%3&LNwbMEjGYqVqft(WUbc5WrZMdAfN=&T+Ow!o3mEHy@I`U`R{1&8~MVp zjacPzsC-I+hPkw3TYMu_~UJ{)i0za#tH z@Jj{v3)vq)004+z$Qs%h$lBZ3I?x%|*c<)9wIF`nyzfsHH*jP<=Il?=YX?We(I9Io zE@30M!cMdRKhr3^(HWk(1iQD8q0IDZrYzsVdqVpRh@Z$pC2zz3(zGY{%DE4=MVMG7G$+q_Zk zG&EzF*i!0isV6mFb|dyoqMKU5Gb2reRgLa`JWW~EEd$#-lkCv9^%5V1Dqn`{a~o6d zf8iS}H`1ukFCWf*U4NqF|N7F&!O_O*k2f}O>nBg2STKc)E949oIbF_eklz&vnj8^tzl-}*`En2XCr2L$^xIAKL zpS>u#_?JTfFSlEH{Pl$wzYYQP*Xuuc@h={%i0}DoqapQdC>y81o8v-*AGhu{Z5atHxo~U|qH7EV4sna0xO`yrm19m@leN=D{s+7arlvp^Vw1u_iR67!sqx7 z`S-B!4WUrp`SM2F7vZ6NdF0PDz}DW#;fwS19L;R3|6sYEvTnUXk20h~dUGy>e26Vn zoTF7JmKg};1;ECDFds&|`m26+!)u6)e>8P2VlAuq_5!4R#47vA^gjK>Vkpe6X5=cqB<#DcCvSLBI zyl&sHKTr}*9Eeq7>5oR5I#`;p_HCAm?xvkw5-9C~l?hO{pkC5Cts%(sc$9g=G{mHg++@+)Sn5yV{M;Rr4}$r$0m>VYmZg}tCFpky zHT`^=EkL{nL(9)^pS!MK-!{{6G2iFz2X2>3&nC^K&J{e@M-EfRg(2Fda-+l)!fWSl zH>ZgWBvkb!=!y35P=8)HBgnJB-idf3w<6QE{=+U< zy>7yI2BpGaPD-QsJAww%wJw+-!~2=!ZV=S_H->nmJ%%^(-ISlGZtC>L+IJhdE|RJm zKv3o(@D3jc#-muSRPlh_HbyMEqk-{=q$YUc>M~@L+-YY7ZgZk%#0h9It6W*%5715a zvM}5_m{u-t=_ZG{7;ZdF0y`i=Q~*Z!1fX6*P}=M~L1X=q^Q&D%E3rc+Q2C)`Vsk$T zg*#nf51k$TQ6AyMkXwTTxOfGy9^ffpaxK`KL%`y_j`7rEbk{cg^bA>YMW-$=kC`)D zve;||>2RMes4@DlP_bby73g5EEW`e`BZDr%-Q#1CE>Xc+e zrdYk|Exsj%r=u4F_gr*FEtgd`fxERiBK5G7g-oq9f;JH(9r&#Ha zOnWC7czGW7I+5up+0=f8XLzXj?Izq*@rzINeZG29Hw_eUFXXUi?);MMU(>02DDN=n zFR4%h1pvVRkC^xeQ~YaW{KXs{iE=W11PDW2P}}P>&JNN{jpzoo;K+HmzyuwQLQo*K ztu}Pal2$1}XMT6rA8YT=`xm+m&&MPy0ZxKc;StnB5GadDvakb}ZABTR8|5lh1ZnV? zm8gTiWOH!_DjpB~5Qa34Qpf56QKikTxDLLXV(Vjk8p6ghPNMh2@mwt-TTz9dH&QaJ z;KFF`R-CHay3W0o0q@gk3j9Pt1^I4_eT9PG$Ja3Ik1evtIABQ>&M3~19jcF3(3}~n zk5|wvAy$Ka^{(%v+MAW1l8X|Nh%)HUm3LG?E*$4cH2K@D+Qfk)EHCn@tVL#Ie>o(O z%_o-rXp%oNo;o2uaHVGguP@N~PYD3NPzIM-xMhM`}A#EyJuYwMtZht!B}LyS&jy6NT~aDjw}GjyVoz zo@*)X9k&LdNRhd5Krrk^6e$gpx2nchXHn?T9dPkM_`I<|OwA0^w=x|#$@*(?>56g5 z$4Na`DHUYF3r0lEj}TSEe+CL5#Q8&ot-5(lwzIC;9~T1~d6698AvLT+4eFp$L2uoV z1RuhdtV3GaSxGM-Kf4&zRBjs=!N{n1o+8j>x{Ey)I6($Go?+^z3+*C`}Dye7-c&qB&r# zLiIe+1Ngf)O;=9?zANZtYmzyYM-B%HDfxdx%#ntKv#9@3Q?^qM0!(#EYXXvhz+5hp z#w4OXZ=OeQ+IN#$h%H@&K1c<7T)4&ZJ}H_+i(ZSZ{%yj0H&3qWvT@yJHKVgZ(j7%~ zzj^&?l!wTC>AmB#QgC#$G;;WZA?$B4IDdK!{_T!17t;?fn(uNXD7^$!E+>GLiG;`e zrg=!a>qgHv@pR*S;<+iRXNJtcpId-Ptt{*L;9xNx0S5dFcI$R#^}5wi&~A;J1>ANr zZVqKADyLJ0rWv+ic@7SOp;kYBHS?sZ9i87B%dJ_pz~pN@dCVq}_#NVg?IeKBg=O`y zmHHFp)^`_;?T4C)0&BW6585d%%(s-hQ&M~L*Yf@ST)x4Sc6fcAOWLmq`2TY*|3vox zdoDX>daPFoFu<=~^E(0tG67hf^{J$TfaA!{>7~|z2_li14G>}*XX{_e(!)CB|POgrDSBL{c5z$3K#xmrJ@~Mw`Oi@Z#&5DC(~fP>lms zK3}D`XOQJFyPQ}uZPkcQebwqRgF{8;A1w3U=ewY0DH(I{$6k_)YIbmi;5q}X%Mr

v85ClBQMLj%^A}BjpAk41wXgc^86#L#i{ns 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 1 (-93%) ✅ +Doctrine coverage 301/315 pages (95.6%) ✅ +X buttons deployed 148+ sur 30 hubs ✅ + +## Doctrine #62 Anti-Chevauchement - COMPLETE SPEC +1. X button auto sur TOUT fixed/sticky/absolute >80x24 (sauf nav/header/footer) +2. localStorage 24h persistence masquage +3. Smart collision resolver runtime +4. MutationObserver injections dynamiques +5. Playwright collision detection obligatoire avant release +6. Cache-busting ?v=timestamp sur doctrine JS +7. Mass parallel audit 30 hubs <3min +8. Ecosystem coverage via inject_all.sh 280 pages