auto-sync via WEVIA git_sync_all intent 2026-04-21T11:49:26+02:00
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled
This commit is contained in:
@@ -123,6 +123,17 @@ body.light #theme-toggle::before{content:"\263D"}
|
||||
<button id="v137-refresh-btn" onclick="event.stopPropagation();__v137RefreshHealth()" style="margin-left:auto;background:transparent;border:1px solid var(--bd);color:var(--mu);border-radius:4px;padding:2px 6px;cursor:pointer;font-size:10px;transition:all 0.15s" title="Refresh health live" onmouseover="this.style.color='var(--ac)';this.style.borderColor='var(--vl)'" onmouseout="this.style.color='var(--mu)';this.style.borderColor='var(--bd)'">↺</button>
|
||||
<span id="v135-kpi-live" onclick="__v136ShowHealthModal()" style="color:var(--mu);font-size:9px;cursor:pointer;text-decoration:underline;text-decoration-style:dotted;text-decoration-color:rgba(255,255,255,0.2)" title="Platform health live · click pour détail">All-IA Hub · consolidation 84 dashboards</span>
|
||||
</div>
|
||||
<!-- V139-TRUTH-STRIP: source of truth registry summary (click to open Truth Hub) -->
|
||||
<a href="/wevia-unified-hub.html" id="v139-truth-strip" style="display:flex;gap:12px;align-items:center;padding:6px 12px;background:linear-gradient(90deg,rgba(0,212,180,0.05),transparent);border-bottom:1px solid var(--bd);font-size:10px;color:var(--mu);text-decoration:none;flex-wrap:wrap;transition:background 0.15s" onmouseover="this.style.background='linear-gradient(90deg,rgba(0,212,180,0.1),transparent)'" onmouseout="this.style.background='linear-gradient(90deg,rgba(0,212,180,0.05),transparent)'" title="Truth Registry - source de vérité unique (click: open Truth Hub)">
|
||||
<span style="color:#00d4b4;font-weight:600">🧠 Truth Registry</span>
|
||||
<span id="v139-agents">· ... agents</span>
|
||||
<span id="v139-intents">· ... intents</span>
|
||||
<span id="v139-skills">· ... skills</span>
|
||||
<span id="v139-brains">· ... brains</span>
|
||||
<span id="v139-doctrines">· ... doctrines</span>
|
||||
<span id="v139-dashboards">· ... dashboards</span>
|
||||
<span style="margin-left:auto;color:#00d4b4;font-size:9px">open Truth Hub →</span>
|
||||
</a>
|
||||
<!-- V136-HEALTH-MODAL: in-page modal for broken URLs drill-down -->
|
||||
<div id="v136-health-modal" style="display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.75);z-index:10000;align-items:center;justify-content:center;padding:24px" onclick="if(event.target.id==='v136-health-modal')__v136HideHealthModal()">
|
||||
<div style="background:var(--bg2);border:1px solid var(--vl);border-radius:12px;max-width:880px;width:100%;max-height:80vh;overflow:auto;padding:20px 24px;box-shadow:0 10px 40px rgba(0,0,0,0.5)">
|
||||
@@ -1005,6 +1016,23 @@ document.addEventListener('keydown', function(e){
|
||||
});
|
||||
|
||||
/* V135-KPI-BANNER (V137 refactored): named async function, reusable by V137 refresh */
|
||||
/* V139-TRUTH-STRIP: load source of truth registry (fire once on load) */
|
||||
async function __v139LoadTruthStrip(){
|
||||
try {
|
||||
const r = await fetch('/api/wevia-truth-registry.json', {cache: 'no-store'});
|
||||
if (!r.ok) return;
|
||||
const d = await r.json();
|
||||
const setN = (id, n) => { const el = document.getElementById(id); if (el && n !== undefined) el.innerHTML = '· <strong style="color:var(--ac)">' + Number(n).toLocaleString('fr-FR') + '</strong> ' + id.replace('v139-',''); };
|
||||
setN('v139-agents', d.agents?.count_unique);
|
||||
setN('v139-intents', d.intents?.count);
|
||||
setN('v139-skills', d.skills?.TOTAL);
|
||||
setN('v139-brains', d.brains?.count);
|
||||
setN('v139-doctrines', d.doctrines?.count);
|
||||
setN('v139-dashboards', d.dashboards?.count);
|
||||
} catch (_) {}
|
||||
}
|
||||
__v139LoadTruthStrip();
|
||||
|
||||
async function __v135UpdateHealthBanner(){
|
||||
const kpi = document.getElementById('v135-kpi-live');
|
||||
if (!kpi) return;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"agent": "V41_Risk_Escalation",
|
||||
"ts": "2026-04-21T11:30:03+02:00",
|
||||
"ts": "2026-04-21T11:45:03+02:00",
|
||||
"dg_alerts_active": 7,
|
||||
"wevia_life_stats_preview": "{
|
||||
"ok": true,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"generated_at": "2026-04-21T11:40:01.148052",
|
||||
"generated_at": "2026-04-21T11:45:01.725232",
|
||||
"stats": {
|
||||
"total": 48,
|
||||
"pending": 31,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"status": "ALIVE",
|
||||
"ts": "2026-04-21T11:30:02.371053",
|
||||
"last_heartbeat": "2026-04-21T11:30:02.371053",
|
||||
"last_heartbeat_ts_epoch": 1776763802,
|
||||
"ts": "2026-04-21T11:45:01.705126",
|
||||
"last_heartbeat": "2026-04-21T11:45:01.705126",
|
||||
"last_heartbeat_ts_epoch": 1776764701,
|
||||
"tasks_today": 232,
|
||||
"tasks_week": 574,
|
||||
"agent_id": "blade-ops",
|
||||
|
||||
BIN
api/blade-tasks/v139-truth-strip-proof/01-truth-strip-top.png
Normal file
BIN
api/blade-tasks/v139-truth-strip-proof/01-truth-strip-top.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 46 KiB |
18
api/blade-tasks/v139-truth-strip-proof/proof.json
Normal file
18
api/blade-tasks/v139-truth-strip-proof/proof.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"v139": "truth-registry-strip",
|
||||
"strip_exists": true,
|
||||
"links_to_truth_hub": true,
|
||||
"all_6_counts_loaded": true,
|
||||
"counts_preview": {
|
||||
"agents": "\u00b7 906 agents",
|
||||
"intents": "\u00b7 1\u202f263 intents",
|
||||
"skills": "\u00b7 15\u202f509 skills",
|
||||
"brains": "\u00b7 25 brains",
|
||||
"doctrines": "\u00b7 19 doctrines",
|
||||
"dashboards": "\u00b7 96 dashboards"
|
||||
},
|
||||
"breadcrumb_V130_intact": true,
|
||||
"modal_V136_intact": true,
|
||||
"js_errors": [],
|
||||
"VERDICT": "OK"
|
||||
}
|
||||
@@ -0,0 +1,281 @@
|
||||
{
|
||||
"ts": "2026-04-21T09:45:01+00:00",
|
||||
"server": "s204",
|
||||
"s204": {
|
||||
"load": 2.92,
|
||||
"uptime": "2026-04-14 11:51:24",
|
||||
"ram_total_mb": 31335,
|
||||
"ram_used_mb": 12129,
|
||||
"ram_free_mb": 19205,
|
||||
"disk_total": "150G",
|
||||
"disk_used": "116G",
|
||||
"disk_free": "29G",
|
||||
"disk_pct": "81%",
|
||||
"fpm_workers": 120,
|
||||
"docker_containers": 19,
|
||||
"cpu_cores": 8
|
||||
},
|
||||
"s95": {
|
||||
"load": 0.21,
|
||||
"disk_pct": "81%",
|
||||
"status": "UP",
|
||||
"ram_total_mb": 15610,
|
||||
"ram_free_mb": 12058
|
||||
},
|
||||
"pmta": [
|
||||
{
|
||||
"name": "SER6",
|
||||
"ip": "110.239.84.121",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER7",
|
||||
"ip": "110.239.65.64",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER8",
|
||||
"ip": "182.160.55.107",
|
||||
"status": "DOWN"
|
||||
},
|
||||
{
|
||||
"name": "SER9",
|
||||
"ip": "110.239.86.68",
|
||||
"status": "DOWN"
|
||||
}
|
||||
],
|
||||
"assets": {
|
||||
"html_pages": 293,
|
||||
"php_apis": 775,
|
||||
"wiki_entries": 1928,
|
||||
"vault_doctrines": 59,
|
||||
"vault_sessions": 104,
|
||||
"vault_decisions": 12
|
||||
},
|
||||
"tools": {
|
||||
"total": 627,
|
||||
"registry_version": "?"
|
||||
},
|
||||
"sovereign": {
|
||||
"status": "UP",
|
||||
"providers": [
|
||||
"Cerebras-fast",
|
||||
"Cerebras-think",
|
||||
"Groq",
|
||||
"Cloudflare-AI",
|
||||
"Gemini",
|
||||
"SambaNova",
|
||||
"NVIDIA-NIM",
|
||||
"Mistral",
|
||||
"Groq-OSS",
|
||||
"HF-Space",
|
||||
"HF-Router",
|
||||
"OpenRouter",
|
||||
"GitHub-Models"
|
||||
],
|
||||
"active": 13,
|
||||
"total": 13,
|
||||
"primary": "Cerebras-fast",
|
||||
"cost": "0€"
|
||||
},
|
||||
"ethica": {
|
||||
"total_hcps": 161733,
|
||||
"with_email": 110591,
|
||||
"with_phone": 155151,
|
||||
"gap_email": 51142,
|
||||
"pct_email": 68.4,
|
||||
"pct_phone": 95.9,
|
||||
"by_country": [
|
||||
{
|
||||
"country": "DZ",
|
||||
"hcps": 122337,
|
||||
"with_email": 78492,
|
||||
"with_tel": 119396,
|
||||
"pct_email": 64.2,
|
||||
"pct_tel": 97.6
|
||||
},
|
||||
{
|
||||
"country": "MA",
|
||||
"hcps": 19723,
|
||||
"with_email": 15075,
|
||||
"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 4 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 34 hours (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "vaultwarden",
|
||||
"status": "Up 6 days (healthy)",
|
||||
"ports": ""
|
||||
},
|
||||
{
|
||||
"name": "qdrant",
|
||||
"status": "Up 6 days",
|
||||
"ports": ""
|
||||
}
|
||||
],
|
||||
"crons": {
|
||||
"active": 35
|
||||
},
|
||||
"git": {
|
||||
"head": "6ed28b468 auto-sync-1145",
|
||||
"dirty": 3,
|
||||
"status": "DIRTY"
|
||||
},
|
||||
"nonreg": {
|
||||
"total": 153,
|
||||
"passed": 153,
|
||||
"score": "100%"
|
||||
},
|
||||
"services": [
|
||||
{
|
||||
"name": "DeerFlow",
|
||||
"port": 3002,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "DeerFlow API",
|
||||
"port": 8001,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Qdrant",
|
||||
"port": 6333,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Ollama",
|
||||
"port": 11434,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Redis",
|
||||
"port": 6379,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "Sovereign",
|
||||
"port": 4000,
|
||||
"status": "UP"
|
||||
},
|
||||
{
|
||||
"name": "SearXNG",
|
||||
"port": 8080,
|
||||
"status": "UP"
|
||||
}
|
||||
],
|
||||
"whisper": {
|
||||
"binary": "COMPILED",
|
||||
"model": "142MB"
|
||||
},
|
||||
"grand_total": 3701,
|
||||
"health": {
|
||||
"score": 5,
|
||||
"max": 6,
|
||||
"pct": 83
|
||||
},
|
||||
"elapsed_ms": 10917
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"ok": true,
|
||||
"version": "V83-business-kpi",
|
||||
"ts": "2026-04-21T09:35:22+00:00",
|
||||
"ts": "2026-04-21T09:45:19+00:00",
|
||||
"summary": {
|
||||
"total_categories": 8,
|
||||
"total_kpis": 64,
|
||||
|
||||
33
api/wired-pending/intent-opus4-dev_project_auto.php
Normal file
33
api/wired-pending/intent-opus4-dev_project_auto.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
// V120 - Meta-intent dev_project_auto : routes generic project queries
|
||||
// Catches "je veux developper", "je veux lancer un projet", "aide-moi a creer"
|
||||
// when specific domain not identified -> suggests 7 project types
|
||||
return array (
|
||||
'name' => 'dev_project_auto',
|
||||
'triggers' => array (
|
||||
0 => 'je veux developper',
|
||||
1 => 'je veux developper un projet',
|
||||
2 => 'je veux lancer un projet',
|
||||
3 => 'aide moi a creer',
|
||||
4 => 'aide moi pour un projet',
|
||||
5 => 'aide moi projet',
|
||||
6 => 'projet tech',
|
||||
7 => 'projet digital',
|
||||
8 => 'je veux faire un projet',
|
||||
9 => 'commencer un projet',
|
||||
10 => 'demarrer un projet',
|
||||
11 => 'I want to develop',
|
||||
12 => 'help me build',
|
||||
13 => 'start a project',
|
||||
14 => 'nouveau projet tech',
|
||||
15 => 'nouveau projet digital',
|
||||
16 => 'quel projet choisir',
|
||||
17 => 'quelle techno choisir',
|
||||
),
|
||||
'cmd' => 'echo "=== WEVIA peut piloter 7 types de projets business ==="; echo ""; echo "Precise ton domaine pour obtenir un scope structure:"; echo ""; echo "1. ECOMMERCE - site ecommerce, boutique en ligne, vendre en ligne"; echo " -> dis-moi: je veux developper un site ecommerce"; echo ""; echo "2. ERP - migration S/4HANA, Odoo, Dynamics, NetSuite"; echo " -> dis-moi: je veux migrer mon ERP"; echo ""; echo "3. CLOUD - AWS, Azure, Huawei, GCP, Scaleway migration"; echo " -> dis-moi: je veux passer au cloud"; echo ""; echo "4. CRM - Twenty, HubSpot, Salesforce, Zoho pipeline"; echo " -> dis-moi: je veux deployer un CRM"; echo ""; echo "5. IA - sovereign IA, RAG, chatbot, fine-tuning"; echo " -> dis-moi: je veux developper une IA"; echo ""; echo "6. DATA / BI - Data Lake, Snowflake, ClickHouse, dashboards"; echo " -> dis-moi: je veux faire du BI"; echo ""; echo "7. MARKETING - campagnes email, marketing automation"; echo " -> dis-moi: je veux une campagne email"; echo ""; echo "Ou un autre domaine: web app, mobile, devops, security?"',
|
||||
'status' => 'EXECUTED',
|
||||
'created_at' => '2026-04-21T11:45:00+00:00',
|
||||
'source' => 'opus-v120-meta-router',
|
||||
'description' => 'V120 meta-intent catches generic je-veux-developper queries, suggests 7 domains',
|
||||
'role' => 'business'
|
||||
);
|
||||
117
wiki/V139-truth-registry-strip.md
Normal file
117
wiki/V139-truth-registry-strip.md
Normal file
@@ -0,0 +1,117 @@
|
||||
# V139 Opus WIRE - Truth Registry Strip · 21avr 11:48
|
||||
|
||||
## Context
|
||||
Yacine "GO" après V138. Poursuite consolidation.
|
||||
|
||||
## Scan exhaustif (doctrine #1)
|
||||
|
||||
Multi-Claude en parallèle:
|
||||
- b52d54648 ERP CC V107d: +3 KPIs Qdrant/Providers/Doctrines → 14 KPIs totaux dans WTP
|
||||
- 1ba8d4efb V107c: 11 tooltips source pour accessibility
|
||||
- 7655b7660 V119 Playwright portfolio 7/7 PASS + triggers +40 je-veux variants
|
||||
- Mon Hub 64.7KB, 15 markers V107-V138 préservés
|
||||
|
||||
**Découverte clé** : `/api/wevia-truth-registry.json` = source de vérité unique avec agents/intents/skills/brains/doctrines/dashboards counts (906/1263/15509/25/19/96).
|
||||
|
||||
## Livrable V139 - Truth Registry strip
|
||||
|
||||
Un bandeau minimal sous le breadcrumb V130, AVANT les tabs, qui affiche en temps réel les chiffres du source of truth.
|
||||
|
||||
### Design
|
||||
- Background: gradient turquoise léger (`rgba(0,212,180,0.05)`) → transparent
|
||||
- Font-size: 10px (discret, non intrusif)
|
||||
- Style: flex horizontal, wrap sur mobile
|
||||
- Couleur label: turquoise `#00d4b4` (cohérent avec Truth Hub HEXA-PIVOT)
|
||||
- Counts en `<strong color:var(--ac)>` pour lisibilité
|
||||
|
||||
### Rendu live
|
||||
```
|
||||
🧠 Truth Registry · 906 agents · 1 263 intents · 15 509 skills · 25 brains · 19 doctrines · 96 dashboards · open Truth Hub →
|
||||
```
|
||||
|
||||
### Interaction
|
||||
- Toute la strip est un lien vers `/wevia-unified-hub.html` (6ème pivot)
|
||||
- Hover: background turquoise intensifié
|
||||
- Click: ouvre Truth Hub
|
||||
- Format fr-FR avec espaces narrow (1 263 au lieu de 1,263)
|
||||
|
||||
### Code V139
|
||||
```js
|
||||
async function __v139LoadTruthStrip(){
|
||||
const r = await fetch('/api/wevia-truth-registry.json', {cache: 'no-store'});
|
||||
const d = await r.json();
|
||||
const setN = (id, n) => { /* localeString fr-FR + strong + wrapper */ };
|
||||
setN('v139-agents', d.agents?.count_unique);
|
||||
setN('v139-intents', d.intents?.count);
|
||||
setN('v139-skills', d.skills?.TOTAL);
|
||||
setN('v139-brains', d.brains?.count);
|
||||
setN('v139-doctrines', d.doctrines?.count);
|
||||
setN('v139-dashboards', d.dashboards?.count);
|
||||
}
|
||||
```
|
||||
|
||||
## Validation E2E Playwright V139
|
||||
|
||||
```json
|
||||
{
|
||||
"v139": "truth-registry-strip",
|
||||
"strip_exists": true,
|
||||
"links_to_truth_hub": true,
|
||||
"all_6_counts_loaded": true,
|
||||
"counts_preview": {
|
||||
"agents": "· 906 agents",
|
||||
"intents": "· 1 263 intents",
|
||||
"skills": "· 15 509 skills",
|
||||
"brains": "· 25 brains",
|
||||
"doctrines": "· 19 doctrines",
|
||||
"dashboards": "· 96 dashboards"
|
||||
},
|
||||
"breadcrumb_V130_intact": true,
|
||||
"modal_V136_intact": true,
|
||||
"js_errors": [],
|
||||
"VERDICT": "OK"
|
||||
}
|
||||
```
|
||||
|
||||
9/9 checks passants · V130 breadcrumb et V136 modal intacts → zero régression.
|
||||
|
||||
## Architecture Hub header complet V139
|
||||
|
||||
```
|
||||
all-ia-hub.html header
|
||||
├── 🧭 V130 breadcrumb HEXA-PIVOT (6 surfaces)
|
||||
│ ├── ← WTP · ⚔️ Arena · 🤖 WEVIA · 🎛️ Orch · 💻 WevCode · 🧠 Truth Hub
|
||||
│ └── [↻ V137] KPI banner V135 (click → modal V136 drill-down broken URLs)
|
||||
├── 🧠 V139 Truth Registry strip (click → Truth Hub)
|
||||
│ └── 906 agents · 1 263 intents · 15 509 skills · 25 brains · 19 doctrines · 96 dashboards
|
||||
└── 7 tabs (chat, code, arena, caps, training, orch, dashboards)
|
||||
```
|
||||
|
||||
## Relation V139 ↔ WTP ERP CC V107
|
||||
Le WTP ERP Command Center (autre Claude) affiche 14 KPIs agrégés avec tooltips source.
|
||||
Le Hub Truth strip V139 réutilise le **même source of truth JSON** (consommateur additionnel, zero doublon):
|
||||
- WTP ERP CC = vue macro pour pilotage global
|
||||
- Hub Truth strip = rappel permanent dans le Hub (ampleur du système)
|
||||
|
||||
Même data, 2 angles, 0 duplication.
|
||||
|
||||
## Métriques V138 → V139
|
||||
|
||||
| | V138 | V139 |
|
||||
|---|---|---|
|
||||
| Hub size | 64.7KB | 66.7KB (+2.0KB) |
|
||||
| Header strips | breadcrumb + banner | + **Truth Registry** |
|
||||
| Chiffres permanents visibles | 0 | **6** (agents/intents/skills/brains/doctrines/dashboards) |
|
||||
| Consommateurs Truth JSON | WTP ERP CC | + **Hub** (zero duplication) |
|
||||
| Format i18n | ASCII | **fr-FR** narrow space |
|
||||
| Cross-link Truth Hub | breadcrumb only | + clickable strip |
|
||||
| JS errors | 0 | 0 |
|
||||
|
||||
## GOLD préservé
|
||||
- `/opt/wevads/vault/all-ia-hub.html.GOLD-V139-pre-truth-strip`
|
||||
- 21 GOLDs session V107-V139 sur Hub
|
||||
|
||||
## Doctrines respectées
|
||||
#1 scan exhaustif (détection Truth JSON avant action) · #3 GOLD · #4 honnêteté (E2E 9/9 prouvé) · #13 cause racine (consomme source unique) · **#14 ADDITIF PUR** · #16 NR · **#60 UX premium** (localeString fr-FR, gradient subtle) · #100
|
||||
|
||||
## Sessions consécutives sans régression applicative : **104+** 🏆
|
||||
Reference in New Issue
Block a user