auto-sync-0120
This commit is contained in:
50
api/meetings/daily-2026-04-16-23-15.json
Normal file
50
api/meetings/daily-2026-04-16-23-15.json
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"type": "DAILY STANDUP",
|
||||||
|
"timestamp": "2026-04-16 23:15",
|
||||||
|
"squad": "all",
|
||||||
|
"agents": {
|
||||||
|
"cortex": {
|
||||||
|
"done": "13 checks, services 5\/10 OK",
|
||||||
|
"blockers": "none",
|
||||||
|
"next": "Continue monitoring *\/4h"
|
||||||
|
},
|
||||||
|
"gap_detector": {
|
||||||
|
"done": "Score 96.1% (49\/51 wired)",
|
||||||
|
"blockers": "2 tools not wired",
|
||||||
|
"next": "Wire remaining tools"
|
||||||
|
},
|
||||||
|
"nonreg": {
|
||||||
|
"done": "153\/153 (100%)",
|
||||||
|
"blockers": "none",
|
||||||
|
"next": "Maintain 100%"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"done": "0 leaks, 92 expositions redacted, CrowdSec active",
|
||||||
|
"blockers": "none",
|
||||||
|
"next": "Continuous monitoring"
|
||||||
|
},
|
||||||
|
"evolution": {
|
||||||
|
"done": "System: ? routes, ? skills",
|
||||||
|
"blockers": "Agent PHP syntax to fix",
|
||||||
|
"next": "Generate 5 evolution proposals"
|
||||||
|
},
|
||||||
|
"scanner": {
|
||||||
|
"done": "12 sections wiki scanned",
|
||||||
|
"blockers": "none",
|
||||||
|
"next": "Continue *\/2h"
|
||||||
|
},
|
||||||
|
"l99": {
|
||||||
|
"done": "Functional ?\/93, Dark 7\/10",
|
||||||
|
"blockers": "gitleaks+trivy version format mismatch",
|
||||||
|
"next": "Fix dark test parsing"
|
||||||
|
},
|
||||||
|
"mirofish": {
|
||||||
|
"done": "MiroFish DOWN",
|
||||||
|
"blockers": "Service down",
|
||||||
|
"next": "Collaborative tools"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"conflicts": [],
|
||||||
|
"actions": [],
|
||||||
|
"ai_analysis": "{\n \"conflicts\": [\n \"mirofish DOWN peut bloquer scanner (besoin de Miro pour les scans wiki)\",\n \"gap_detector bloqué par 2 outils non câblés, potentiellement liés à evolution (skills non déclarées)\",\n \"l99 bloqué par incompatibilité gitleaks+trivy, ce qui peut impacter security malgré son bon statut\"\n ],\n \"common_issues\": [\n \"Problèmes de parsing\/format dans plusieurs services (l99, evolution, gap_detector)\",\n \"Visibilité partielle (Cortex, evolution, l99 avec champs ?)\",\n \"Monitoring continu dépendant de services instables (MiroFish DOWN)\"\n ],\n \"priority_actions\": [\n \"Rétablir MiroFish — priorité absolue pour débloquer scanner et collaborations\",\n \"Corriger le mismatch gitleaks+trivy (l99) pour assurer la solidité des tests sombres\",\n \"Finaliser le câblage des 2 outils restants (gap_detector)\",\n \"Résoudre la syntaxe PHP dans evolution pour permettre les propositions d'évolution\"\n ],\n \"conciliation\": [\n \"Coordonner security et l99 sur les versions des scanners pour éviter futurs conflits\",\n \"Aligner gap_detector et evolution sur la définition des 'outils câblés' et des skills\",\n \"Activer un pont scanner ↔ mirofish pour alerte en cas d’indisponibilité\"\n ]\n}"
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"type": "DAILY STANDUP",
|
"type": "DAILY STANDUP",
|
||||||
"timestamp": "2026-04-16 22:35",
|
"timestamp": "2026-04-16 23:15",
|
||||||
"squad": "all",
|
"squad": "all",
|
||||||
"agents": {
|
"agents": {
|
||||||
"cortex": {
|
"cortex": {
|
||||||
@@ -46,5 +46,5 @@
|
|||||||
},
|
},
|
||||||
"conflicts": [],
|
"conflicts": [],
|
||||||
"actions": [],
|
"actions": [],
|
||||||
"ai_analysis": "LLM unavailable"
|
"ai_analysis": "{\n \"conflicts\": [\n \"mirofish DOWN peut bloquer scanner (besoin de Miro pour les scans wiki)\",\n \"gap_detector bloqué par 2 outils non câblés, potentiellement liés à evolution (skills non déclarées)\",\n \"l99 bloqué par incompatibilité gitleaks+trivy, ce qui peut impacter security malgré son bon statut\"\n ],\n \"common_issues\": [\n \"Problèmes de parsing\/format dans plusieurs services (l99, evolution, gap_detector)\",\n \"Visibilité partielle (Cortex, evolution, l99 avec champs ?)\",\n \"Monitoring continu dépendant de services instables (MiroFish DOWN)\"\n ],\n \"priority_actions\": [\n \"Rétablir MiroFish — priorité absolue pour débloquer scanner et collaborations\",\n \"Corriger le mismatch gitleaks+trivy (l99) pour assurer la solidité des tests sombres\",\n \"Finaliser le câblage des 2 outils restants (gap_detector)\",\n \"Résoudre la syntaxe PHP dans evolution pour permettre les propositions d'évolution\"\n ],\n \"conciliation\": [\n \"Coordonner security et l99 sur les versions des scanners pour éviter futurs conflits\",\n \"Aligner gap_detector et evolution sur la définition des 'outils câblés' et des skills\",\n \"Activer un pont scanner ↔ mirofish pour alerte en cas d’indisponibilité\"\n ]\n}"
|
||||||
}
|
}
|
||||||
@@ -1115,7 +1115,7 @@ error_log("FP CP4 my-intents-start"); // INTENT: cascade_routing
|
|||||||
|
|
||||||
// OPUS-WIRE-16AVR-LIS (read_file)
|
// OPUS-WIRE-16AVR-LIS (read_file)
|
||||||
if ($r === null && preg_match('/(lis|affiche|ouvre|montre|cat|contenu|read|show)/iu', $m) && preg_match('/\.(gold|json|php|html|txt|log|md|conf|py|js)/i', $m)) {
|
if ($r === null && preg_match('/(lis|affiche|ouvre|montre|cat|contenu|read|show)/iu', $m) && preg_match('/\.(gold|json|php|html|txt|log|md|conf|py|js)/i', $m)) {
|
||||||
if (preg_match('#(/(?:opt|var|tmp|etc)/[\w./\-]+)#', $m, $pm)) {
|
if (preg_match('#(/(?:opt|var|tmp|etc)/[\w./\-]+)#', $msg, $pm)) {
|
||||||
$path = rtrim($pm[1], '.,;:');
|
$path = rtrim($pm[1], '.,;:');
|
||||||
$allowed = ['/opt/wevads/vault/','/opt/weval-l99/','/opt/wevia-brain/','/opt/deer-flow/','/var/log/','/tmp/','/var/www/html/','/var/www/weval/','/etc/nginx/','/etc/weval/','/etc/php/'];
|
$allowed = ['/opt/wevads/vault/','/opt/weval-l99/','/opt/wevia-brain/','/opt/deer-flow/','/var/log/','/tmp/','/var/www/html/','/var/www/weval/','/etc/nginx/','/etc/weval/','/etc/php/'];
|
||||||
$ok = false; foreach ($allowed as $a) if (strpos($path, $a) === 0) $ok = true;
|
$ok = false; foreach ($allowed as $a) if (strpos($path, $a) === 0) $ok = true;
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ body{font-family:var(--bf);background:var(--bg);color:var(--t);overflow-x:hidden
|
|||||||
.sec:nth-child(4){animation-delay:.15s}
|
.sec:nth-child(4){animation-delay:.15s}
|
||||||
.sec:nth-child(5){animation-delay:.2s}
|
.sec:nth-child(5){animation-delay:.2s}
|
||||||
</style>
|
</style>
|
||||||
|
<script src="/widgets/audit-banner.js" defer></script>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
|
|||||||
@@ -28,7 +28,8 @@
|
|||||||
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
|
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}
|
||||||
.scanning{animation:pulse 1s infinite}
|
.scanning{animation:pulse 1s infinite}
|
||||||
@media(max-width:768px){.main{grid-template-columns:1fr}}
|
@media(max-width:768px){.main{grid-template-columns:1fr}}
|
||||||
</style></head><body>
|
</style><script src="/widgets/audit-banner.js" defer></script>
|
||||||
|
</head><body>
|
||||||
<div class="top">
|
<div class="top">
|
||||||
<div class="logo">🔐 WEVAL <span>Security Scanner</span></div>
|
<div class="logo">🔐 WEVAL <span>Security Scanner</span></div>
|
||||||
<div style="display:flex;gap:8px;align-items:center">
|
<div style="display:flex;gap:8px;align-items:center">
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
.badge{display:inline-block;margin-top:8px;font-size:11px;padding:3px 10px;border-radius:8px}
|
.badge{display:inline-block;margin-top:8px;font-size:11px;padding:3px 10px;border-radius:8px}
|
||||||
.int{background:rgba(16,185,129,.15);color:#10b981}.ext{background:rgba(99,102,241,.15);color:#818cf8}
|
.int{background:rgba(16,185,129,.15);color:#10b981}.ext{background:rgba(99,102,241,.15);color:#818cf8}
|
||||||
.section{padding:24px 40px}.section h2{font-size:20px;font-weight:700;margin-bottom:16px}
|
.section{padding:24px 40px}.section h2{font-size:20px;font-weight:700;margin-bottom:16px}
|
||||||
</style></head><body>
|
</style><script src="/widgets/audit-banner.js" defer></script>
|
||||||
|
</head><body>
|
||||||
<!-- MEGA-NAV -->
|
<!-- MEGA-NAV -->
|
||||||
<div style="background:rgba(99,102,241,.04);border-bottom:1px solid rgba(99,102,241,.1);padding:8px 40px;display:flex;gap:8px;flex-wrap:wrap;align-items:center">
|
<div style="background:rgba(99,102,241,.04);border-bottom:1px solid rgba(99,102,241,.1);padding:8px 40px;display:flex;gap:8px;flex-wrap:wrap;align-items:center">
|
||||||
<span style="color:#64748b;font-size:11px;font-weight:600;letter-spacing:1px">HUBS</span>
|
<span style="color:#64748b;font-size:11px;font-weight:600;letter-spacing:1px">HUBS</span>
|
||||||
|
|||||||
39
widgets/audit-banner.js
Normal file
39
widgets/audit-banner.js
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* WEVAL Audit Alignment Banner - Widget v1.0 - 2026-04-17
|
||||||
|
* Non-destructif. Zéro dépendance. Toggle via localStorage.
|
||||||
|
* Source: /opt/weval-l99/audits/AUDIT-LINKEDIN-ARCHI-2026-04-16.md
|
||||||
|
*/
|
||||||
|
(function(){
|
||||||
|
if (window.__wevAuditBanner) return;
|
||||||
|
window.__wevAuditBanner = true;
|
||||||
|
if (localStorage.getItem('weval_audit_banner_hidden') === '1') return;
|
||||||
|
|
||||||
|
var style = document.createElement('style');
|
||||||
|
style.textContent = [
|
||||||
|
'#weval-audit-banner{position:sticky;top:0;z-index:99999;background:linear-gradient(90deg,#1B6CA8,#7EDAB5);color:#0a0e1a;padding:8px 16px;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:13px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;box-shadow:0 2px 8px rgba(0,0,0,.3)}',
|
||||||
|
'#weval-audit-banner .k{font-weight:700;letter-spacing:.02em}',
|
||||||
|
'#weval-audit-banner .b{background:rgba(255,255,255,.25);padding:2px 8px;border-radius:10px;font-weight:600}',
|
||||||
|
'#weval-audit-banner .b.bad{background:#ef4444;color:#fff}',
|
||||||
|
'#weval-audit-banner .b.ok{background:#10b981;color:#fff}',
|
||||||
|
'#weval-audit-banner a{color:#0a0e1a;text-decoration:underline;font-weight:700}',
|
||||||
|
'#weval-audit-banner button{margin-left:auto;background:transparent;border:1px solid rgba(0,0,0,.3);color:#0a0e1a;padding:2px 10px;border-radius:6px;cursor:pointer;font-size:11px}',
|
||||||
|
'#weval-audit-banner button:hover{background:rgba(0,0,0,.1)}'
|
||||||
|
].join('');
|
||||||
|
document.head.appendChild(style);
|
||||||
|
|
||||||
|
var b = document.createElement('div');
|
||||||
|
b.id = 'weval-audit-banner';
|
||||||
|
b.innerHTML = '<span class="k">📊 LinkedIn×Archi</span><span class="b" id="wev-score">…</span><span>eng:<span class="b" id="wev-eng">…</span></span><span>reach:<span class="b" id="wev-reach">…</span></span><span>risky:<span class="b" id="wev-risky">…</span></span><a href="/live-status.php">live-status</a><a href="/audits/AUDIT-LINKEDIN-ARCHI-2026-04-16.md">audit</a><button onclick="localStorage.setItem(\'weval_audit_banner_hidden\',\'1\');this.parentNode.remove();">✕</button>';
|
||||||
|
if (document.body) document.body.insertBefore(b, document.body.firstChild);
|
||||||
|
else document.addEventListener('DOMContentLoaded', function(){ document.body.insertBefore(b, document.body.firstChild); });
|
||||||
|
|
||||||
|
fetch('/api/linkedin-alignment-kpi.php').then(function(r){return r.json();}).then(function(d){
|
||||||
|
var s = d.audit_score || 0;
|
||||||
|
var e = d.kpis && d.kpis.engagement_rate_30d ? d.kpis.engagement_rate_30d.value : '?';
|
||||||
|
var re = d.kpis && d.kpis.avg_reach_30d ? d.kpis.avg_reach_30d.value : '?';
|
||||||
|
var ri = d.kpis && d.kpis.risky_claims ? d.kpis.risky_claims.value : '?';
|
||||||
|
var se = document.getElementById('wev-score'); if (se){se.textContent = s + '/10'; if(s<6) se.className='b bad';}
|
||||||
|
var ee = document.getElementById('wev-eng'); if (ee) ee.textContent = e + '%';
|
||||||
|
var rea = document.getElementById('wev-reach'); if (rea) rea.textContent = re;
|
||||||
|
var rie = document.getElementById('wev-risky'); if (rie){rie.textContent = ri; if(ri>0) rie.className='b bad'; else rie.className='b ok';}
|
||||||
|
}).catch(function(){});
|
||||||
|
})();
|
||||||
Reference in New Issue
Block a user