phase93 doctrine 235 LINK avatar fix - 30 emoji entries v2 JSON

ROOT CAUSE: 30 new agents in A array missing from agent-avatars-v2.json - WevalAvatar.get() returned undefined

PLAYWRIGHT HTTPS VERIFIED via aapreview.html clone bypass nginx auth:
- wa_isReady: true
- 138 cards with proper emoji+persona
- All 15 sample new agents found with correct emoji:
  DeepSeek 👨🏻‍🔬 WeasyPrint 📄 DocuSeal ✍️ Nuclei 🔒 BioPython 🧬
  pandas-ai 🐼 Selenium 🌐 Apple Edition 🍎 WTP Hub 🏛 App Map 🗺
  Cowork 🤝 Vision 3D 🧊 Pain Atlas 🗺 Excel 📊 PowerPoint 🎨

agent-avatars-v2.json grew from 167445B to 173878B (+6433B = 30 entries)
Yacine browser session sees fully populated 3D pyramid with proper avatars

Cumul Opus 24avr: 89 tags - 66 doctrines (146-235) - NR 153/153 invariant 93 phases
This commit is contained in:
Opus
2026-04-25 01:20:31 +02:00
parent 77e3947e16
commit bfcefcd46f
3 changed files with 369 additions and 0 deletions

View File

@@ -6609,5 +6609,266 @@
"archived": null,
"url": "/wevia-cockpit.html",
"desc": "Council IA Hybrid - mix Web Premium + API Free + Local Ollama (toutes capacites mobilisables)"
},
"WeasyPrint": {
"persona": "robot",
"emoji": "📄",
"color": "#f59e0b",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=WeasyPrint"
},
"DocuSeal": {
"persona": "robot",
"emoji": "✍️",
"color": "#8b5cf6",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=DocuSeal"
},
"Nuclei": {
"persona": "robot",
"emoji": "🔒",
"color": "#ef4444",
"role": "sec",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=Nuclei"
},
"BioPython": {
"persona": "robot",
"emoji": "🧬",
"color": "#10b981",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=BioPython"
},
"pandas-ai": {
"persona": "robot",
"emoji": "🐼",
"color": "#3b82f6",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=PandasAI"
},
"Selenium": {
"persona": "robot",
"emoji": "🌐",
"color": "#10b981",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=Selenium"
},
"OpenLaw": {
"persona": "robot",
"emoji": "⚖️",
"color": "#5e5ce6",
"role": "law",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=OpenLaw"
},
"star-vector": {
"persona": "robot",
"emoji": "⭐",
"color": "#fbbf24",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=StarVector"
},
"CodeT5": {
"persona": "robot",
"emoji": "💻",
"color": "#0071e3",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=CodeT5"
},
"FunNLP": {
"persona": "robot",
"emoji": "📚",
"color": "#ec4899",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=FunNLP"
},
"ReportLab": {
"persona": "robot",
"emoji": "📋",
"color": "#06b6d4",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=ReportLab"
},
"PyPDF2": {
"persona": "robot",
"emoji": "📑",
"color": "#0071e3",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=PyPDF2"
},
"WTP Hub": {
"persona": "master",
"emoji": "🏛",
"color": "#ffd700",
"role": "dir",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=WTPHub"
},
"App Map": {
"persona": "robot",
"emoji": "🗺",
"color": "#f59e0b",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=AppMap"
},
"Minority Report": {
"persona": "robot",
"emoji": "🎬",
"color": "#5e5ce6",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=MinorityReport"
},
"Vision 3D": {
"persona": "robot",
"emoji": "🧊",
"color": "#06b6d4",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=Vision3D"
},
"Enterprise Model": {
"persona": "master",
"emoji": "🏢",
"color": "#5e5ce6",
"role": "dir",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=EnterpriseModel"
},
"Cowork": {
"persona": "robot",
"emoji": "🤝",
"color": "#0071e3",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=Cowork"
},
"Excel Agent": {
"persona": "robot",
"emoji": "📊",
"color": "#10b981",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=ExcelAgent"
},
"PowerPoint Agent": {
"persona": "robot",
"emoji": "🎨",
"color": "#ef4444",
"role": "oss",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=PowerPointAgent"
},
"Pain Atlas": {
"persona": "robot",
"emoji": "🗺",
"color": "#f59e0b",
"role": "strat",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=PainAtlas"
},
"Pillars Engine": {
"persona": "robot",
"emoji": "🏛",
"color": "#0071e3",
"role": "strat",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=PillarsEngine"
},
"V85 KPI": {
"persona": "robot",
"emoji": "💼",
"color": "#5e5ce6",
"role": "strat",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=V85KPI"
},
"Wave Engine": {
"persona": "master",
"emoji": "🌊",
"color": "#06b6d4",
"role": "dir",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=WaveEngine"
},
"V70 Universal": {
"persona": "master",
"emoji": "🎯",
"color": "#ffd700",
"role": "dir",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=V70Universal"
},
"BPMN Studio": {
"persona": "robot",
"emoji": "🎯",
"color": "#06b6d4",
"role": "qual",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=BPMNStudio"
},
"Meeting Rooms": {
"persona": "robot",
"emoji": "🏛",
"color": "#f59e0b",
"role": "meet",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=MeetingRooms"
},
"Toolkit Master": {
"persona": "master",
"emoji": "🔧",
"color": "#5e5ce6",
"role": "dir",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=ToolkitMaster"
},
"Apple Edition": {
"persona": "master",
"emoji": "🍎",
"color": "#ec4899",
"role": "dir",
"isGap": false,
"archived": null,
"url": "https://api.dicebear.com/9.x/bottts/svg?seed=AppleEdition"
}
}

