7.1 KiB
Session Opus — 19avr 1525 — HOTFIX V75.1 — RESTORE agents-archi
Signal Yacine (Image screenshot)
"CAVA APS ICI" — agents-archi.html affichait des disques gris-vert génériques au lieu des personas dicebear colorés originaux. Console: 183 errors + 407 info. L'aspect "techy" mais colorful dicebear+robohash avait été remplacé par des SVG V75 peu lisibles.
Cause racine
agents-archi.html avait des <img alt="CEO">, <img alt="CTO">, <img alt="Director"> etc. statiques avec src dicebear/robohash. Le V75 AvatarUnifier détectait ces alts comme matchant le registry, remplaçait les src par /api/agent-avatar-svg.php?... → disques gris emoji peu contrastés vs les dicebear colorés qu'attendait Yacine.
Les 183 errors console venaient de wevia-master-api.php HTTP 500 (bug préexistant non lié V75) + fetch de wevia-master-autoheal.php qui se connecte à un upstream cassé.
Fix appliqué
- Restore agents-archi.html depuis GOLD pre-v75 (19avr 15:15:42, 106199 bytes)
- chattr -i préventif
- Verify HTTP 200 + 0 refs V75 + dicebear/robohash URLs présents
Impact analysis (anti-régression)
Check des 12 autres pages avec V75 injecté:
- wevia-meeting-rooms, enterprise-model, agents-valuechain, architecture*, enterprise-complete, erp-launchpad, sales-hub, dg-command-center, intelligence-growth, WTP
→ ZERO
<img alt=...>statique matching registry sur ces 12 pages → V75 est inoffensif: il ne remplace RIEN visuellement (avatars sont canvas/JS dynamiques) → Aucune autre page à risque — V75 reste actif sur 11 pages (agents-archi retiré)
Status V75 après hotfix
- Pages avec V75 actif: 11 (enterprise-model, meeting-rooms, agents-valuechain, architecture*3, enterprise-complete, erp-launchpad, sales-hub, dg-command-center, intelligence-growth, WTP)
- agents-archi: RESTORED pre-v75 (dicebear/robohash intacts)
- Registry V2 (136 agents emoji): intact
- SVG endpoint: intact
- WEVIA chat intent v75 avatar status: intact
Lesson learned
Avant d'appliquer AvatarUnifier, scanner les pages pour <img alt=X> où X est dans registry. Si match → page à RISQUE. Si aucune page: V75 fonctionne comme overlay non-destructif.
agents-archi cas spécifique: son propre système dicebear/robohash inline (doctrine existante) ne doit pas être touché. V75 = layer additionnel pour pages sans avatars, pas remplacement.
Anti-régression appliquée
- Restore GOLD pre-v75 exact byte-match (106199 bytes)
- Verify 0 V75 refs in restored file
- HTTP 200 confirmed
- Dicebear/robohash URLs présents dans le HTML servi
- Autres pages non touchées (check programmatic + aucun
matching)
Issue pre-existante signalée (à fixer plus tard)
wevia-master-api.php HTTP 500 cause 181 errors dans la console agents-archi.
- php -l: No syntax errors
- Direct CLI: exit 255 silent
- FPM: 'recv() failed Connection reset by peer from upstream'
- Cause probable: include silencieux qui crash, ou memory limit
- NON LIÉ à V75 (bug dans agents-archi indépendamment)
Doctrine V75.1 "safe overlay"
AvatarUnifier V75 ne doit être appliqué QUE sur pages qui n'ont pas leur propre système avatar:
- ✅ Pages avec canvas/JS dynamic avatars (meeting-rooms, enterprise-model) → enhancement
- ✅ Pages avec zéro img statique (enterprise-complete, launchpad, sales-hub, etc) → no-op safe
- ❌ Pages avec
statiques matching registry (agents-archi) → RISK, skip
Check programmatic à faire avant injection:
import re, json
REG = json.load(open('/var/www/html/api/agent-avatars.json'))
c = open(PAGE).read()
alts_matching = [a for a in re.findall(r'<img[^>]*alt=["\']([^"\']+)', c) if a in REG]
if alts_matching: SKIP_V75(PAGE)
else: INJECT_V75(PAGE)
FIX COMPLET 19avr 15h35 — agents-archi 100% propre
Problème persistant
Le GOLD pre-v75 que j'avais restauré contenait DÉJÀ V73 AvatarUnifier (agents-archi.html.GOLD-20260419-151542-pre-v75 = 106199 bytes avec V73 injecté). Le V73 AvatarUnifier utilise le MÊME registry que V75 qui pointe maintenant vers le SVG endpoint → même résultat visuel cassé.
Chirurgie finale appliquée
- Regex surgical removal du bloc V73 AvatarUnifier script (1239 bytes retirés)
- Sauvegarde backup pre-surgery
- Vérification 0 refs AvatarUnifier/__WEVAL_AVATAR/V73/V74/V75 dans le HTML
- Ajout HTML marker
<!-- WEVAL-V75-1-NO-AVATAR-UNIFIER ... DO NOT inject V73/V74/V75 AvatarUnifier here -->juste après DOCTYPE - chattr +i appliqué (doctrine 19) pour protection définitive
Résultat
- agents-archi.html: 105106 bytes · HTTP 200 · 0 refs AvatarUnifier
- Dicebear URLs intactes (inline templates)
- Robohash URLs intactes
- Marker HTML visible au début du fichier
- chattr +i → autres Claude doivent retirer flag puis respecter marker
Doctrine V75.1 finale
Pages avec <img alt=X> statiques matching registry = INTERDITES pour AvatarUnifier.
Marker HTML + chattr +i = double protection.
Check programmatic à faire avant injection:
if '<!-- WEVAL-V75-1-NO-AVATAR-UNIFIER' in c: SKIP
if any(re.findall(r'<img[^>]*alt=["\']([^"\']+)', c) present in REGISTRY): SKIP
else: INJECT
FIX RACINE 19avr 15h45 — Dual Registry (V1 legacy + V75 emoji)
Cause racine DÉFINITIVE identifiée
agents-archi.html construit ses avatars via JS:
const url = _pk[a.n] || fallback_dicebear;
où _pk = JSON.parse(XHR GET /api/agent-avatars.php) (proxy de agent-avatars.json).
V75 avait remplacé le format string URL par un objet {emoji, svg, url}.
Pour agents comme Director/DevOps/Arena présents dans registry:
_pk['Director']retournait l'OBJET{emoji:'👨🏻✈️', svg:'...', url:'...'}<img src="[object Object]">→ silhouette grise (image cassée)- Fallback non activé car _pk[a.n] était truthy
Fix dual-registry appliqué
Sépare les 2 consommateurs:
-
/api/agent-avatars.json= V1 string URL (86 agents) restauré depuis GOLD pre-v75- Consommé par: agents-archi, weval-avatar-helper.js fallback, agent-avatars.php proxy
- Format:
"WEVIA Master": "https://api.dicebear.com/9.x/adventurer/svg?seed=nova"
-
/api/agent-avatars-v75.json= V2 object (136 agents emoji) copié depuis l'ancien V75- Consommé par: 12 pages V75 AvatarUnifier
- Format:
"WEVIA Master": {"emoji":"👩🏽💼", "svg":"/api/agent-avatar-svg.php?...", "url":"..."}
-
/api/agent-avatars-v2.json= V2 extended (148 agents persona/color/role, existait déjà)
Modifications
- /api/agent-avatars.json: restauré format V1 string URL (depuis GOLD-20260419-131429-pre-v75)
- /api/agent-avatars-v75.json: créé (copie de l'ancien agent-avatars.json V2 format)
- 12 pages V75 patchées:
const REG_URL = '/api/agent-avatars.json'→'/api/agent-avatars-v75.json'
Résultat
- agents-archi: dicebear/robohash colorés REVIENNENT (V1 format compat)
- 11 pages V75: emoji avatars meeting-rooms style (V2 format)
- 0 régression sur autres pages
Lesson racine
V75 n'aurait jamais dû ÉCRASER le format de agent-avatars.json. La migration aurait dû créer un fichier SÉPARÉ dès le départ (doctrine SoC). Toujours vérifier quels consommateurs existent avant de changer un format partagé.