V96 wiki session doc - zero fake pendingloader tracability
Some checks failed
WEVAL NonReg / nonreg (push) Has been cancelled

This commit is contained in:
Opus V96
2026-04-21 00:05:19 +02:00
parent 85e7dcd2d6
commit c31b8c5bc8

View File

@@ -0,0 +1,93 @@
# V96 - Zero Fake PendingLoader - 2026-04-21
## Objectif
Éliminer cannibalisation Resolver par stubs fake data dans PendingLoader.
Restaurer autonomie WEVIA Master pour requêtes KPI V83.
## Root Cause (Doctrine 0)
PendingLoader (ligne 48 wevia-autonomous.php) interceptait messages user
AVANT Resolver (ligne 271). Des stubs intent-opus4-*.php avec triggers
courts (4-6 chars) cannibalisaient les vraies questions KPI et retournaient
placeholder `{agent,slug,status:registered}` au lieu de data V83 réelle.
Exemple cas: `engagement kpi dau mau active users`
- AVANT: PendingLoader/engagement → `{"agent":"Engagement","status":"registered"}` (FAKE)
- APRÈS: Resolver/v83_engagement_kpi → DAU=51/50, MAU=129/100, 8 KPIs (REAL)
## Audit 1984 stubs wired-pending/
- Total: 1984 intent-opus4-*.php
- Status EXECUTED (active): 1903
- Status DISABLED (skip): 1 (pre-V96)
- cmd=echo statique: 1456
- cmd=echo fake JSON: 599
### 95 stubs à risque cannibalisation (trigger 4-6 chars)
Classification:
- 16 FAKES (cmd=echo static placeholder JSON) → DISABLE
- 79 REALS (cmd=description utile retourne info) → KEEP
## Actions V96 (zero suppression, zero régression)
### 1. Batch disable 16 stubs fake
Fichier: `/tmp/disable-fakes.py` (Python idempotent)
GOLD vault: `/opt/wevads/vault/V96-fakes-disabled/` (17 backups avec timestamp)
Stubs désactivés (status 'EXECUTED' → 'DISABLED'):
novnc, stripe, crewai, ghgrab, s151pg, cpq_ai, act_qa, ohmycc,
hf_trl, gemini, kbsync, tracer, ecc_go, s89, adscmd, 6sigma
+ engagement (déjà V95)
= **17 stubs fake désactivés total**
### 2. Enrichir wevia-pending-loader.php skip logic
Fichier: `/var/www/html/api/wevia-pending-loader.php` ligne 41-43
GOLD: `/opt/wevads/vault/wevia-pending-loader.php.GOLD-V96-*`
**Avant:**
```php
if (in_array($info['status'], $_skip_statuses, true)) continue;
```
**Après (V96):**
```php
$_status_val = $info['status'] ?? '';
if (in_array($_status_val, $_skip_statuses, true) || strpos($_status_val, 'DISABLED') === 0) continue;
```
Permet variants DISABLED_FAKE_*, DISABLED_TEST_*, DISABLED_V96_* etc.
## Tests live validation (doctrine 14 test-driven)
| Test | AVANT V96 | APRÈS V96 | Engine |
|------|-----------|-----------|--------|
| engagement kpi dau mau | fake registered | DAU=51 MAU=129 (8 KPIs) | Resolver/v83_engagement_kpi ✅ |
| stripe revenue mrr | fake registered | MRR=2500€ ARR=30K€ | PendingLoader/kpi_mrr_arr ✅ |
| gemini | fake registered | Diagnostic auto | fallback ✅ |
| 6sigma | fake registered | Pages:292 Wiki:1861 NR 153/153 | Resolver/l99 ✅ |
| DISABLED_TEST_V96 novnc | (legacy skip fail) | Routing intelligent | skip OK ✅ |
## Métriques post-V96
- L99 NonReg: **153/153 PASS | 0 FAIL | 100% | 88.0s** (TS 20260421_000136)
- V83 Business KPI: 100% completeness (32 ok / 24 warn / 0 fail / 7 cats / 56 KPIs)
- Commit: `46f336bb6`
- Push gitea: ✅ (b1bf1c19b → 46f336bb6)
- Push github: ✅ (origin/main synced)
## Doctrines appliquées
- Doctrine 0: Root cause (pas patch cosmétique)
- Doctrine 1: GOLD snapshot avant toutes modifs
- Doctrine 2: Zero écrasement (enrichissement additif skip logic)
- Doctrine 3: Zero suppression (status change only)
- Doctrine 4: Zero régression (L99 153/153 pre/post)
- Doctrine 14: Test-driven live (4 tests KPI avant/après)
- Doctrine 16: Script idempotent Python (peut relancer safe)
- Doctrine 60: UX premium (WEVIA Master retourne vraies données)
- Doctrine 95: Traçabilité wiki + vault
- Doctrine 100: Commit release atomique
## Next V97 pending
- [ ] Activer 356 tools read-only registry avec exec:true (ratio 0.2% → 56.8%)
- [ ] Playwright avec auth cookie persistence pour tests E2E authentiques
- [ ] Auditer 9 orphans TREE.all_pages (pages sans backlink)
- [ ] Monitor load S204 (spike 16.14 - FPM max_children saturable)
- [ ] S95 PMTA CSV → S204 bridge (Emails 30d=0 baseline)
- [ ] NPS campaign pharma cloud (tables prêtes, sondage pas envoyé)