auto-sync via WEVIA git_sync_all intent 2026-04-21T13:27:41+02:00
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T13:20:01.528566",
|
||||
"generated_at": "2026-04-21T13:25:02.141011",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 31,
|
||||
|
||||
@@ -0,0 +1,281 @@
|
||||
{
|
||||
"ts": "2026-04-21T11:25:02+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 2.16,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 12080,
|
||||
"ram_free_mb": 19254,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "117G",
|
||||
"disk_free": "27G",
|
||||
"disk_pct": "82%",
|
||||
"fpm_workers": 140,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.19,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 12023
|
||||
},
|
||||
"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": 294,
|
||||
"php_apis": 776,
|
||||
"wiki_entries": 1988,
|
||||
"vault_doctrines": 61,
|
||||
"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": 161733,
|
||||
"with_email": 110597,
|
||||
"with_phone": 155151,
|
||||
"gap_email": 51136,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78497,
|
||||
"with_tel": 119396,
|
||||
"pct_email": 64.2,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19723,
|
||||
"with_email": 15076,
|
||||
"with_tel": 18737,
|
||||
"pct_email": 76.4,
|
||||
"pct_tel": 95
|
||||
},
|
||||
{
|
||||
"country": "TN",
|
||||
"hcps": 17794,
|
||||
"with_email": 15145,
|
||||
"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 5 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 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mm-db-1",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "mattermost-docker-mattermost-1",
|
||||
"status": "Up 5 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty",
|
||||
"status": "Up 5 days",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "twenty-redis",
|
||||
"status": "Up 5 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 35 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 6 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "a28c0be0f auto-sync-1325",
|
||||
"dirty": 1,
|
||||
"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": 3765,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 10883
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T11:24:55+00:00",
|
||||
"ts": "2026-04-21T11:27:26+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
BIN
api/v_opus_links_test_20260421-132656/00_start_wepredict.png
Normal file
|
After Width: | Height: | Size: 301 KiB |
|
After Width: | Height: | Size: 322 KiB |
BIN
api/v_opus_links_test_20260421-132656/02__all-ia-hub.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
api/v_opus_links_test_20260421-132656/03__wevia-arena.png
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
api/v_opus_links_test_20260421-132656/04__wevia-master.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
api/v_opus_links_test_20260421-132656/05__wevia-orchestrator.png
Normal file
|
After Width: | Height: | Size: 198 KiB |
BIN
api/v_opus_links_test_20260421-132656/06__wevia-unified-hub.png
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
api/v_opus_links_test_20260421-132656/07__logout.png
Normal file
|
After Width: | Height: | Size: 276 KiB |
126
api/v_opus_links_test_20260421-132656/report.json
Normal file
@@ -0,0 +1,126 @@
|
||||
{
|
||||
"ts": "20260421-132656",
|
||||
"out_dir": "/var/www/html/api/v_opus_links_test_20260421-132656",
|
||||
"internal_found": 7,
|
||||
"tested": 7,
|
||||
"results": [
|
||||
{
|
||||
"idx": 1,
|
||||
"href": "/weval-technology-platform.html",
|
||||
"text": "\u2190 WTP",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/weval-technology-platform.html",
|
||||
"redirected": false,
|
||||
"redirect_to_login": false,
|
||||
"title": "WEVAL Technology Platform \u2014 All-in-One ERP Portal",
|
||||
"body_kb": 14.8,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "01__weval-technology-platform.png",
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"idx": 2,
|
||||
"href": "/all-ia-hub.html",
|
||||
"text": "All-IA",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/all-ia-hub.html",
|
||||
"redirected": false,
|
||||
"redirect_to_login": false,
|
||||
"title": "All-IA Hub \u2014 Remplacement Claude Code + Opus (Souverain)",
|
||||
"body_kb": 0.9,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "02__all-ia-hub.png",
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"idx": 3,
|
||||
"href": "/wevia-arena.html",
|
||||
"text": "Arena",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/wevia-arena.html",
|
||||
"redirected": false,
|
||||
"redirect_to_login": false,
|
||||
"title": "WEVAL Consulting \u2014 Enterprise Digital Transformation | ERP \u00b7",
|
||||
"body_kb": 1.2,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "03__wevia-arena.png",
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"idx": 4,
|
||||
"href": "/wevia-master.html",
|
||||
"text": "WEVIA Master",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/wevia-master.html",
|
||||
"redirected": false,
|
||||
"redirect_to_login": false,
|
||||
"title": "WEVIA Master AI",
|
||||
"body_kb": 0.9,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "04__wevia-master.png",
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"idx": 5,
|
||||
"href": "/wevia-orchestrator.html",
|
||||
"text": "Orchestrator",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/wevia-orchestrator.html",
|
||||
"redirected": false,
|
||||
"redirect_to_login": false,
|
||||
"title": "WEVIA \u2014 Orchestrator GODMODE",
|
||||
"body_kb": 34.7,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "05__wevia-orchestrator.png",
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"idx": 6,
|
||||
"href": "/wevia-unified-hub.html",
|
||||
"text": "Truth Hub",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/wevia-unified-hub.html",
|
||||
"redirected": false,
|
||||
"redirect_to_login": false,
|
||||
"title": "WEVIA Unified Hub v2 \u00b7 tout d\u00e9dupliqu\u00e9",
|
||||
"body_kb": 1.9,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "06__wevia-unified-hub.png",
|
||||
"ok": true
|
||||
},
|
||||
{
|
||||
"idx": 7,
|
||||
"href": "/logout",
|
||||
"text": "Logout",
|
||||
"http": 200,
|
||||
"final_url": "https://weval-consulting.com/",
|
||||
"redirected": true,
|
||||
"redirect_to_login": false,
|
||||
"title": "WEVAL Consulting \u2014 Enterprise Digital Transformation | ERP \u00b7",
|
||||
"body_kb": 11.3,
|
||||
"fallback_homepage": false,
|
||||
"screenshot": "07__logout.png",
|
||||
"ok": true
|
||||
}
|
||||
],
|
||||
"videos": [
|
||||
"10522166858932eb7bd4d3b9c83c09d0.webm",
|
||||
"11b0edad14d6f6c9ed2dfcfd946790ca.webm",
|
||||
"298748e35f70838845e589d6924888a7.webm",
|
||||
"30813ca589ccd91ca5ca7189b92e8fae.webm",
|
||||
"443e61cc3de9e8a8ed629abfdf29980d.webm",
|
||||
"7d12ff15a8aad7bdfc10e200b5bd32e3.webm",
|
||||
"817f1abec050fbe5bbce78369daa8a0e.webm",
|
||||
"88be4f64ec4e3f5488caef91f143e719.webm"
|
||||
],
|
||||
"screenshots": [
|
||||
"00_start_wepredict.png",
|
||||
"01__weval-technology-platform.png",
|
||||
"02__all-ia-hub.png",
|
||||
"03__wevia-arena.png",
|
||||
"04__wevia-master.png",
|
||||
"05__wevia-orchestrator.png",
|
||||
"06__wevia-unified-hub.png",
|
||||
"07__logout.png"
|
||||
]
|
||||
}
|
||||
65
api/wired-pending/intent-opus4-read_truth_registry.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
* intent-opus4-read_truth_registry.php
|
||||
* AMBRE session · 2026-04-21
|
||||
* Ferme gap autonomie : remplace LLM fallback qui hallucinait "Yacine Khaled"
|
||||
* quand on demandait /api/wevia-truth-registry.json.
|
||||
* Doctrine #4 ZERO FAKE DATA — retourne les scalaires du vrai registry.
|
||||
* Invocation : /api/opus-arch-generic.php?tool=read_truth_registry
|
||||
*/
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$candidates = [
|
||||
'/var/www/html/api/wevia-truth-registry.json',
|
||||
'/var/www/html/api/truth-registry.json',
|
||||
'/opt/wevads/vault/wevia-truth-registry.json',
|
||||
];
|
||||
$path = null;
|
||||
foreach ($candidates as $c) {
|
||||
if (file_exists($c)) { $path = $c; break; }
|
||||
}
|
||||
if (!$path) {
|
||||
echo json_encode(['ok'=>false, 'error'=>'truth registry not found', 'tried'=>$candidates]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$raw = file_get_contents($path);
|
||||
$data = json_decode($raw, true);
|
||||
if (!is_array($data)) {
|
||||
echo json_encode(['ok'=>false, 'error'=>'invalid JSON', 'path'=>$path]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Extract scalars (flat values) + count nested arrays
|
||||
$scalars = [];
|
||||
$nested = [];
|
||||
foreach ($data as $k => $v) {
|
||||
if (is_array($v) || is_object($v)) {
|
||||
$nested[$k] = is_array($v) ? count($v) : 'object';
|
||||
} else {
|
||||
$scalars[$k] = $v;
|
||||
}
|
||||
}
|
||||
|
||||
// Pick the 10 most relevant headline metrics if they exist
|
||||
$headlines = [];
|
||||
foreach ([
|
||||
'agents_count','agents_total','intents_count','tools_count','providers_count',
|
||||
'skills_total','brains_count','doctrines_count','dashboards_count',
|
||||
'nonreg_score','l99_score','autonomy_level','autonomy_score',
|
||||
'ethica_hcps_total','pages_count','apis_count','crons_count','built_at','last_update'
|
||||
] as $key) {
|
||||
if (isset($data[$key]) && !is_array($data[$key])) {
|
||||
$headlines[$key] = $data[$key];
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'ok' => true,
|
||||
'path' => $path,
|
||||
'bytes' => strlen($raw),
|
||||
'headlines' => $headlines,
|
||||
'scalars' => $scalars,
|
||||
'nested' => $nested,
|
||||
'source' => 'intent-opus4-read_truth_registry.php · ambre · doctrine#4 honest · no hallucination',
|
||||
], JSON_PRETTY_PRINT);
|
||||
63
api/wired-pending/intent-opus4-scan_file.php
Normal file
@@ -0,0 +1,63 @@
|
||||
<?php
|
||||
/**
|
||||
* intent-opus4-scan_file.php
|
||||
* AMBRE session · 2026-04-21
|
||||
* Ferme gap autonomie : remplace LLM fallback hallucination quand on demande
|
||||
* l'état d'un fichier (wtp_state, wepredict_state, etc.).
|
||||
* Doctrine #4 ZERO FAKE DATA — retourne uniquement les faits stat+md5+version.
|
||||
* Invocation : /api/opus-arch-generic.php?tool=scan_file&path=/var/www/html/xxx.html
|
||||
*/
|
||||
header('Content-Type: application/json');
|
||||
|
||||
$target = $_GET['path'] ?? '/var/www/html/wepredict.html';
|
||||
|
||||
// Whitelist sécurité : ne lit que sous /var/www/html ou /opt/wevads
|
||||
$real = realpath($target);
|
||||
$allowed = ['/var/www/html/', '/opt/wevads/', '/opt/weval-l99/'];
|
||||
$ok_root = false;
|
||||
foreach ($allowed as $root) {
|
||||
if ($real && strpos($real, $root) === 0) { $ok_root = true; break; }
|
||||
}
|
||||
if (!$ok_root) {
|
||||
echo json_encode(['ok'=>false, 'error'=>'path outside allowed roots', 'path'=>$target]);
|
||||
exit;
|
||||
}
|
||||
if (!file_exists($real)) {
|
||||
echo json_encode(['ok'=>false, 'error'=>'file not found', 'path'=>$target]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$stat = stat($real);
|
||||
$md5 = md5_file($real);
|
||||
$content = file_get_contents($real);
|
||||
|
||||
// Version extraction patterns (HTML, PHP, JS)
|
||||
$version = 'unknown';
|
||||
foreach ([
|
||||
'/data-version="([^"]+)"/',
|
||||
'/"wevia-version"\s+content="([^"]+)"/',
|
||||
'/@version\s+([^\s\*]+)/',
|
||||
'/VERSION\s*=\s*[\'"]([^\'"]+)/',
|
||||
] as $pat) {
|
||||
if (preg_match($pat, $content, $m)) { $version = $m[1]; break; }
|
||||
}
|
||||
|
||||
// Detect live URL if under /var/www/html
|
||||
$url = null;
|
||||
if (strpos($real, '/var/www/html/') === 0) {
|
||||
$rel = substr($real, strlen('/var/www/html/'));
|
||||
$url = 'https://weval-consulting.com/' . $rel;
|
||||
}
|
||||
|
||||
echo json_encode([
|
||||
'ok' => true,
|
||||
'path' => $real,
|
||||
'url' => $url,
|
||||
'size' => $stat['size'],
|
||||
'size_kb' => round($stat['size'] / 1024, 1),
|
||||
'mtime' => date('c', $stat['mtime']),
|
||||
'md5' => $md5,
|
||||
'version' => $version,
|
||||
'lines' => substr_count($content, "\n"),
|
||||
'source' => 'intent-opus4-scan_file.php · ambre · doctrine#4 honest',
|
||||
], JSON_PRETTY_PRINT);
|
||||
@@ -857,17 +857,17 @@ footer.eco .truth-link:hover{ background: rgba(34,211,238,0.08); border-color: r
|
||||
<body>
|
||||
|
||||
<nav class="xnav" aria-label="Pivot ecosystem">
|
||||
<a href="/wtp.html">← WTP</a>
|
||||
<a href="/weval-technology-platform.html">← WTP</a>
|
||||
<span class="sep">/</span>
|
||||
<a href="/all-ia.html">All-IA</a>
|
||||
<a href="/all-ia-hub.html">All-IA</a>
|
||||
<span class="sep">/</span>
|
||||
<a href="/arena.html">Arena</a>
|
||||
<a href="/wevia-arena.html">Arena</a>
|
||||
<span class="sep">/</span>
|
||||
<a href="/wevia-master.html">WEVIA Master</a>
|
||||
<span class="sep">/</span>
|
||||
<a href="/orchestrator.html">Orchestrator</a>
|
||||
<a href="/wevia-orchestrator.html">Orchestrator</a>
|
||||
<span class="sep">/</span>
|
||||
<a href="/truth-hub.html">Truth Hub</a>
|
||||
<a href="/wevia-unified-hub.html">Truth Hub</a>
|
||||
<span class="sep">·</span>
|
||||
<a href="#" class="current">WePredict Cockpit</a>
|
||||
</nav>
|
||||
@@ -1037,7 +1037,7 @@ footer.eco .truth-link:hover{ background: rgba(34,211,238,0.08); border-color: r
|
||||
<span class="item"><span class="k">HCP</span> 161 733</span>
|
||||
<span class="item"><span class="k">Doctrines</span> 19</span>
|
||||
</div>
|
||||
<a class="ticker-cta" href="/truth-hub.html">Truth Registry →</a>
|
||||
<a class="ticker-cta" href="/wevia-unified-hub.html">Truth Registry →</a>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -1239,7 +1239,7 @@ footer.eco .truth-link:hover{ background: rgba(34,211,238,0.08); border-color: r
|
||||
<span class="sep">·</span>
|
||||
<span><span class="v">Agents</span> 906</span>
|
||||
</div>
|
||||
<a class="truth-link" href="/truth-hub.html">Truth Registry →</a>
|
||||
<a class="truth-link" href="/wevia-unified-hub.html">Truth Registry →</a>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
|
||||