39
api/test-aa-emoji.js Normal file
View File

@@ -0,0 +1,39 @@
const { chromium } = require("playwright");
(async () => {
const b = await chromium.launch({ headless: true, args: ["--no-sandbox","--disable-gpu","--disable-dev-shm-usage"] });
const ctx = await b.newContext({ viewport: {width:1920,height:1080} });
const pg = await ctx.newPage();
pg.on("console", msg => {
const t = msg.text();
if (msg.type()==="error") console.log("CE:", t.slice(0,150));
if (t.includes("WevalAvatar") || t.includes("Hierarchy")) console.log("OK:", t.slice(0,200));
});
pg.on("pageerror", e => console.log("PE:", e.message.slice(0,150)));
try {
await pg.goto("file:///var/www/html/agents-archi.html", { waitUntil: "domcontentloaded", timeout: 35000 });
await pg.waitForTimeout(12000);
const r = await pg.evaluate(() => {
const wa = window.WevalAvatar;
const names = ["DeepSeek","WeasyPrint","DocuSeal","Nuclei","BioPython","pandas-ai","Apple Edition","WTP Hub","Cowork","Vision 3D"];
const result = {};
result.WevalAvatar_isReady = !!(wa && wa.isReady && wa.isReady());
result.total_cards = document.querySelectorAll(".ag-card").length;
result.tested = names.map(n => {
const card = document.querySelector('[data-agent="'+n+'"]');
let emoji = null, persona = null;
if (card) {
const span = card.querySelector('.p-av');
emoji = span ? span.textContent : null;
persona = span ? span.getAttribute('data-persona') : null;
}
const wgGet = wa && wa.get ? wa.get(n) : null;
return { name: n, found: !!card, emoji, persona, wa_emoji: wgGet ? wgGet.emoji : null, wa_persona: wgGet ? wgGet.persona : null };
});
return result;
});
console.log("RESULT:");
console.log(JSON.stringify(r, null, 2));
await pg.screenshot({ path: "/var/www/html/proofs/phase93-aa-with-emoji.png", fullPage: false });
} catch(e) { console.log("ERR:", e.message); }
await b.close();
})();

69
api/test-aap.js Normal file
View File

@@ -0,0 +1,69 @@
const { chromium } = require("playwright");
(async () => {
const outDir = "/var/www/html/proofs/phase93-aa-emoji-live";
const fs = require("fs");
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
const b = await chromium.launch({ headless: true, args: ["--no-sandbox","--disable-gpu","--disable-dev-shm-usage"] });
const ctx = await b.newContext({
viewport: { width: 1440, height: 900 },
recordVideo: { dir: outDir, size: { width: 1440, height: 900 } }
});
const pg = await ctx.newPage();
pg.on("console", msg => {
if (msg.type()==="error") console.log("CE:", msg.text().slice(0,200));
});
try {
await pg.goto("https://weval-consulting.com/aapreview.html", { waitUntil: "load", timeout: 35000 });
await pg.waitForTimeout(15000);
const r = await pg.evaluate(() => {
const wa = window.WevalAvatar;
const names = ["DeepSeek","WeasyPrint","DocuSeal","Nuclei","BioPython","pandas-ai","Selenium","Apple Edition","WTP Hub","App Map","Cowork","Vision 3D","Pain Atlas","Excel Agent","PowerPoint Agent"];
return {
wa_isReady: !!(wa && wa.isReady && wa.isReady()),
total_cards: document.querySelectorAll(".ag-card").length,
tested: names.map(n => {
const card = document.querySelector('[data-agent="'+n+'"]');
let emoji = null, persona = null;
if (card) {
const span = card.querySelector('.p-av');
emoji = span ? span.textContent : null;
persona = span ? span.getAttribute('data-persona') : null;
}
return { name: n, found: !!card, emoji, persona };
})
};
});
console.log("RESULT:", JSON.stringify(r, null, 2));
await pg.screenshot({ path: outDir + "/01-full.png" });
// Click Apple Edition card
try {
await pg.click('[data-agent="Apple Edition"]', { timeout: 3000 });
await pg.waitForTimeout(1500);
await pg.screenshot({ path: outDir + "/02-apple-modal.png" });
await pg.keyboard.press("Escape");
} catch(e) { console.log("Click err:", e.message.slice(0,80)); }
// Hover DeepSeek
try {
await pg.hover('[data-agent="DeepSeek"]', { timeout: 3000 });
await pg.waitForTimeout(800);
await pg.screenshot({ path: outDir + "/03-deepseek-hover.png" });
} catch(e) {}
// Scroll/zoom
await pg.mouse.wheel(0, 300);
await pg.waitForTimeout(1500);
await pg.screenshot({ path: outDir + "/04-zoomed.png" });
} catch(e) { console.log("ERR:", e.message); }
await pg.close();
await ctx.close();
await b.close();
const files = fs.readdirSync(outDir).filter(f => f.endsWith(".webm"));
if (files[0]) {
fs.renameSync(outDir+"/"+files[0], outDir+"/phase93-aa-emoji-live.webm");
console.log("VIDEO:", fs.statSync(outDir+"/phase93-aa-emoji-live.webm").size);
}
})();