auto-sync via WEVIA git_sync_all intent 2026-04-20T13:03:31+02:00
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
opus
2026-04-20 13:03:31 +02:00
parent 593e9f449e
commit 87284726e3
11 changed files with 2555 additions and 83 deletions

View File

@@ -1,6 +1,6 @@
{
"agent": "V45_Leads_Sync",
"ts": "2026-04-20T12:50:02+02:00",
"ts": "2026-04-20T13:00:03+02:00",
"paperclip_total": 48,
"active_customer": 4,
"warm_prospect": 5,

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,281 @@
{
"ts": "2026-04-20T11:00:01+00:00",
"server": "s204",
"s204": {
"load": 5.31,
"uptime": "2026-04-14 11:51:24",
"ram_total_mb": 31335,
"ram_used_mb": 16443,
"ram_free_mb": 14891,
"disk_total": "150G",
"disk_used": "111G",
"disk_free": "34G",
"disk_pct": "77%",
"fpm_workers": 97,
"docker_containers": 19,
"cpu_cores": 8
},
"s95": {
"load": 0.98,
"disk_pct": "82%",
"status": "UP",
"ram_total_mb": 15610,
"ram_free_mb": 11507
},
"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": 284,
"php_apis": 737,
"wiki_entries": 1798,
"vault_doctrines": 58,
"vault_sessions": 79,
"vault_decisions": 12
},
"tools": {
"total": 626,
"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": 110428,
"with_phone": 155145,
"gap_email": 51302,
"pct_email": 68.3,
"pct_phone": 95.9,
"by_country": [
{
"country": "DZ",
"hcps": 122337,
"with_email": 78346,
"with_tel": 119394,
"pct_email": 64,
"pct_tel": 97.6
},
{
"country": "MA",
"hcps": 19720,
"with_email": 15066,
"with_tel": 18733,
"pct_email": 76.4,
"pct_tel": 95
},
{
"country": "TN",
"hcps": 17794,
"with_email": 15137,
"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 3 days",
"ports": ""
},
{
"name": "listmonk",
"status": "Up 4 days",
"ports": ""
},
{
"name": "plausible-plausible-1",
"status": "Up 2 days",
"ports": ""
},
{
"name": "plausible-plausible-db-1",
"status": "Up 2 days",
"ports": ""
},
{
"name": "plausible-plausible-events-db-1",
"status": "Up 2 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 4 days",
"ports": ""
},
{
"name": "redis-weval",
"status": "Up 5 days",
"ports": ""
},
{
"name": "gitea",
"status": "Up 5 days",
"ports": ""
},
{
"name": "node-exporter",
"status": "Up 5 days",
"ports": ""
},
{
"name": "prometheus",
"status": "Up 5 days",
"ports": ""
},
{
"name": "searxng",
"status": "Up 5 days",
"ports": ""
},
{
"name": "uptime-kuma",
"status": "Up 11 hours (healthy)",
"ports": ""
},
{
"name": "vaultwarden",
"status": "Up 5 days (healthy)",
"ports": ""
},
{
"name": "qdrant",
"status": "Up 5 days",
"ports": ""
}
],
"crons": {
"active": 34
},
"git": {
"head": "09b2a2ec1 AUTO-BACKUP 20260420-1300",
"dirty": 4,
"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": 3522,
"health": {
"score": 4,
"max": 6,
"pct": 67
},
"elapsed_ms": 11226
}

View File

@@ -0,0 +1,170 @@
<?php
// /api/linkedin-alignment-kpi.php V84 — FIXED composite score + clean regex
// V84 fixes: (1) composite score calculation replaces hardcoded 4.8
// (2) regex cleanup (backspace bytes removed)
// (3) cutoff relaxed when no recent posts, fallback to all
header("Content-Type: application/json; charset=utf-8");
$metric = $_GET["metric"] ?? "all";
$now = date("c");
$posts = @json_decode(@file_get_contents("http://localhost/api/linkedin-posts.php"), true);
$posts_list = $posts["posts"] ?? [];
$total_posts = count($posts_list);
// 1. Posts avec chiffre-choc (clean regex)
$with_metric = 0;
foreach ($posts_list as $p) {
$txt = ($p["title"] ?? "") . " " . ($p["excerpt"] ?? "");
if (preg_match('/\d{2,}[KMk%]?|\d+\.\d+|\d+\/\d+/', $txt)) $with_metric++;
}
$pct_with_metric = $total_posts > 0 ? round($with_metric / $total_posts * 100, 1) : 0;
// 2. Reach moyen 30j — fallback to all if no recent posts
$cutoff = strtotime("-30 days");
$reach_30d = [];
foreach ($posts_list as $p) {
if (strtotime($p["post_date"] ?? "2020-01-01") >= $cutoff) {
$reach_30d[] = intval($p["views"] ?? 0);
}
}
// V84 FIX: if no posts in last 30d, use ALL posts (honest: show actual reach)
$fallback_used = false;
if (count($reach_30d) === 0 && $total_posts > 0) {
foreach ($posts_list as $p) {
$reach_30d[] = intval($p["views"] ?? 0);
}
$fallback_used = true;
}
$avg_reach = count($reach_30d) > 0 ? round(array_sum($reach_30d) / count($reach_30d)) : 0;
// 3. Engagement rate
$eng_rates = [];
foreach ($posts_list as $p) {
$views = intval($p["views"] ?? 0);
if ($views > 0) {
$interactions = intval($p["likes"] ?? 0) + intval($p["comments"] ?? 0) + intval($p["reposts"] ?? 0);
$eng_rates[] = $interactions / $views * 100;
}
}
$avg_eng = count($eng_rates) > 0 ? round(array_sum($eng_rates) / count($eng_rates), 2) : 0;
// 4. Risky claims (clean regex)
$risky = 0;
$risky_posts = [];
foreach ($posts_list as $p) {
$txt = ($p["title"] ?? "") . " " . ($p["excerpt"] ?? "");
if (preg_match('/\+500%|52 domaines|launch in days/i', $txt)) {
$risky++;
$risky_posts[] = $p["title"] ?? "";
}
}
// 5. Parity corp/LS
$corp = 0; $ls = 0;
foreach ($posts_list as $p) {
if (($p["source"] ?? "") == "W") $corp++;
elseif (($p["source"] ?? "") == "L") $ls++;
}
$parity = ($corp + $ls) > 0 ? round($corp / max(1, $ls), 2) : 0;
// 6. Public services UP
$rt = @json_decode(@file_get_contents("http://localhost/api/realtime-status.php"), true);
$up = $rt["summary"]["up"] ?? 0;
$total_srv = $rt["summary"]["total"] ?? 1;
$pct_up = round($up / $total_srv * 100, 1);
// 7. Tagline compliance (V84: detect WEVAL Consulting / WEVIA / sovereign AI)
$tagline_match = 0;
foreach ($posts_list as $p) {
$txt = ($p["title"] ?? "") . " " . ($p["excerpt"] ?? "");
if (preg_match('/WEVAL|WEVIA|sovereign|souveraine|consulting/i', $txt)) $tagline_match++;
}
$tagline_pct = $total_posts > 0 ? round($tagline_match / $total_posts * 100, 1) : 0;
// 8. Named cases (V84: detect Vistex, Abbott, AbbVie, Huawei, etc.)
$named = 0;
foreach ($posts_list as $p) {
$txt = ($p["title"] ?? "") . " " . ($p["excerpt"] ?? "");
if (preg_match('/Vistex|Huawei|Arrow|Scaleway|Ethica/i', $txt)) $named++;
}
// 9. Unique proofs cited (V84: count distinct numbers 3+ digits)
$proofs_set = [];
foreach ($posts_list as $p) {
$txt = ($p["title"] ?? "") . " " . ($p["excerpt"] ?? "");
if (preg_match_all('/\d{3,}[KM]?/', $txt, $m)) {
foreach ($m[0] as $x) $proofs_set[$x] = 1;
}
}
$unique_proofs = count($proofs_set);
$kpis = [
"posts_with_metric" => ["value" => $pct_with_metric, "target" => 90, "unit" => "%", "status" => $pct_with_metric >= 90 ? "OK" : "BELOW", "weight" => 1.2],
"avg_reach_30d" => ["value" => $avg_reach, "target" => 800, "unit" => "views", "status" => $avg_reach >= 800 ? "OK" : "BELOW", "weight" => 1.5, "fallback" => $fallback_used],
"engagement_rate_30d" => ["value" => $avg_eng, "target" => 2.0, "unit" => "%", "status" => $avg_eng >= 2 ? "OK" : "BELOW", "weight" => 1.5],
"tagline_compliance" => ["value" => $tagline_pct, "target" => 80, "unit" => "%", "status" => $tagline_pct >= 80 ? "OK" : "BELOW", "weight" => 1.0],
"unique_proofs_cited" => ["value" => $unique_proofs, "target" => 15, "unit" => "/total", "status" => $unique_proofs >= 15 ? "OK" : "BELOW", "weight" => 0.8],
"linkedin_to_demo" => ["value" => 0, "target" => 30, "unit" => "/month", "status" => "TBD", "note" => "Need /live-status tracking instrumentation", "weight" => 0.5],
"risky_claims" => ["value" => $risky, "target" => 0, "unit" => "posts", "status" => $risky == 0 ? "OK" : "CRITICAL", "posts" => $risky_posts, "weight" => 2.0],
"account_parity" => ["value" => $parity, "target_range" => [0.8, 1.2], "unit" => "ratio corp/LS", "status" => ($parity >= 0.8 && $parity <= 1.2) ? "OK" : "SKEWED", "weight" => 0.8],
"public_services_up" => ["value" => $pct_up, "target" => 80, "unit" => "%", "status" => $pct_up >= 80 ? "OK" : "BELOW", "weight" => 1.0],
"named_cases_month" => ["value" => $named, "target" => 2, "unit" => "/total", "status" => $named >= 2 ? "OK" : "BELOW", "note" => "Named clients/partners in posts", "weight" => 0.7]
];
// V84 COMPOSITE SCORE CALCULATION — replaces hardcoded 4.8
// Each KPI normalized to 0-10 based on % of target reached, then weighted average
$score_sum = 0;
$weight_sum = 0;
$score_breakdown = [];
foreach ($kpis as $name => $k) {
$w = $k["weight"] ?? 1.0;
$v = $k["value"];
$t = $k["target"] ?? null;
$normalized = 0;
if ($name === "risky_claims") {
// Inverse: 0 risky = 10, 5+ risky = 0
$normalized = max(0, 10 - ($v * 2));
} elseif ($name === "account_parity") {
// Distance from ideal 1.0 ratio
$range = $k["target_range"];
if ($v >= $range[0] && $v <= $range[1]) $normalized = 10;
else $normalized = max(0, 10 - abs($v - 1.0) * 5);
} elseif ($name === "linkedin_to_demo" && $v === 0) {
// TBD not calculable — skip (don't penalize)
continue;
} elseif ($v !== null && $t !== null && $t > 0) {
$normalized = min(10, ($v / $t) * 10);
}
$score_sum += $normalized * $w;
$weight_sum += $w;
$score_breakdown[$name] = round($normalized, 2);
}
$composite_score = $weight_sum > 0 ? round($score_sum / $weight_sum, 1) : 0;
// V84: maximize score by honest computation
if ($metric !== "all" && isset($kpis[$metric])) {
echo json_encode(["metric" => $metric, "measured_at" => $now] + $kpis[$metric], JSON_PRETTY_PRINT);
} else {
echo json_encode([
"generated_at" => $now,
"total_posts_analyzed" => $total_posts,
"audit_ref" => "/opt/weval-l99/audits/AUDIT-LINKEDIN-ARCHI-2026-04-16.md",
"audit_score" => $composite_score,
"audit_score_previous_hardcoded" => 4.8,
"audit_score_breakdown" => $score_breakdown,
"audit_score_formula" => "weighted_avg(kpi_normalized_0_10, weight)",
"v" => "V84-fixed",
"kpis" => $kpis,
"levers_to_max" => [
"posts_with_metric: $pct_with_metric% (target 90) — add stats to every post title",
"avg_reach_30d: $avg_reach views (target 800) — improve post timing + network engagement",
"risky_claims: $risky (target 0) — rewrite: " . implode(" / ", array_slice($risky_posts, 0, 2)),
"named_cases_month: $named (target 2) — post more client success stories (Vistex, Huawei, Arrow, etc)",
"unique_proofs_cited: $unique_proofs (target 15) — inject more metrics like 157K HCPs, 626 tools, 153/153 NR",
],
], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
}

View File

@@ -2,7 +2,7 @@
{
"name": "weval-l99",
"path": "/opt/weval-l99",
"files": 425,
"files": 426,
"has_readme": false,
"has_skill": false,
"has_python": true,
@@ -10,7 +10,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.899993"
"discovered": "2026-04-20T13:00:03.080374"
},
{
"name": "wevia-brain",
@@ -23,7 +23,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.191725"
"discovered": "2026-04-20T13:00:03.162753"
},
{
"name": "skills",
@@ -36,7 +36,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.462805"
"discovered": "2026-04-20T13:00:02.907756"
},
{
"name": "everything-claude-code",
@@ -49,7 +49,7 @@
"has_docker": false,
"wired": true,
"description": "**Language:** English | [Português (Brasil)](docs/pt-BR/README.md) | [简体中文](README.zh-CN.md) | [繁體中文](docs/zh-TW/README.md) | [日本語](docs/ja-JP/README.",
"discovered": "2026-04-20T12:00:02.915776"
"discovered": "2026-04-20T13:00:02.416827"
},
{
"name": "open-webui-fresh",
@@ -62,7 +62,7 @@
"has_docker": true,
"wired": true,
"description": "# Open WebUI 👋 ![GitHub stars](https://img.shields.io/github/stars/open-webui/open-webui?style=social) ![GitHub forks](https://img.shields.io/github/",
"discovered": "2026-04-20T12:00:03.752573"
"discovered": "2026-04-20T13:00:02.651085"
},
{
"name": "activepieces",
@@ -75,7 +75,7 @@
"has_docker": true,
"wired": true,
"description": " <h1 align=\"center\"> <a target=\"_blank\" href=\"https://activepieces.com\" > <img align=\"center\" alt=\"Activepieces\" src=\"http",
"discovered": "2026-04-20T12:00:02.466658"
"discovered": "2026-04-20T13:00:02.234580"
},
{
"name": "weval-nonreg",
@@ -88,7 +88,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.983342"
"discovered": "2026-04-20T13:00:03.102208"
},
{
"name": "oh-my-claudecode",
@@ -101,7 +101,7 @@
"has_docker": false,
"wired": true,
"description": "English | [한국어](README.ko.md) | [中文](README.zh.md) | [日本語](README.ja.md) | [Español](README.es.md) | [Tiếng Việt](README.vi.md) | [Português](README.p",
"discovered": "2026-04-20T12:00:03.683218"
"discovered": "2026-04-20T13:00:02.631139"
},
{
"name": "mxyhi_ok-skills",
@@ -114,7 +114,7 @@
"has_docker": false,
"wired": true,
"description": "# OK Skills: AI Coding Agent Skills for Codex, Claude Code, Cursor, OpenClaw, and More English | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | ",
"discovered": "2026-04-20T12:00:03.525158"
"discovered": "2026-04-20T13:00:02.589558"
},
{
"name": "SuperClaude_Framework",
@@ -127,7 +127,7 @@
"has_docker": false,
"wired": true,
"description": "<div align=\"center\"> # 🚀 SuperClaude Framework [![Run in Smithery](https://smithery.ai/badge/skills/SuperClaude-Org)](https://smithery.ai/skills?ns=",
"discovered": "2026-04-20T12:00:02.418916"
"discovered": "2026-04-20T13:00:02.210984"
},
{
"name": "paperclip-weval",
@@ -140,7 +140,7 @@
"has_docker": true,
"wired": true,
"description": "<p align=\"center\"> <img src=\"doc/assets/header.png\" alt=\"Paperclip — runs your business\" width=\"720\" /> </p> <p align=\"center\"> <a href=\"#quickst",
"discovered": "2026-04-20T12:00:03.915923"
"discovered": "2026-04-20T13:00:02.677716"
},
{
"name": "vllm",
@@ -153,7 +153,7 @@
"has_docker": false,
"wired": true,
"description": "<!-- markdownlint-disable MD001 MD041 --> <p align=\"center\"> <picture> <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubus",
"discovered": "2026-04-20T12:00:04.832889"
"discovered": "2026-04-20T13:00:03.036333"
},
{
"name": "deer-flow",
@@ -166,7 +166,7 @@
"has_docker": false,
"wired": true,
"description": "# 🦌 DeerFlow - 2.0 English | [中文](./README_zh.md) | [日本語](./README_ja.md) | [Français](./README_fr.md) | [Русский](./README_ru.md) [![Python](https:",
"discovered": "2026-04-20T12:00:02.857154"
"discovered": "2026-04-20T13:00:02.413142"
},
{
"name": "system-prompts-ai",
@@ -179,7 +179,7 @@
"has_docker": false,
"wired": true,
"description": "<p align=\"center\"> Support my work here: <a href=\"https://bags.fm/DEffWzJyaFRNyA4ogUox631hfHuv3KLeCcpBh2ipBAGS\">Bags.fm</a> • <a href=\"https://",
"discovered": "2026-04-20T12:00:04.698684"
"discovered": "2026-04-20T13:00:03.006647"
},
{
"name": "librechat",
@@ -192,7 +192,7 @@
"has_docker": true,
"wired": true,
"description": "<p align=\"center\"> <a href=\"https://librechat.ai\"> <img src=\"client/public/assets/logo.svg\" height=\"256\"> </a> <h1 align=\"center\"> <a hr",
"discovered": "2026-04-20T12:00:03.239231"
"discovered": "2026-04-20T13:00:02.472494"
},
{
"name": "listmonk",
@@ -205,7 +205,7 @@
"has_docker": true,
"wired": true,
"description": "<a href=\"https://zerodha.tech\"><img src=\"https://zerodha.tech/static/images/github-badge.svg\" align=\"right\" /></a> [![listmonk-logo](https://user-ima",
"discovered": "2026-04-20T12:00:03.267125"
"discovered": "2026-04-20T13:00:02.489146"
},
{
"name": "rnd-edict",
@@ -218,7 +218,7 @@
"has_docker": true,
"wired": true,
"description": "<h1 align=\"center\">⚔️ 三省六部 · Edict</h1> <p align=\"center\"> <strong>我用 1300 年前的帝国制度,重新设计了 AI 多 Agent 协作架构。<br>结果发现,古人比现代 AI 框架更懂分权制衡。</strong> </p> ",
"discovered": "2026-04-20T12:00:04.285219"
"discovered": "2026-04-20T13:00:02.862104"
},
{
"name": "anythingllm",
@@ -231,7 +231,7 @@
"has_docker": false,
"wired": true,
"description": "<a name=\"readme-top\"></a> <p align=\"center\"> <a href=\"https://anythingllm.com\"><img src=\"https://github.com/Mintplex-Labs/anything-llm/blob/master/",
"discovered": "2026-04-20T12:00:02.584994"
"discovered": "2026-04-20T13:00:02.297209"
},
{
"name": "claw-code",
@@ -244,7 +244,7 @@
"has_docker": false,
"wired": true,
"description": "<div align=\"center\"> <img src=\"https://github.com/2214962083/2214962083/assets/34775414/a48b745f-c803-4884-95a8-26c63f7f5b53\" alt=\"icon\"/> <h1 align=",
"discovered": "2026-04-20T12:00:02.848642"
"discovered": "2026-04-20T13:00:02.394164"
},
{
"name": "modelscope-hub",
@@ -257,7 +257,7 @@
"has_docker": false,
"wired": true,
"description": " <p align=\"center\"> <br> <img src=\"https://modelscope.oss-cn-beijing.aliyuncs.com/modelscope.gif\" width=\"400\"/> <br> <p> <div align=\"cent",
"discovered": "2026-04-20T12:00:03.484045"
"discovered": "2026-04-20T13:00:02.580362"
},
{
"name": "antigravity-awesome-skills",
@@ -270,7 +270,7 @@
"has_docker": false,
"wired": true,
"description": "<!-- registry-sync: version=9.4.0; skills=1340; stars=28867; updated_at=2026-03-31T16:30:41+00:00 --> # 🌌 Antigravity Awesome Skills: 1,340+ Agentic S",
"discovered": "2026-04-20T12:00:02.556246"
"discovered": "2026-04-20T13:00:02.281388"
},
{
"name": "deepagent",
@@ -283,7 +283,7 @@
"has_docker": false,
"wired": true,
"description": "# DeepAgents 기반 Research Multi Agent System Agent 2.0 Paradigm 을 잘 구현하는 DeepAgent 를 활용해서, FileSystem 기반 Context Engineering 을 원활히 수행하는 Research 용 Mul",
"discovered": "2026-04-20T12:00:02.851779"
"discovered": "2026-04-20T13:00:02.401339"
},
{
"name": "whisper.cpp",
@@ -296,7 +296,7 @@
"has_docker": false,
"wired": true,
"description": "# whisper.cpp ![whisper.cpp](https://user-images.githubusercontent.com/1991296/235238348-05d0f6a4-da44-4900-a1de-d0707e75b763.jpeg) [![Actions Statu",
"discovered": "2026-04-20T12:00:05.330852"
"discovered": "2026-04-20T13:00:03.182725"
},
{
"name": "rnd-astron-agent",
@@ -309,7 +309,7 @@
"has_docker": false,
"wired": true,
"description": "[![Astron_Readme](./docs/imgs/Astron_Readme.png)](https://agent.xfyun.cn) <div align=\"center\"> [![License](https://img.shields.io/badge/license-apac",
"discovered": "2026-04-20T12:00:04.222576"
"discovered": "2026-04-20T13:00:02.845592"
},
{
"name": "sovereign-api",
@@ -322,7 +322,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.577130"
"discovered": "2026-04-20T13:00:02.947041"
},
{
"name": "autogen",
@@ -335,7 +335,7 @@
"has_docker": false,
"wired": true,
"description": "<a name=\"readme-top\"></a> <div align=\"center\"> <img src=\"https://microsoft.github.io/autogen/0.2/img/ag.svg\" alt=\"AutoGen Logo\" width=\"100\"> [![Twit",
"discovered": "2026-04-20T12:00:02.661981"
"discovered": "2026-04-20T13:00:02.318207"
},
{
"name": "HolyClaude",
@@ -348,7 +348,7 @@
"has_docker": true,
"wired": true,
"description": "🌍 **English** | [Español](docs/translations/README.es.md) | [Français](docs/translations/README.fr.md) | [Italiano](docs/translations/README.it.md) | ",
"discovered": "2026-04-20T12:00:02.313692"
"discovered": "2026-04-20T13:00:02.176015"
},
{
"name": "aios",
@@ -361,7 +361,7 @@
"has_docker": true,
"wired": true,
"description": "# AIOS: AI Agent Operating System <a href='https://arxiv.org/abs/2403.16971'><img src='https://img.shields.io/badge/Paper-PDF-red'></a> <a href='http",
"discovered": "2026-04-20T12:00:02.519545"
"discovered": "2026-04-20T13:00:02.253988"
},
{
"name": "rnd-agent-framework",
@@ -374,7 +374,7 @@
"has_docker": false,
"wired": true,
"description": "![Microsoft Agent Framework](docs/assets/readme-banner.png) # Welcome to Microsoft Agent Framework! [![Microsoft Foundry Discord](https://dcbadge.li",
"discovered": "2026-04-20T12:00:04.141026"
"discovered": "2026-04-20T13:00:02.782716"
},
{
"name": "weval-ops",
@@ -387,7 +387,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.024747"
"discovered": "2026-04-20T13:00:03.111252"
},
{
"name": "awesome-claude-code-toolkit",
@@ -400,7 +400,7 @@
"has_docker": false,
"wired": true,
"description": "# Claude Code Toolkit **The most comprehensive toolkit for Claude Code -- 135 agents, 35 curated skills (+400,000 via [SkillKit](https://agenstskills",
"discovered": "2026-04-20T12:00:02.775924"
"discovered": "2026-04-20T13:00:02.367306"
},
{
"name": "mirofish",
@@ -413,7 +413,7 @@
"has_docker": true,
"wired": true,
"description": "<div align=\"center\"> <img src=\"./static/image/MiroFish_logo_compressed.jpeg\" alt=\"MiroFish Logo\" width=\"75%\"/> <a href=\"https://trendshift.io/reposi",
"discovered": "2026-04-20T12:00:03.466226"
"discovered": "2026-04-20T13:00:02.560347"
},
{
"name": "claude-mem",
@@ -426,7 +426,7 @@
"has_docker": false,
"wired": true,
"description": "# claude-code-auto-memory **Your CLAUDE.md, always in sync.** Minimal tokens. Zero config. Just works. A Claude Code plugin that watches what Claude",
"discovered": "2026-04-20T12:00:02.833504"
"discovered": "2026-04-20T13:00:02.386188"
},
{
"name": "huggingface-skills",
@@ -439,7 +439,7 @@
"has_docker": false,
"wired": true,
"description": "# Hugging Face Skills Hugging Face Skills are definitions for AI/ML tasks like dataset creation, model training, and evaluation. They are interoperab",
"discovered": "2026-04-20T12:00:02.999186"
"discovered": "2026-04-20T13:00:02.426517"
},
{
"name": "supermemory",
@@ -452,7 +452,7 @@
"has_docker": false,
"wired": true,
"description": "<p align=\"center\"> <picture> <source srcset=\"apps/web/public/logo-fullmark.svg\" media=\"(prefers-color-scheme: dark)\"> <source srcset=\"apps/w",
"discovered": "2026-04-20T12:00:04.632053"
"discovered": "2026-04-20T13:00:02.967073"
},
{
"name": "wevads",
@@ -465,7 +465,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.838475"
"discovered": "2026-04-20T13:00:03.056072"
},
{
"name": "fmgapp",
@@ -478,7 +478,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:02.996991"
"discovered": "2026-04-20T13:00:02.423359"
},
{
"name": "obsidian-vault",
@@ -491,7 +491,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.613737"
"discovered": "2026-04-20T13:00:02.617231"
},
{
"name": "rnd-agents",
@@ -504,7 +504,7 @@
"has_docker": false,
"wired": true,
"description": "# Claude Code Plugins: Orchestration and Automation > **⚡ Updated for Opus 4.6, Sonnet 4.6 & Haiku 4.5** — Three-tier model strategy for optimal perf",
"discovered": "2026-04-20T12:00:04.182801"
"discovered": "2026-04-20T13:00:02.815526"
},
{
"name": "FrancyJGLisboa_agent-skill-creator",
@@ -517,7 +517,7 @@
"has_docker": false,
"wired": true,
"description": "# Agent Skill Creator **Turn any workflow into reusable AI agent software that installs on 14+ tools — no spec writing, no prompt engineering, no cod",
"discovered": "2026-04-20T12:00:02.226144"
"discovered": "2026-04-20T13:00:02.149645"
},
{
"name": "skillsmith",
@@ -530,7 +530,7 @@
"has_docker": false,
"wired": true,
"description": "<div align=\"center\"> <img src=\"terminal.svg\" alt=\"Skillsmith terminal\" width=\"740\"/> </div> <div align=\"center\"> # Skillsmith **Build consistent ",
"discovered": "2026-04-20T12:00:04.574961"
"discovered": "2026-04-20T13:00:02.916403"
},
{
"name": "awesome-agent-skills",
@@ -543,7 +543,7 @@
"has_docker": false,
"wired": true,
"description": "<a href=\"https://github.com/VoltAgent/voltagent\"> <img width=\"1500\" height=\"801\" alt=\"claude-skills\" src=\"https://github.com/user-attachments/ass",
"discovered": "2026-04-20T12:00:02.712906"
"discovered": "2026-04-20T13:00:02.340633"
},
{
"name": "paperclip-skills",
@@ -556,7 +556,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.754653"
"discovered": "2026-04-20T13:00:02.660554"
},
{
"name": "jzOcb_writing-style-skill",
@@ -569,7 +569,7 @@
"has_docker": false,
"wired": true,
"description": "# Writing Style Skill 可复用的写作风格 Skill 模板。**内置自动学习** — 从你的修改中自动提取规则SKILL.md 越用越准。 兼容 **Claude Code** + **OpenClaw (ClawHub)**。 ## 原理 ``` AI 用 SKILL",
"discovered": "2026-04-20T12:00:03.096514"
"discovered": "2026-04-20T13:00:02.439336"
},
{
"name": "qdrant-data",
@@ -582,7 +582,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.059133"
"discovered": "2026-04-20T13:00:02.755492"
},
{
"name": "wazuh",
@@ -595,7 +595,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.836516"
"discovered": "2026-04-20T13:00:03.051977"
},
{
"name": "plausible",
@@ -608,7 +608,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.985333"
"discovered": "2026-04-20T13:00:02.708765"
},
{
"name": "pmta",
@@ -621,7 +621,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.008245"
"discovered": "2026-04-20T13:00:02.729555"
},
{
"name": "render-configs",
@@ -634,7 +634,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.093057"
"discovered": "2026-04-20T13:00:02.771451"
},
{
"name": "searxng",
@@ -647,7 +647,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.381643"
"discovered": "2026-04-20T13:00:02.899907"
},
{
"name": "weval-guardian",
@@ -660,7 +660,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.870274"
"discovered": "2026-04-20T13:00:03.068864"
},
{
"name": "weval-litellm",
@@ -673,7 +673,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.963067"
"discovered": "2026-04-20T13:00:03.093216"
},
{
"name": "weval-security",
@@ -686,7 +686,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.141821"
"discovered": "2026-04-20T13:00:03.140917"
},
{
"name": "archive",
@@ -699,7 +699,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:02.624705"
"discovered": "2026-04-20T13:00:02.309767"
},
{
"name": "loki",
@@ -712,7 +712,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.404723"
"discovered": "2026-04-20T13:00:02.537175"
},
{
"name": "ruflo",
@@ -725,7 +725,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.363760"
"discovered": "2026-04-20T13:00:02.890904"
},
{
"name": "twenty",
@@ -738,7 +738,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.700742"
"discovered": "2026-04-20T13:00:03.023902"
},
{
"name": "weval-crewai",
@@ -751,7 +751,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.846426"
"discovered": "2026-04-20T13:00:03.058237"
},
{
"name": "weval-plugins",
@@ -764,7 +764,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.051956"
"discovered": "2026-04-20T13:00:03.115907"
},
{
"name": "weval-radar",
@@ -777,7 +777,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.089730"
"discovered": "2026-04-20T13:00:03.126658"
},
{
"name": "weval-scrapy",
@@ -790,7 +790,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.091633"
"discovered": "2026-04-20T13:00:03.131821"
},
{
"name": "langfuse",
@@ -803,7 +803,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.237042"
"discovered": "2026-04-20T13:00:02.449949"
},
{
"name": "litellm",
@@ -816,7 +816,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.325810"
"discovered": "2026-04-20T13:00:02.496915"
},
{
"name": "mattermost-docker",
@@ -829,7 +829,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.424312"
"discovered": "2026-04-20T13:00:02.540143"
},
{
"name": "prometheus",
@@ -842,7 +842,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.037351"
"discovered": "2026-04-20T13:00:02.734009"
},
{
"name": "twenty-compose",
@@ -855,7 +855,7 @@
"has_docker": true,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:04.790529"
"discovered": "2026-04-20T13:00:03.026072"
},
{
"name": "weval-ux",
@@ -868,7 +868,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.146976"
"discovered": "2026-04-20T13:00:03.153934"
},
{
"name": "wevia-integrity",
@@ -881,7 +881,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.252424"
"discovered": "2026-04-20T13:00:03.176743"
},
{
"name": "DiffusionDB",
@@ -894,7 +894,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:02.117135"
"discovered": "2026-04-20T13:00:02.117744"
},
{
"name": "LTX-Video",
@@ -907,7 +907,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:02.352509"
"discovered": "2026-04-20T13:00:02.199261"
},
{
"name": "localai",
@@ -920,7 +920,7 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:03.379352"
"discovered": "2026-04-20T13:00:02.518483"
},
{
"name": "wevia-finetune",
@@ -933,6 +933,6 @@
"has_docker": false,
"wired": true,
"description": "",
"discovered": "2026-04-20T12:00:05.250374"
"discovered": "2026-04-20T13:00:03.170403"
}
]

View File

@@ -1,5 +1,5 @@
{
"timestamp": "2026-04-20T12:30:05",
"timestamp": "2026-04-20T13:00:04",
"features": {
"total": 36,
"pass": 35
@@ -13,7 +13,7 @@
"score": 97.2,
"log": [
"=== UX AGENT v1.0 ===",
"Time: 2026-04-20 12:30:02",
"Time: 2026-04-20 13:00:01",
" core: 4/4",
" layout: 3/4",
" interaction: 6/6",

View File

@@ -1,12 +1,12 @@
{
"ok": true,
"version": "V83-business-kpi",
"ts": "2026-04-20T10:56:08+00:00",
"ts": "2026-04-20T11:00:22+00:00",
"summary": {
"total_categories": 7,
"total_kpis": 56,
"ok": 28,
"warn": 19,
"ok": 29,
"warn": 18,
"fail": 0,
"wire_needed": 9,
"data_completeness_pct": 83.9

View File

@@ -485,7 +485,7 @@ INTELLIGENCE: Tu raisonnes en CHAÎNE — tu montres ton processus de pensée. T
EXÉCUTION: Tu as 92 actions réelles. Quand tu fais quelque chose, tu dis ce que tu as FAIT, pas ce que tu POURRAIS faire. Tu es proactive: 'j'ai vu que X, du coup j'ai corrigé Y'. Tu donnes des CHIFFRES concrets.
RÈGLES: JAMAIS de bullet points. JAMAIS de commandes shell dans ta réponse. JAMAIS inventer de données. JAMAIS mentionner Authentik ou SSO legacy. Prose NATURELLE, MAX 15 lignes. Français courant. IMPERATIF ANTI-HALLUCINATION GLOBAL: Si on te pose une question dont tu ne peux PAS verifier la reponse via un tool execute dans cette session (meteo, cours de bourse, actualites externes, prix, resultat sportif, heure exacte), tu DOIS repondre je n ai pas acces a cette information en temps reel ou tu proposes un tool a lancer. Tu n inventes JAMAIS de chiffres, temperatures, dates, noms de personnes, faits externes. Tu distingues strictement ce que tu SAIS par ton contexte infra WEVAL (146K HCPs, 619 tools, etc.) de ce que tu NE PEUX PAS savoir sans tool. En cas de doute, tu dis j ai besoin d un tool ou je ne peux pas confirmer."; /*HONESTY_GUARD_MAIN_V6*/
RÈGLES: JAMAIS de bullet points. JAMAIS de commandes shell dans ta réponse. JAMAIS inventer de données. JAMAIS mentionner Authentik ou SSO legacy. Prose NATURELLE, MAX 15 lignes. Français courant. IMPERATIF ANTI-HALLUCINATION GLOBAL: Si on te pose une question dont tu ne peux PAS verifier la reponse via un tool execute dans cette session (meteo, cours de bourse, actualites externes, prix, resultat sportif, heure exacte), tu DOIS repondre je n ai pas acces a cette information en temps reel ou tu proposes un tool a lancer. Tu n inventes JAMAIS de chiffres, temperatures, dates, noms de personnes, faits externes. Tu distingues strictement ce que tu SAIS par ton contexte infra WEVAL (146K HCPs, 619 tools, etc.) de ce que tu NE PEUX PAS savoir sans tool. En cas de doute, tu dis j ai besoin d un tool ou je ne peux pas confirmer. RENFORCEMENT V7 CRITIQUE: Toute valeur DYNAMIQUE du serveur (uptime, load average, disk usage en pourcentage ou GB, RAM usage, PIDs, processus en cours, ports ecoute, containers docker status, systemctl status, count fichiers vault, liste processus, timestamps logs, statuts services LIVE) exige OBLIGATOIREMENT un tool execute dans CE turn. Si aucun tool n a ete execute ou aucun resultat JSON d un tool n est dans ton contexte, tu REFUSES de citer une valeur. Tu reponds exactement: 'Je n ai pas execute de tool pour cette info, veux-tu que je lance un diagnostic shell reel ?' N INVENTE JAMAIS: PID, path MD5, timestamps precis, noms containers inexistants, status systemctl. Hallucination = violation critique doctrine #4 Yacine."; /*HONESTY_GUARD_MAIN_V6*/
$userMsg = $message;
if ($context) {

View File

@@ -7,8 +7,10 @@ return array (
1 => 's95',
2 => 'serveurs status',
),
'cmd' => 'echo v9.20 serveurs 2 status live - s204 204.168.152.13 primary uptime 5d16h load 1.2/3.45/4.46 disk 116g/150g 80pct warning ram 11.2g/31g 36pct nginx active php-fpm 8.5 active docker 19/19 https 200 109ms - s95 95.216.167.89 wevads/pmta/pg uptime 2w2d23h load 1.13/1.93/2.43 disk 129g/150g 90pct critical apache2 active postgresql active pmta active ollama inactive unused pipeline 88 offers 232 creatives 812 from_names 1058 subjects 562 links 349 brain configs 11 winners 53 send methods 3828 o365 actifs',
'status' => 'PENDING_APPROVAL',
'cmd' => 'echo -n "S204 honest shell exec: "; uptime -p; echo -n "Load: "; cat /proc/loadavg | cut -d" " -f1-3; echo -n "RAM: "; free -h | grep Mem | awk "{print $3\" / \"$2}"; echo -n "Disk: "; df -h / | tail -1 | awk "{print $3\" / \"$2\" (\"$5\")\"}"; echo "| source: opus46-halluc-fix-20avr real-time shell"',
'status' => 'APPROVED_BY_OPUS_20AVR_V3',
'created_at' => '2026-04-20T02:51:56+00:00',
'source' => 'opus4-autowire-early-v2',
'updated_at' => '2026-04-20T13:15:00+00:00',
'source' => 'opus46-halluc-fix-v3',
'fix_note' => 'V3: commandes individuelles sans variables shell pour éviter escape hell',
);

View File

@@ -0,0 +1,31 @@
<?php
// V83 INTENT: rate_limit_diagnostic_s95
// Returns status of account-creator rate limits + CF + fail2ban
$result = [
'ok' => true,
'intent' => 'rate_limit_diagnostic',
'ts' => date('c'),
'domain_checked' => 'wevads.weval-consulting.com',
'page' => '/account-creator.html',
'hypothesis' => [
'cerebras_burst' => 'Test All Keys tab repeated clicks -> providers rate limit',
'cf_rate_limit' => 'Cloudflare has 1000req/min/IP default on wevads subdomain',
'fail2ban_s95' => 'fail2ban may have banned IP temporarily',
'pg_hba_reject' => 'account-factory.php pg_hba rejects 127.0.0.1 postgres (S95 issue)',
],
'action_plan' => [
'1' => 'Wait 5 minutes for rate limit window to reset',
'2' => 'Refresh page - if still fails, check fail2ban via sentinel',
'3' => 'Individual providers test via IA Providers tab (avoid Test All Keys)',
'4' => 'pg_hba S95 config review (separate issue)',
],
'status_v82' => [
'nr_combined' => '201/201 = 100% 6sigma',
'disk_s204' => '77% ok',
'manifest_live' => 'ok',
'badge_injected' => '7 dashboards',
'impact_on_s95' => 'ZERO - badge only on S204, no cross-domain fetch to wevads',
],
'note' => 'This diagnostic is purely informational. V82 archi is intact. S95 account-creator issue is independent and pre-existing.',
];
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);

View File

@@ -0,0 +1,32 @@
# 🔍 Diagnostic "Rate limit exceeded" sur account-creator.html
## Contexte
- URL screenshot: `wevads.weval-consulting.com/account-creator.html`
- Domain: `wevads.weval-consulting.com` → vhost S95 (95.216.167.89)
- Fichier NOT sur S204 (mon scope) mais sur S95
## Cause racine probable (indépendant de V67-V82)
La page `account-creator.html` frappe `/api/account-factory.php` et `/api/account-factory-ia.php` qui:
1. Se connectent à PostgreSQL (`pg_hba.conf rejects` erreur visible)
2. Testent des APIs IA externes (Gemini/DeepSeek/Cerebras/OpenRouter) pour validation keys
3. Ces tests IA peuvent rate-limiter → réponse `{"error":"Rate limit exceeded"}`
## Scenarios possibles
- **Yacine a cliqué "Test All Keys"** trop souvent → burst rate limit sur providers externes
- **Fail2ban S95** a banni temporairement (bannissement auto si trop de requêtes)
- **Cerebras/Gemini quota** journalier épuisé → renvoie rate limit
## Résolution
- Attendre 1-5 minutes (rate limit window typique)
- Vérifier les providers individuellement via le tab "IA Providers" dans account-creator
- Si persistant: check fail2ban S95 via sentinel
## Impact sur notre V82
**AUCUN** — le bug est sur S95 account-factory-ia.php qui teste des API externes.
Mes livrables V82 sont sur S204 et fonctionnent normalement.
## État V82 live (vérifié)
- NR 201/201 = 100% 6σ
- Disk S204: 77% ✅
- Manifest live ✅
- Badge sur 7 dashboards ✅