Files
APAW/agent-evolution/index.standalone.html
Deploy Bot c212a0a34e fix(build): remove broken heatmap string replacement
- build-standalone-fixed.cjs: removed renderHeatmap() replacement block
- The replacement used string concatenation with '\'' which broke
  single quotes in generated HTML, causing SyntaxError: unexpected token
- Original renderHeatmap() in index.html uses template literals (`...`)
  which are safe and already contain showCellDetail onclick handler
- Rebuilt index.standalone.html from fixed source
- Zero console errors, zero JS syntax errors verified on port 3003
2026-05-25 22:31:32 +01:00

7003 lines
261 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>APAW Agent Evolution Dashboard</title>
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;500;600;700&family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.7/dist/chart.umd.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/chartjs-plugin-datalabels@2.2.0"></script>
<style>
:root {
--bg-deep: #0a0f1a;
--bg-panel: #0f1525;
--bg-card: #141c2e;
--bg-card-hover: #1a2540;
--border: #1e2d45;
--border-bright: #2a4060;
--text-primary: #e8f1ff;
--text-secondary: #8ba3c0;
--text-muted: #5a7090;
--accent-cyan: #00d4ff;
--accent-green: #00ff94;
--accent-orange: #ff9f43;
--accent-red: #ff4757;
--accent-purple: #a855f7;
--accent-blue: #3b82f6;
--accent-yellow: #facc15;
--glow-cyan: rgba(0,212,255,0.15);
--glow-green: rgba(0,255,148,0.1);
--glow-purple: rgba(168,85,247,0.1);
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Inter', sans-serif;
background: var(--bg-deep);
color: var(--text-primary);
min-height: 100vh;
}
body::before {
content: '';
position: fixed;
inset: 0;
background:
radial-gradient(ellipse at 20% 20%, rgba(0,212,255,0.08) 0%, transparent 50%),
radial-gradient(ellipse at 80% 80%, rgba(168,85,247,0.06) 0%, transparent 50%);
pointer-events: none;
z-index: 0;
}
.container {
max-width: 1600px;
margin: 0 auto;
padding: 24px 16px;
position: relative;
z-index: 1;
}
/* Header */
.header { text-align: center; margin-bottom: 32px; }
.header h1 {
font-size: 2.2em;
font-weight: 800;
background: linear-gradient(135deg, var(--accent-cyan), var(--accent-green));
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-bottom: 8px;
}
.header .sub {
font-family: 'JetBrains Mono', monospace;
font-size: 0.85em;
color: var(--text-muted);
}
.header .meta {
display: flex;
justify-content: center;
gap: 24px;
margin-top: 12px;
font-size: 0.8em;
color: var(--text-secondary);
}
/* Tabs */
.tabs {
display: flex;
gap: 4px;
background: var(--bg-panel);
border: 1px solid var(--border);
border-radius: 12px;
padding: 4px;
margin-bottom: 24px;
overflow-x: auto;
}
.tab-btn {
flex: 1;
min-width: 100px;
padding: 10px 16px;
background: none;
border: none;
color: var(--text-secondary);
font-family: 'Inter', sans-serif;
font-size: 0.85em;
font-weight: 600;
border-radius: 8px;
cursor: pointer;
transition: all 0.25s;
white-space: nowrap;
}
.tab-btn:hover { color: var(--text-primary); background: var(--bg-card); }
.tab-btn.active {
color: var(--bg-deep);
background: linear-gradient(135deg, var(--accent-cyan), var(--accent-green));
box-shadow: 0 0 20px var(--glow-cyan);
}
.tab-panel { display: none; animation: fadeUp 0.4s ease-out; }
.tab-panel.active { display: block; }
@keyframes fadeUp {
from { opacity: 0; transform: translateY(16px); }
to { opacity: 1; transform: translateY(0); }
}
/* Stats */
.stats-row {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 14px;
margin-bottom: 24px;
}
.stat-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 10px;
padding: 18px;
position: relative;
overflow: hidden;
transition: all 0.3s;
}
.stat-card:hover {
border-color: var(--accent-cyan);
transform: translateY(-2px);
box-shadow: 0 8px 32px var(--glow-cyan);
}
.stat-label {
font-family: 'JetBrains Mono', monospace;
font-size: 0.65em;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 1.5px;
margin-bottom: 6px;
}
.stat-value { font-size: 2em; font-weight: 800; }
.stat-sub { font-size: 0.75em; color: var(--text-secondary); margin-top: 4px; }
.grad-cyan { background: linear-gradient(135deg, var(--accent-cyan), var(--accent-green)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.grad-orange { background: linear-gradient(135deg, var(--accent-orange), var(--accent-yellow)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.grad-purple { background: linear-gradient(135deg, var(--accent-purple), #e879f9); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.grad-green { background: linear-gradient(135deg, var(--accent-green), #4ade80); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.grad-red { background: linear-gradient(135deg, var(--accent-red), #ff6b81); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
/* Agent Grid */
.agents-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 16px;
}
.agent-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 12px;
padding: 20px;
transition: all 0.3s;
position: relative;
overflow: hidden;
}
.agent-card:hover {
border-color: var(--accent-cyan);
transform: translateY(-2px);
box-shadow: 0 8px 32px var(--glow-cyan);
}
.agent-card.has-history { border-left: 3px solid var(--accent-green); }
.agent-card.needs-update { border-left: 3px solid var(--accent-orange); }
.agent-card.is-new { border-left: 3px solid var(--accent-purple); }
.agent-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 12px;
}
.agent-name {
font-weight: 700;
font-size: 1.05em;
display: flex;
align-items: center;
gap: 8px;
}
.agent-color {
width: 12px;
height: 12px;
border-radius: 3px;
flex-shrink: 0;
}
.agent-category {
font-family: 'JetBrains Mono', monospace;
font-size: 0.7em;
padding: 3px 8px;
border-radius: 12px;
background: rgba(0,212,255,0.1);
color: var(--accent-cyan);
}
.agent-model {
font-family: 'JetBrains Mono', monospace;
font-size: 0.78em;
color: var(--accent-green);
margin-bottom: 8px;
display: flex;
align-items: center;
gap: 6px;
}
.agent-provider {
font-size: 0.7em;
padding: 2px 6px;
border-radius: 4px;
background: rgba(0,255,148,0.1);
color: var(--accent-green);
}
.agent-desc {
font-size: 0.85em;
color: var(--text-secondary);
line-height: 1.5;
margin-bottom: 12px;
}
.agent-meta {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 8px;
padding-top: 12px;
border-top: 1px solid var(--border);
}
.agent-meta-item {
text-align: center;
}
.agent-meta-label {
font-size: 0.6em;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.5px;
}
.agent-meta-value {
font-family: 'JetBrains Mono', monospace;
font-size: 0.9em;
font-weight: 600;
color: var(--text-primary);
}
.agent-history {
margin-top: 12px;
padding-top: 12px;
border-top: 1px dashed var(--border);
}
.history-title {
font-size: 0.7em;
color: var(--text-muted);
text-transform: uppercase;
margin-bottom: 8px;
}
.history-item {
display: flex;
align-items: center;
gap: 10px;
font-size: 0.75em;
padding: 6px 0;
border-bottom: 1px solid rgba(30,45,69,0.5);
}
.history-item:last-child { border-bottom: none; }
.history-date {
font-family: 'JetBrains Mono', monospace;
color: var(--text-muted);
min-width: 100px;
}
.history-type {
padding: 2px 6px;
border-radius: 4px;
font-size: 0.85em;
}
.history-type.model_change { background: rgba(0,212,255,0.15); color: var(--accent-cyan); }
.history-type.prompt_change { background: rgba(168,85,247,0.15); color: var(--accent-purple); }
.history-type.agent_created { background: rgba(0,255,148,0.15); color: var(--accent-green); }
/* Category Section */
.category-section { margin-bottom: 32px; }
.category-header {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 16px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
}
.category-title {
font-size: 1.1em;
font-weight: 700;
}
.category-count {
font-family: 'JetBrains Mono', monospace;
font-size: 0.7em;
padding: 3px 8px;
border-radius: 12px;
background: rgba(168,85,247,0.15);
color: var(--accent-purple);
}
/* Evolution Timeline */
.timeline-wrap {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 12px;
padding: 24px;
margin-bottom: 24px;
}
.timeline-title {
font-size: 1.1em;
font-weight: 700;
margin-bottom: 16px;
}
.timeline {
position: relative;
padding-left: 24px;
}
.timeline::before {
content: '';
position: absolute;
left: 8px;
top: 0;
bottom: 0;
width: 2px;
background: var(--border);
}
.timeline-item {
position: relative;
padding: 12px 0 12px 24px;
border-bottom: 1px solid var(--border);
}
.timeline-item:last-child { border-bottom: none; }
.timeline-item::before {
content: '';
position: absolute;
left: -20px;
top: 18px;
width: 12px;
height: 12px;
border-radius: 50%;
background: var(--accent-cyan);
border: 2px solid var(--border);
}
.timeline-date {
font-family: 'JetBrains Mono', monospace;
font-size: 0.75em;
color: var(--text-muted);
}
.timeline-content {
font-size: 0.9em;
margin-top: 4px;
}
.timeline-agent {
font-weight: 600;
color: var(--accent-cyan);
}
.timeline-change {
color: var(--text-secondary);
}
/* Filter Row */
.filter-row {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin-bottom: 16px;
}
.filter-btn {
padding: 6px 14px;
background: var(--bg-card);
border: 1px solid var(--border);
color: var(--text-secondary);
border-radius: 20px;
font-size: 0.8em;
cursor: pointer;
transition: all 0.2s;
font-family: 'Inter', sans-serif;
}
.filter-btn:hover, .filter-btn.active {
border-color: var(--accent-cyan);
color: var(--accent-cyan);
background: rgba(0,212,255,0.05);
}
/* Search */
.search-box {
position: relative;
margin-bottom: 20px;
}
.search-input {
width: 100%;
padding: 12px 16px 12px 40px;
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: 8px;
color: var(--text-primary);
font-family: 'Inter', sans-serif;
font-size: 0.9em;
}
.search-input:focus {
outline: none;
border-color: var(--accent-cyan);
}
.search-icon {
position: absolute;
left: 14px;
top: 50%;
transform: translateY(-50%);
color: var(--text-muted);
}
/* Model Matrix */
.matrix-wrap {
overflow-x: auto;
border-radius: 12px;
border: 1px solid var(--border);
background: var(--bg-card);
padding: 20px;
}
.matrix-title {
font-size: 1.1em;
font-weight: 700;
margin-bottom: 16px;
}
.matrix-table {
width: 100%;
border-collapse: collapse;
font-size: 0.8em;
}
.matrix-table th {
font-family: 'JetBrains Mono', monospace;
font-size: 0.7em;
color: var(--text-muted);
text-transform: uppercase;
padding: 10px 8px;
text-align: left;
border-bottom: 2px solid var(--border);
position: sticky;
top: 0;
background: var(--bg-panel);
}
.matrix-table td {
padding: 10px 8px;
border-bottom: 1px solid var(--border);
}
.matrix-table tr:hover td {
background: var(--bg-card-hover);
}
.score-bar {
display: flex;
align-items: center;
gap: 6px;
}
.score-bg {
width: 50px;
height: 5px;
background: var(--border);
border-radius: 3px;
overflow: hidden;
}
.score-fill {
height: 100%;
border-radius: 3px;
}
.score-fill.high { background: linear-gradient(90deg, var(--accent-green), #00ff94); }
.score-fill.medium { background: linear-gradient(90deg, var(--accent-orange), #ffc048); }
.score-fill.low { background: linear-gradient(90deg, var(--accent-red), #ff6b81); }
/* Heatmap */
.hm-wrap { overflow-x:auto; border-radius:11px; border:1px solid var(--border); background:var(--bg-card); padding:18px; margin-bottom:26px; }
.hm-title { font-weight:700; font-size:1.05em; }
.hm-sub { font-size:.76em; color:var(--text-muted); margin-bottom:14px; }
.hm-table { border-collapse:separate; border-spacing:2px; width:100%; }
.hm-table th { font-family:'JetBrains Mono',monospace; font-size:.62em; color:var(--text-muted); padding:8px 5px; text-align:center; white-space:nowrap; vertical-align:bottom; }
.hm-table th.hm-role { text-align:left; min-width:140px; font-size:.68em; padding-left:10px; }
.hm-table td { text-align:center; padding:6px 4px; font-family:'JetBrains Mono',monospace; font-size:.72em; font-weight:700; border-radius:6px; cursor:pointer; transition:all .15s cubic-bezier(.4,0,.2,1); min-width:42px; position:relative; line-height:1.4; }
.hm-table td:hover { transform:scale(1.1); z-index:2; box-shadow:0 4px 12px rgba(0,0,0,.35); }
.hm-table td.hm-r { text-align:left; font-family:'Inter',sans-serif; font-size:.82em; font-weight:600; color:var(--text-primary); cursor:default; padding-left:10px; }
.hm-table td.hm-r:hover { transform:none; box-shadow:none; }
.hm-star { position:absolute; top:2px; right:2px; font-size:.65em; text-shadow:0 1px 2px rgba(0,0,0,.5); }
.hm-cur { box-shadow:inset 0 0 0 2px var(--accent-cyan), 0 0 8px rgba(0,212,255,.35); border-radius:6px; }
.hm-cur::after { content:''; position:absolute; bottom:2px; left:50%; transform:translateX(-50%); width:8px; height:3px; background:var(--accent-cyan); border-radius:2px; }
.hm-if-warn { position:absolute; top:2px; left:2px; font-size:.6em; opacity:.8; }
/* Smooth gradient legend bar */
.hm-legend-wrap { margin-top:18px; padding:0 4px; }
.hm-legend-track { position:relative; height:22px; border-radius:11px; background:linear-gradient(90deg, rgba(0,255,148,.85) 0%, rgba(0,212,255,.75) 20%, rgba(59,130,246,.6) 40%, rgba(168,85,247,.45) 58%, rgba(255,159,67,.35) 75%, rgba(255,71,87,.3) 88%, rgba(90,104,128,.2) 100%); box-shadow:inset 0 1px 3px rgba(0,0,0,.3); }
.hm-legend-labels { display:flex; justify-content:space-between; align-items:center; margin-top:8px; padding:0 4px; }
.hm-legend-labels span { font-size:.68em; font-family:'JetBrains Mono',monospace; color:var(--text-muted); }
.hm-legend-left { color:var(--accent-green); }
.hm-legend-right { color:var(--accent-red); }
.hm-legend-marks { display:flex; justify-content:space-between; padding:0 2px; margin-top:3px; }
.hm-legend-marks span { font-size:.58em; font-family:'JetBrains Mono',monospace; color:var(--text-muted); min-width:20px; text-align:center; }
/* Heatmap Modal Tabs */
.hm-modal-tabs { display:flex; gap:3px; background:var(--bg-panel); border-bottom:1px solid var(--border); padding:4px 18px; }
.hm-tab-btn { padding:8px 16px; background:none; border:none; color:var(--text-secondary); font-family:'Inter'; font-size:.82em; font-weight:600; border-radius:8px; cursor:pointer; transition:all .25s; }
.hm-tab-btn.active { color:var(--bg-deep); background:linear-gradient(135deg,var(--accent-cyan),var(--accent-green)); }
.hm-tab-content { display:none; }
.hm-tab-content.active { display:block; }
.hm-model-timeline { display:flex; flex-direction:column; gap:12px; }
.hm-tl-item { display:flex; gap:14px; align-items:center; padding:10px; background:var(--bg-deep); border-radius:8px; border-left:3px solid var(--accent-cyan); }
.hm-tl-date { font-family:'JetBrains Mono',monospace; font-size:.72em; color:var(--text-muted); min-width:100px; }
.hm-tl-change { display:flex; align-items:center; gap:8px; }
.hm-tl-from { text-decoration:line-through; color:#ff6b81; background:rgba(255,71,87,.08); padding:2px 6px; border-radius:4px; }
.hm-tl-arrow { color:var(--accent-green); }
.hm-tl-to { color:var(--accent-green); background:rgba(0,255,148,.08); padding:2px 6px; border-radius:4px; font-weight:600; }
.hm-tl-current { border-left-color:var(--accent-green); background:rgba(0,255,148,.05); }
.hm-no-data { color:var(--text-muted); font-size:.9em; padding:16px; text-align:center; }
.hm-capabilities { display:flex; flex-wrap:wrap; gap:6px; }
.hm-cap-tag { padding:4px 10px; background:rgba(0,212,255,.1); border:1px solid var(--border); border-radius:16px; font-size:.78em; color:var(--accent-cyan); }
.hm-agent-desc { font-size:.9em; color:var(--text-secondary); line-height:1.5; margin-bottom:14px; padding:12px; background:var(--bg-deep); border-radius:8px; }
.hm-model-tl-score { margin-left:auto; font-family:'JetBrains Mono',monospace; font-size:.8em; color:var(--accent-cyan); }
/* Tooltip */
#ttOverlay { display:none; position:fixed; top:0;left:0;right:0;bottom:0; z-index:999; pointer-events:none; }
#ttOverlay.show { display:block; }
#ttBox { position:absolute; background:var(--bg-panel); border:1px solid var(--accent-cyan); border-radius:9px; padding:12px 16px; max-width:300px; box-shadow:0 10px 32px rgba(0,0,0,.55); z-index:1000; }
#ttBox h4 { color:var(--accent-cyan); font-size:.9em; margin-bottom:4px; }
#ttBox p { font-size:.78em; color:var(--text-secondary); line-height:1.45; }
/* Export */
.actions-row {
display: flex;
gap: 10px;
margin-bottom: 20px;
}
.action-btn {
padding: 8px 16px;
background: var(--bg-card);
border: 1px solid var(--border);
color: var(--text-primary);
border-radius: 8px;
font-family: 'Inter', sans-serif;
font-size: 0.85em;
cursor: pointer;
transition: all 0.25s;
display: inline-flex;
align-items: center;
gap: 8px;
}
.action-btn:hover {
border-color: var(--accent-cyan);
color: var(--accent-cyan);
}
.action-btn.primary {
background: linear-gradient(135deg, rgba(0,212,255,0.15), rgba(0,255,148,0.1));
border-color: var(--accent-cyan);
color: var(--accent-cyan);
}
.action-btn.primary:hover {
box-shadow: 0 0 20px var(--glow-cyan);
}
/* Modal */
.modal {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.7);
z-index: 9999;
justify-content: center;
align-items: center;
padding: 20px;
}
.modal.show { display: flex; }
.modal-content {
background: var(--bg-panel);
border: 1px solid var(--accent-cyan);
border-radius: 14px;
max-width: 900px;
width: 100%;
max-height: 85vh;
overflow: hidden;
display: flex;
flex-direction: column;
box-shadow: 0 20px 60px rgba(0,0,0,0.5);
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 18px 22px;
border-bottom: 1px solid var(--border);
}
.modal-title { font-weight: 700; font-size: 1.05em; }
.modal-actions { display: flex; gap: 8px; }
.modal-body {
flex: 1;
overflow: auto;
padding: 18px 22px;
}
.modal-pre {
font-family: 'JetBrains Mono', monospace;
font-size: 0.78em;
line-height: 1.6;
color: var(--accent-green);
white-space: pre-wrap;
}
/* Impact Tab */
.chart-wrap { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; margin-bottom: 24px; }
.chart-title { font-size: 1.1em; font-weight: 700; margin-bottom: 16px; }
.chart-sub { font-size: 0.76em; color: var(--text-muted); margin-bottom: 14px; }
.chart-placeholder { text-align: center; padding: 60px 20px; color: var(--text-muted); font-size: 0.95em; }
.chart-container { position:relative; height:280px; width:100%; }
.chart-container-sm { position:relative; height:240px; width:100%; }
/* Recommendation Cards */
.rec-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; transition: all 0.3s; margin-bottom: 16px; }
.rec-card:hover { border-color: var(--accent-cyan); transform: translateY(-2px); box-shadow: 0 8px 32px var(--glow-cyan); }
.rec-hdr { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; }
.rec-agent { font-weight: 700; font-size: 1.1em; display: flex; align-items: center; gap: 10px; }
.rec-agent-name { color: var(--text-primary); }
.impact-badge { font-family: 'JetBrains Mono', monospace; font-size: 0.7em; font-weight: 700; padding: 4px 10px; border-radius: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
.impact-badge.critical { background: rgba(255,71,87,0.2); color: #ff6b81; border: 1px solid rgba(255,71,87,0.4); }
.impact-badge.high { background: rgba(255,159,67,0.2); color: #ffc048; border: 1px solid rgba(255,159,67,0.4); }
.impact-badge.medium { background: rgba(59,130,246,0.2); color: #60a5fa; border: 1px solid rgba(59,130,246,0.4); }
.impact-badge.low { background: rgba(0,255,148,0.15); color: #4ade80; border: 1px solid rgba(0,255,148,0.3); }
.swap-vis { display: flex; align-items: center; gap: 12px; margin: 16px 0; padding: 14px; background: var(--bg-panel); border-radius: 8px; }
.swap-from, .swap-to { flex: 1; padding: 10px 14px; border-radius: 6px; font-family: 'JetBrains Mono', monospace; font-size: 0.8em; }
.swap-from { background: rgba(255,71,87,0.1); color: #ff6b81; border: 1px solid rgba(255,71,87,0.3); }
.swap-to { background: rgba(0,255,148,0.1); color: #4ade80; border: 1px solid rgba(0,255,148,0.3); }
.swap-arrow { color: var(--accent-cyan); font-size: 1.4em; font-weight: 700; }
.rec-metrics { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 14px; }
.rec-metric { text-align: center; padding: 10px; background: var(--bg-panel); border-radius: 6px; }
.rec-metric-label { font-size: 0.65em; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; }
.rec-metric-value { font-family: 'JetBrains Mono', monospace; font-size: 0.95em; font-weight: 600; color: var(--accent-green); margin-top: 4px; }
.rec-rationale { font-size: 0.85em; color: var(--text-secondary); line-height: 1.6; padding: 12px; background: rgba(0,212,255,0.05); border-radius: 6px; border-left: 3px solid var(--accent-cyan); }
/* Recommendation Card Checkbox */
.rec-checkbox { position: absolute; top: 16px; right: 16px; }
.rec-checkbox input { width: 18px; height: 18px; cursor: pointer; accent-color: var(--accent-cyan); }
/* Progress Modal */
.progress-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.85);
z-index: 10000;
justify-content: center;
align-items: center;
flex-direction: column;
}
.progress-overlay.show { display: flex; }
.progress-card {
background: var(--bg-panel);
border: 1px solid var(--accent-cyan);
border-radius: 14px;
padding: 32px 40px;
text-align: center;
max-width: 500px;
width: 90%;
box-shadow: 0 20px 60px rgba(0,0,0,0.5);
}
.progress-title { font-size: 1.2em; font-weight: 700; margin-bottom: 24px; }
.progress-bar-wrap { background: var(--bg-card); border-radius: 4px; height: 8px; overflow: hidden; margin-bottom: 20px; }
.progress-bar-fill {
height: 100%;
width: 0%;
background: linear-gradient(90deg, var(--accent-green), #00ff94);
border-radius: 4px;
transition: width 0.3s ease-out;
}
.progress-status { font-size: 0.9em; color: var(--text-secondary); margin-bottom: 20px; min-height: 24px; }
.progress-result { display: none; }
.progress-result.show { display: block; }
.progress-result p { font-size: 1em; color: var(--accent-green); margin-bottom: 20px; }
.progress-close-btn {
padding: 10px 24px;
background: var(--bg-card);
border: 1px solid var(--border);
color: var(--text-primary);
border-radius: 8px;
cursor: pointer;
font-size: 0.9em;
}
.progress-close-btn:hover { border-color: var(--accent-cyan); color: var(--accent-cyan); }
/* Research Modal */
.research-steps { text-align: left; margin: 20px 0; }
.research-step { padding: 12px 16px; background: var(--bg-card); border-radius: 8px; margin-bottom: 10px; font-size: 0.9em; color: var(--text-secondary); display: flex; align-items: center; gap: 10px; opacity: 0.5; transition: all 0.3s; }
.research-step.active { opacity: 1; color: var(--accent-cyan); background: rgba(0,212,255,0.1); }
.research-step.done { opacity: 1; color: var(--accent-green); }
.research-step .spinner { width: 16px; height: 16px; border: 2px solid var(--border); border-top-color: var(--accent-cyan); border-radius: 50%; animation: spin 1s linear infinite; display: none; }
.research-step.active .spinner { display: block; }
.research-summary { display: none; text-align: center; padding: 20px; }
.research-summary.show { display: block; }
.research-summary p { font-size: 1em; color: var(--text-secondary); margin-bottom: 16px; }
.research-link { color: var(--accent-cyan); text-decoration: underline; cursor: pointer; }
@keyframes spin { to { transform: rotate(360deg); } }
/* Apply Modal Checklist */
.apply-checklist { max-height: 300px; overflow-y: auto; margin: 16px 0; }
.apply-item {
display: flex;
align-items: center;
gap: 12px;
padding: 12px 14px;
background: var(--bg-card);
border-radius: 8px;
margin-bottom: 8px;
transition: all 0.2s;
}
.apply-item:hover { background: var(--bg-card-hover); }
.apply-item input { width: 18px; height: 18px; accent-color: var(--accent-cyan); }
.apply-item-content { flex: 1; }
.apply-item-agent { font-weight: 600; font-size: 0.95em; }
.apply-item-models { display: flex; align-items: center; gap: 8px; font-family: 'JetBrains Mono', monospace; font-size: 0.8em; margin-top: 4px; }
.apply-item-from { text-decoration: line-through; color: #ff6b81; }
.apply-item-arrow { color: var(--accent-cyan); }
.apply-item-to { color: var(--accent-green); }
.apply-item-impact { font-size: 0.7em; padding: 2px 8px; border-radius: 4px; text-transform: uppercase; }
.apply-item-impact.critical { background: rgba(255,71,87,0.2); color: #ff6b81; }
.apply-item-impact.high { background: rgba(255,159,67,0.2); color: #ffc048; }
.apply-item-impact.medium { background: rgba(59,130,246,0.2); color: #60a5fa; }
.apply-item-impact.low { background: rgba(0,255,148,0.15); color: #4ade80; }
.apply-modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }
.apply-btn { padding: 10px 20px; border-radius: 8px; font-size: 0.9em; cursor: pointer; transition: all 0.25s; }
.apply-btn.apply { background: linear-gradient(135deg, rgba(0,212,255,0.15), rgba(0,255,148,0.1)); border: 1px solid var(--accent-cyan); color: var(--accent-cyan); }
.apply-btn.apply:hover { box-shadow: 0 0 20px var(--glow-cyan); }
@media (max-width: 768px) {
.header h1 { font-size: 1.5em; }
.tabs { flex-wrap: wrap; }
.agents-grid { grid-template-columns: 1fr; }
.stats-row { grid-template-columns: repeat(2, 1fr); }
.rec-metrics { grid-template-columns: repeat(2, 1fr); }
.swap-vis { flex-direction: column; }
.swap-arrow { transform: rotate(90deg); }
}
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>APAW Agent Evolution</h1>
<div class="sub">Real-time agent model & performance tracking</div>
<div class="meta">
<span id="lastSync">Loading...</span>
<span></span>
<span id="agentCount">0 agents</span>
<span></span>
<span id="historyCount">0 with history</span>
</div>
</div>
<div class="tabs" id="tabBar">
<button class="tab-btn active" onclick="switchTab('overview')">Overview</button>
<button class="tab-btn" onclick="switchTab('agents')">All Agents</button>
<button class="tab-btn" onclick="switchTab('history')">Timeline</button>
<button class="tab-btn" onclick="switchTab('recommendations')">Recommendations</button>
<button class="tab-btn" onclick="switchTab('heatmap')">Heatmap</button>
<button class="tab-btn" onclick="switchTab('impact')">Impact</button>
</div>
<!-- Overview Tab -->
<div id="tab-overview" class="tab-panel active">
<div class="stats-row" id="statsRow"></div>
<div class="category-section">
<div class="category-header">
<h2 class="category-title">Recent Changes</h2>
<span class="category-count" id="recentCount">0</span>
</div>
<div class="timeline-wrap">
<div class="timeline" id="recentTimeline"></div>
</div>
</div>
<div class="category-section">
<div class="category-header">
<h2 class="category-title">Pending Recommendations</h2>
<span class="category-count" id="recCount">0</span>
</div>
<div class="agents-grid" id="recAgents"></div>
</div>
</div>
<!-- All Agents Tab -->
<div id="tab-agents" class="tab-panel">
<div class="search-box">
<span class="search-icon">🔍</span>
<input type="text" class="search-input" id="agentSearch" placeholder="Search agents..." oninput="filterAgents()">
</div>
<div class="filter-row">
<button class="filter-btn active" onclick="filterCategory('all', this)">All</button>
<button class="filter-btn" onclick="filterCategory('Core Dev', this)">Core Dev</button>
<button class="filter-btn" onclick="filterCategory('QA', this)">QA</button>
<button class="filter-btn" onclick="filterCategory('Security', this)">Security</button>
<button class="filter-btn" onclick="filterCategory('Analysis', this)">Analysis</button>
<button class="filter-btn" onclick="filterCategory('Process', this)">Process</button>
<button class="filter-btn" onclick="filterCategory('Cognitive', this)">Cognitive</button>
</div>
<div id="agentsByCategory"></div>
</div>
<!-- History Tab -->
<div id="tab-history" class="tab-panel">
<div class="timeline-wrap">
<h2 class="timeline-title">Evolution Timeline</h2>
<div class="timeline" id="fullTimeline"></div>
</div>
</div>
<!-- Recommendations Tab -->
<div id="tab-recommendations" class="tab-panel">
<div class="actions-row">
<button class="action-btn primary" onclick="showApplyModal()">
<span></span> Apply Recommended Fixes
</button>
<button class="action-btn" onclick="showResearchModal()">
<span>🔬</span> New Research Cycle
</button>
<button class="action-btn" onclick="exportRecommendations()" style="display:none">
<span>📥</span> Export JSON
</button>
</div>
<div class="agents-grid" id="allRecommendations"></div>
</div>
<!-- Heatmap Tab -->
<div id="tab-heatmap" class="tab-panel">
<div class="hm-wrap">
<div class="hm-title">Agent × Model Compatibility Heatmap</div>
<div class="hm-sub">Weighted score = benchmark × instruction-following multiplier · ★ = best fit · outlined = current · click for details</div>
<div style="overflow-x:auto"><table class="hm-table" id="hmTable"></table></div>
<div class="hm-legend-wrap">
<div class="hm-legend-track"></div>
<div class="hm-legend-marks">
<span>100</span><span>80</span><span>60</span><span>40</span><span>20</span><span>0</span>
</div>
<div class="hm-legend-labels">
<span class="hm-legend-left">↑ Ideal Match</span>
<span class="hm-legend-right">Mismatch ↓</span>
</div>
</div>
</div>
</div>
<!-- Impact Tab -->
<div id="tab-impact" class="tab-panel">
<div class="stats-row" id="impactStats"></div>
<!-- Chart 1: Agent Performance Scores -->
<div class="chart-wrap">
<div class="chart-title">Agent Performance Scores</div>
<div class="chart-sub">Composite score per agent based on model benchmarks</div>
<div class="chart-container"><canvas id="agentScoreChart"></canvas></div>
</div>
<!-- Chart 2 & 3 side by side -->
<div style="display:grid;grid-template-columns:1fr 1.5fr;gap:20px;margin-bottom:24px">
<div class="chart-wrap">
<div class="chart-title">Model Distribution</div>
<div class="chart-sub">Agents per model</div>
<div class="chart-container-sm"><canvas id="modelDistChart"></canvas></div>
</div>
<div class="chart-wrap">
<div class="chart-title">Migration Impact</div>
<div class="chart-sub">Before vs after model change score</div>
<div class="chart-container-sm"><canvas id="migrationImpactChart"></canvas></div>
</div>
</div>
</div>
</div>
<!-- Export Modal -->
<div class="modal" id="exportModal">
<div class="modal-content">
<div class="modal-header">
<div class="modal-title">Export Recommendations</div>
<div class="modal-actions">
<button class="action-btn" onclick="copyToClipboard()">📋 Copy</button>
<button class="action-btn primary" onclick="downloadJSON()">⬇ Download</button>
<button class="action-btn" onclick="closeModal()" style="border-color: #ff4757; color: #ff6b81;"></button>
</div>
</div>
<div class="modal-body">
<pre class="modal-pre" id="exportContent"></pre>
</div>
</div>
</div>
<!-- Apply Fixes Modal -->
<div class="modal" id="applyModal">
<div class="modal-content" style="max-width:600px">
<div class="modal-header">
<div class="modal-title">Apply Model Recommendations</div>
<div class="modal-actions">
<button class="action-btn" onclick="closeApplyModal()" style="border-color: #ff4757; color: #ff6b81;"></button>
</div>
</div>
<div class="modal-body">
<p style="color: var(--text-secondary); margin-bottom: 16px;">Select recommendations to apply. All items are selected by default.</p>
<div class="apply-checklist" id="applyChecklist"></div>
<div class="apply-modal-actions">
<button class="apply-btn apply" onclick="simulateApply()">Apply Selected</button>
</div>
</div>
</div>
</div>
<!-- Progress Modal -->
<div class="progress-overlay" id="progressModal">
<div class="progress-card">
<div class="progress-title" id="progressTitle">Applying Fixes...</div>
<div class="progress-bar-wrap">
<div class="progress-bar-fill" id="progressBar"></div>
</div>
<div class="progress-status" id="progressStatus">Preparing...</div>
<div class="progress-result" id="progressResult">
<p id="progressResultText"></p>
<button class="progress-close-btn" onclick="closeProgressModal()">Close</button>
</div>
</div>
</div>
<!-- Research Modal -->
<div class="modal" id="researchModal">
<div class="modal-content" style="max-width:550px">
<div class="modal-header">
<div class="modal-title">Agent Model Research</div>
<div class="modal-actions">
<button class="action-btn" onclick="closeResearchModal()" style="border-color: #ff4757; color: #ff6b81;"></button>
</div>
</div>
<div class="modal-body">
<div class="research-steps" id="researchSteps">
<div class="research-step" data-step="1">
<span class="spinner"></span>
<span>Analyzing benchmark data...</span>
</div>
<div class="research-step" data-step="2">
<span class="spinner"></span>
<span>Computing composite scores...</span>
</div>
<div class="research-step" data-step="3">
<span class="spinner"></span>
<span>Cross-referencing agent assignments...</span>
</div>
<div class="research-step" data-step="4">
<span class="spinner"></span>
<span>Generating recommendations...</span>
</div>
<div class="research-step" data-step="5">
<span class="spinner"></span>
<span>Research complete!</span>
</div>
</div>
<div class="research-summary" id="researchSummary">
<p id="researchSummaryText"></p>
<a class="research-link" onclick="alert('This would open the full report.')">View Report</a>
</div>
</div>
</div>
</div>
<!-- Tooltip Overlay -->
<div id="ttOverlay"><div id="ttBox"></div></div>
<!-- Heatmap Modal -->
<div id="hmModal" class="modal" style="display:none">
<div class="modal-content" style="max-width:900px;width:95%;max-height:85vh">
<div class="modal-header">
<div class="modal-title" id="hmModalTitle">Agent Details</div>
<div class="modal-actions">
<button class="action-btn" onclick="closeHmModal()"></button>
</div>
</div>
<div class="hm-modal-tabs">
<button class="hm-tab-btn active" onclick="switchHmTab('prompt')">Prompt Evolution</button>
<button class="hm-tab-btn" onclick="switchHmTab('gitea')">Gitea History</button>
<button class="hm-tab-btn" onclick="switchHmTab('skills')">Skills</button>
<button class="hm-tab-btn" onclick="switchHmTab('models')">Model Timeline</button>
</div>
<div class="modal-body" id="hmModalBody">
<!-- Content injected by JS -->
</div>
</div>
</div>
<!-- Cell Detail Modal -->
<div id="cellDetailModal" class="modal">
<div class="modal-content" style="max-width:800px">
<div class="modal-header">
<div class="modal-title">Agent Model Performance</div>
<div class="modal-actions">
<button class="action-btn" onclick="closeCellDetailModal()"></button>
</div>
</div>
<div class="modal-body">
<div id="cellDetailContent"></div>
</div>
</div>
</div>
<script>
// Agent Evolution Dashboard
// Supports both server and file:// mode
let agentData = {};
// Set Chart.js dark theme defaults
Chart.defaults.color = '#8ba3c0';
Chart.defaults.borderColor = '#1e2d45';
Chart.defaults.font.family = "'Inter', sans-serif";
// Inline recommendation data fallback (from model-research-latest.json)
const INLINE_RECOMMENDATIONS = []; // REMOVED — data now comes from agentData, not hardcoded
// Inline benchmark data (fallback when embedded data doesn't have model_benchmarks)
// SOURCE: agent-evolution/data/model-benchmarks-verified.json v2.0.0
// All IF scores verified against artificialanalysis.ai. SWE-bench scores removed — none of the 15 models appear on the official swebench.com leaderboard.
/* MODEL_BENCHMARKS removed — data now in EMBEDDED_DATA.model_benchmarks */
// Default embedded data (minimal - updated by sync script)
// Unified data from REAL sources (2026-05-25T21:24:16.296Z)
// Sources: .kilo/agents/*.md + kilo-meta.json + model-benchmarks-verified.json
const EMBEDDED_DATA = {
"$schema": "./data/evolution.schema.json",
"version": "2.1.0",
"lastUpdated": "2026-05-25T21:24:16.287Z",
"agents": {
"agent-architect": {
"current": {
"description": "Creates, modifies, and reviews new agents, workflows, and skills based on capability gap analysis. Tier 2 meta-agent with self-cascade enabled.",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#8B5CF6",
"category": "meta",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-04-05T22:30:00Z",
"commit": "auto",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "+22% quality, IF:90 for YAML frontmatter generation",
"source": "research"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "kimi-k2.6 best fit for agent-architect (86). Multimodal for reviewing UI components.",
"source": "orchestrator-analysis"
},
{
"date": "2026-04-03T20:27:54Z",
"commit": "a0ef7cd02d3579883287ff0ffc23d1e5932c703a",
"type": "model_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: add Agent Architect and KILO_SPEC documentation",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T01:51:28Z",
"commit": "298dde4273944e17d929b3b774c58e4f09e50753",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/openai/gpt-oss:120b",
"reason": "feat: add capability-analyst and agent-architect for task coverage analysis",
"source": "git"
},
{
"date": "2026-04-04T01:54:02Z",
"commit": "657407d5efd7eea2fc3bd6aa5853ebc320514e1d",
"type": "model_change",
"from": "openrouter/openai/gpt-oss:120b",
"to": "ollama-cloud/gpt-oss:120b",
"reason": "fix: replace unavailable model references with available ones",
"source": "git"
},
{
"date": "2026-04-04T02:05:17Z",
"commit": "39d5ddf333ff2276580f3bee59b56462f52e9c1d",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "test: add validation functions and autonomous pipeline system tests",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T12:15:30Z",
"commit": "ebbb4d01b23066f27e451334e43899bd96b5ac90",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: optimize agent models for better performance",
"source": "git"
},
{
"date": "2026-04-05T23:37:23Z",
"commit": "a4e09ad5d5e88ee25688b3a2d1c548e3ada0e549",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: upgrade agent models based on research findings",
"source": "git"
},
{
"date": "2026-04-05T23:42:32Z",
"commit": "6ba325cec5135517241bbbb48acfc54aeadaeac2",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "fix: correct model path format for OpenRouter",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-05-04T22:01:45Z",
"commit": "80dca09ae0a74bd9b1b846e7c91d8b398d80ce9e",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "fix: unquoted color, duplicate key, GLM downgrade + cross-platform validator",
"source": "git"
},
{
"date": "2026-05-08T21:25:38Z",
"commit": "47b027a02fc909a303a659282afb228ac2204c0c",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(gns2): Gitea-Nervous-System v2.0 - distributed agent state machine",
"source": "git"
},
{
"date": "2026-05-13T09:27:48Z",
"commit": "4c9a95661f6222c84e0a67cec217babfacefdf29",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6:cloud",
"to": "ollama-cloud/kimi-k2.6",
"reason": "evolution: remove obsolete :cloud suffix from kimi-k2.6 model id across all configs",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"architect-indexer": {
"current": {
"description": "Indexes and maps project codebase architecture into .architect/ directory. Creates and maintains structured documentation of entities, APIs, DB schema, file graphs, and conventions. (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/glm-5.1",
"provider": "Ollama Cloud",
"color": "#10B981",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "architect-indexer could improve from ollama-cloud/glm-5.1 to kimi-k2.6. Score: 81 → 92 (+11). Verified IF scores from artificialanalysis.ai.",
"score_before": 81,
"score_after": 92,
"score_delta": 11,
"applied": false
}
],
"benchmark": {
"fit_score": 81,
"instruction_following": 90
}
},
"history": [
{
"date": "2026-04-22T20:01:38Z",
"commit": "6b71ea2b574dea773ef424291de119eedd9b470e",
"type": "model_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat: add .architect/ project mapping system with architect-indexer agent and Docker containerization",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"backend-developer": {
"current": {
"description": "Backend specialist for Node.js, Express, APIs, and database integration (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#10B981",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "backend-developer could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-05T01:19:09Z",
"commit": "23eb60762cec861a8a7ab306b994946d55e77e18",
"type": "model_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add workflows for CMS, E-commerce, Blog + backend-developer agent + prompt-engineering rules",
"source": "git"
},
{
"date": "2026-04-05T02:39:06Z",
"commit": "8fcd8f8a9b4fc05318af2cd757d0e3a441bf12a4",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add comprehensive NodeJS development skills and rules",
"source": "git"
},
{
"date": "2026-04-05T05:00:55Z",
"commit": "41eb4c7d4d67a1c395a00f3ff819daa6eb030b9d",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add database skills for ClickHouse, PostgreSQL, and SQLite",
"source": "git"
},
{
"date": "2026-04-05T12:47:01Z",
"commit": "43747d9875edd6061699b831c51ccbb573ec6a47",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add Docker/DevOps skills and devops-engineer agent",
"source": "git"
},
{
"date": "2026-04-05T13:02:32Z",
"commit": "0a854a3bc323330daab1a947c9f1d244dbb8a555",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "fix: add missing agent permissions and update orchestrator mappings",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"browser-automation": {
"current": {
"description": "Browser automation agent using Playwright MCP for E2E testing, form filling, navigation, and web interaction (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-flash",
"provider": "Ollama Cloud",
"color": "#1E88E5",
"category": "testing",
"capabilities": [],
"recommendations": [
{
"priority": "medium",
"target": "ollama-cloud/kimi-k2.6",
"reason": "browser-automation could improve from ollama-cloud/deepseek-v4-flash to kimi-k2.6. Score: 88 → 92 (+4). Verified IF scores from artificialanalysis.ai.",
"score_before": 88,
"score_after": 92,
"score_delta": 4,
"applied": false
}
],
"benchmark": {
"fit_score": 88,
"instruction_following": 86
}
},
"history": [
{
"date": "2026-05-25T14:08:46.653Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/deepseek-v4-flash",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-04T03:49:56Z",
"commit": "5793b7909b3888ae29d3fafe3f2d04ca0c5ad71f",
"type": "model_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: add web testing system with browser automation (Milestone #44)",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6:cloud",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T15:07:17Z",
"commit": "047a87afb405c647bcb778f3c090d042440839d3",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/deepseek-v4-flash",
"reason": "feat(agent-models): apply MEDIUM+LOW priority model migrations",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"capability-analyst": {
"current": {
"description": "Analyzes task requirements against available agents, workflows, and skills. Identifies gaps and recommends new components. Tier 2 meta-agent with self-cascade enabled.",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#6366F1",
"category": "meta",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T22:30:00Z",
"commit": "auto",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "+23% quality, IF:90, FREE via OpenRouter",
"source": "research"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T14:08:46.653Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-04T01:51:28Z",
"commit": "298dde4273944e17d929b3b774c58e4f09e50753",
"type": "model_change",
"from": null,
"to": "anthropic/claude-sonnet-4-20250514",
"reason": "feat: add capability-analyst and agent-architect for task coverage analysis",
"source": "git"
},
{
"date": "2026-04-04T01:54:02Z",
"commit": "657407d5efd7eea2fc3bd6aa5853ebc320514e1d",
"type": "model_change",
"from": "anthropic/claude-sonnet-4-20250514",
"to": "ollama-cloud/gpt-oss:120b",
"reason": "fix: replace unavailable model references with available ones",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T12:15:30Z",
"commit": "ebbb4d01b23066f27e451334e43899bd96b5ac90",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: optimize agent models for better performance",
"source": "git"
},
{
"date": "2026-04-05T23:37:23Z",
"commit": "a4e09ad5d5e88ee25688b3a2d1c548e3ada0e549",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: upgrade agent models based on research findings",
"source": "git"
},
{
"date": "2026-04-05T23:42:32Z",
"commit": "6ba325cec5135517241bbbb48acfc54aeadaeac2",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "fix: correct model path format for OpenRouter",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5.1",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T21:25:38Z",
"commit": "47b027a02fc909a303a659282afb228ac2204c0c",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): Gitea-Nervous-System v2.0 - distributed agent state machine",
"source": "git"
},
{
"date": "2026-05-25T15:07:17Z",
"commit": "047a87afb405c647bcb778f3c090d042440839d3",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(agent-models): apply MEDIUM+LOW priority model migrations",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"code-skeptic": {
"current": {
"description": "Adversarial code reviewer. Finds problems and issues. Does NOT suggest implementations (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/minimax-m2.5",
"provider": "Ollama Cloud",
"color": "#E11D48",
"category": "quality",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "code-skeptic could improve from ollama-cloud/minimax-m2.5 to kimi-k2.6. Score: 74 → 92 (+18). Verified IF scores from artificialanalysis.ai.",
"score_before": 74,
"score_after": 92,
"score_delta": 18,
"applied": false
}
],
"benchmark": {
"fit_score": 74,
"instruction_following": 82
}
},
"history": [
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-oss-120b",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-oss-120b",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/gpt-oss-120b",
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"devops-engineer": {
"current": {
"description": "DevOps specialist for Docker, Kubernetes, CI/CD pipeline automation, and infrastructure management (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#FF6B35",
"category": "core",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-04-05T12:47:01Z",
"commit": "43747d9875edd6061699b831c51ccbb573ec6a47",
"type": "model_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add Docker/DevOps skills and devops-engineer agent",
"source": "git"
},
{
"date": "2026-04-05T13:02:32Z",
"commit": "0a854a3bc323330daab1a947c9f1d244dbb8a555",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "fix: add missing agent permissions and update orchestrator mappings",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:27:48Z",
"commit": "4c9a95661f6222c84e0a67cec217babfacefdf29",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6:cloud",
"to": "ollama-cloud/kimi-k2.6",
"reason": "evolution: remove obsolete :cloud suffix from kimi-k2.6 model id across all configs",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"evaluator": {
"current": {
"description": "Scores agent effectiveness after task completion for continuous improvement. Tier 2 meta-agent with self-cascade enabled.",
"mode": "subagent",
"model": "ollama-cloud/qwen3.5-122b",
"provider": "Ollama Cloud",
"color": "#047857",
"category": "meta",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "evaluator could improve from ollama-cloud/qwen3.5-122b to kimi-k2.6. Score: 82 → 92 (+10). Verified IF scores from artificialanalysis.ai.",
"score_before": 82,
"score_after": 92,
"score_delta": 10,
"applied": false
}
],
"benchmark": {
"fit_score": 82,
"instruction_following": 92
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Nemotron 3 Super better for evaluation tasks",
"source": "git"
},
{
"date": "2026-04-05T22:30:00Z",
"commit": "auto",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "+4% quality, IF:90 for scoring accuracy, FREE",
"source": "research"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T13:37:20.281Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-o3",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-o3",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/gpt-o3",
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-05T23:37:23Z",
"commit": "a4e09ad5d5e88ee25688b3a2d1c548e3ada0e549",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: upgrade agent models based on research findings",
"source": "git"
},
{
"date": "2026-04-05T23:42:32Z",
"commit": "6ba325cec5135517241bbbb48acfc54aeadaeac2",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "fix: correct model path format for OpenRouter",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5.1",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T21:25:38Z",
"commit": "47b027a02fc909a303a659282afb228ac2204c0c",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): Gitea-Nervous-System v2.0 - distributed agent state machine",
"source": "git"
},
{
"date": "2026-05-25T14:36:31Z",
"commit": "4a0c78e5c965188fe669db9cecc430904702728c",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "feat(agent-models): apply CRITICAL+HIGH model migrations from research",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"flutter-developer": {
"current": {
"description": "Flutter mobile specialist for cross-platform apps, state management, and UI components (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#02569B",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "flutter-developer could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-05T15:00:00Z",
"commit": "af5f401",
"type": "agent_created",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "New agent for Flutter development",
"source": "git"
},
{
"date": "2026-04-05T17:04:13Z",
"commit": "af5f401a533810926da2bf1ec559456d92c1cabd",
"type": "model_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add Flutter development support with agent, rules and skills",
"source": "git"
},
{
"date": "2026-04-05T17:26:02Z",
"commit": "b899119d218470c28e0988d1d0bcba6ba2b55330",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add html-to-flutter skill and research report",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"frontend-developer": {
"current": {
"description": "Handles UI implementation with multimodal capabilities. Accepts visual references like screenshots and mockups (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/minimax-m2.5",
"provider": "Ollama Cloud",
"color": "#0EA5E9",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "frontend-developer could improve from ollama-cloud/minimax-m2.5 to kimi-k2.6. Score: 74 → 92 (+18). Verified IF scores from artificialanalysis.ai.",
"score_before": 74,
"score_after": 92,
"score_delta": 18,
"applied": false
}
],
"benchmark": {
"fit_score": 74,
"instruction_following": 82
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "af5f401",
"type": "agent_created",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "Flutter development support added",
"source": "git"
},
{
"date": "2026-04-27T17:00:00Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/minimax-m2.5",
"reason": "Matrix score 92 for frontend on M2.5. SWE-bench 80.2%.",
"source": "research"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/kimi-k2.5",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.5",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T13:02:32Z",
"commit": "0a854a3bc323330daab1a947c9f1d244dbb8a555",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.5",
"reason": "fix: add missing agent permissions and update orchestrator mappings",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.5",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-19T10:04:51Z",
"commit": "7445e66676fa5465cafd20a337c1b8f1ca4d7d96",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add Next.js, Vue/Nuxt, React, Python (Django/FastAPI) skills and agents",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/kimi-k2.5",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.5",
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
},
{
"date": "2026-05-13T16:54:29Z",
"commit": "f65bbf9420023bda5dc475b5a968fc1556289342",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat: add visual quality rules to frontend-developer agent + new screenshot page",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"go-developer": {
"current": {
"description": "Go backend specialist for Gin, Echo, APIs, and database integration (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#00ADD8",
"category": "core",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "Qwen3-Coder optimized for Go",
"source": "git"
},
{
"date": "2026-04-27T17:00:00Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Matrix score 88 for go-dev on V4-Pro. DeepSeek traditionally strong in Go/Rust.",
"source": "research"
},
{
"date": "2026-04-05T03:40:32Z",
"commit": "be4c586c8fb4b32f7a4dd329bd67d234d81054f7",
"type": "model_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add Go Lang development coverage (Milestone #49)",
"source": "git"
},
{
"date": "2026-04-05T05:00:55Z",
"commit": "41eb4c7d4d67a1c395a00f3ff819daa6eb030b9d",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add database skills for ClickHouse, PostgreSQL, and SQLite",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-05T13:02:32Z",
"commit": "0a854a3bc323330daab1a947c9f1d244dbb8a555",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "fix: add missing agent permissions and update orchestrator mappings",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"history-miner": {
"current": {
"description": "Analyzes git history to find duplicates and past solutions, preventing regression and duplicate work (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/qwen3.5-122b",
"provider": "Ollama Cloud",
"color": "#059669",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "history-miner could improve from ollama-cloud/qwen3.5-122b to kimi-k2.6. Score: 82 → 92 (+10). Verified IF scores from artificialanalysis.ai.",
"score_before": 82,
"score_after": 92,
"score_delta": 10,
"applied": false
}
],
"benchmark": {
"fit_score": 82,
"instruction_following": 92
}
},
"history": [
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T14:08:46.653Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gemini-3-flash",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/gemini-3-flash",
"to": "ollama-cloud/gpt-oss:20b",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/gpt-oss:20b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T12:15:30Z",
"commit": "ebbb4d01b23066f27e451334e43899bd96b5ac90",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:20b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: optimize agent models for better performance",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T15:07:17Z",
"commit": "047a87afb405c647bcb778f3c090d042440839d3",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "feat(agent-models): apply MEDIUM+LOW priority model migrations",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"incident-responder": {
"current": {
"description": "Server incident response and system hardening specialist. Handles live forensics, malware removal, persistence hunting, SSH-based server cleanup, and post-incident hardening. Works with any OS and panel.",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#B91C1C",
"category": "core",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-05-09T13:31:20Z",
"commit": "c031c4b9e5d3973d5e29c7aea13166b282ea49c4",
"type": "model_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(evolution): add incident-responder agent for server incident response and forensics",
"source": "git"
},
{
"date": "2026-05-13T09:27:48Z",
"commit": "4c9a95661f6222c84e0a67cec217babfacefdf29",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6:cloud",
"to": "ollama-cloud/kimi-k2.6",
"reason": "evolution: remove obsolete :cloud suffix from kimi-k2.6 model id across all configs",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"lead-developer": {
"current": {
"description": "Primary code writer for backend and core logic. Writes implementation to pass tests (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#DC2626",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "lead-developer could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "Initial configuration",
"source": "git"
},
{
"date": "2026-04-27T16:56:09Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Nemotron 3 Super has better reasoning",
"source": "research"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "Reverted to qwen3-coder: SWE-bench 66.5% is coding-benchmark standard. Matrix score 92 vs nemotron 70.",
"source": "orchestrator-analysis"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-29T21:04:22Z",
"commit": "3badb259cc97c7ab0c5e2ad560859278a17443ed",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: bidirectional research dashboard + agent config fixes",
"source": "git"
},
{
"date": "2026-04-29T23:19:16Z",
"commit": "9e48a4960e5bc80c150822972d99adb9ecd7bb0d",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "fix: restore optimal v3 models + add fitness gate protection",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"markdown-validator": {
"current": {
"description": "Validates and corrects Markdown descriptions for Gitea issues (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/nemotron-3-nano",
"provider": "Ollama Cloud",
"color": "#F97316",
"category": "meta",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "markdown-validator could improve from ollama-cloud/nemotron-3-nano to kimi-k2.6. Score: 62 → 92 (+30). Verified IF scores from artificialanalysis.ai.",
"score_before": 62,
"score_after": 92,
"score_delta": 30,
"applied": false
}
],
"benchmark": {
"fit_score": 62,
"instruction_following": 68
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/nemotron-3-nano:30b",
"reason": "Nano efficient for lightweight validation tasks",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-nano:30b",
"to": "ollama-cloud/nemotron-3-nano",
"reason": "Unified naming. Nano IF=68, tiny and cheap, perfect for validation.",
"source": "orchestrator-analysis"
},
{
"date": "2026-05-23T23:35:02.185Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-nano",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T14:08:46.653Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/deepseek-v4-pro-max",
"to": "ollama-cloud/nemotron-3-nano",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-04T01:42:12Z",
"commit": "e58a5b6380d8e923ea4264783fb03fd4e8351a9f",
"type": "model_change",
"from": null,
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: add markdown-validator agent and scoped-labels skill",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "ollama-cloud/nemotron-3-nano:30b",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-nano:30b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-nano:30b",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T15:07:17Z",
"commit": "047a87afb405c647bcb778f3c090d042440839d3",
"type": "model_change",
"from": "ollama-cloud/deepseek-v4-pro-max",
"to": "ollama-cloud/nemotron-3-nano",
"reason": "feat(agent-models): apply MEDIUM+LOW priority model migrations",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"memory-manager": {
"current": {
"description": "Manages agent memory systems - short-term (context), long-term (vector store), and episodic (experiences) (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#8B5CF6",
"category": "cognitive",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "RULER@1M critical for memory ctx",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "MIGRATION: qwen3.6-plus was OpenRouter. deepseek-v4-pro-max has 1M context (same as nemotron), matrix 86, SWE-V 80.6.",
"source": "orchestrator-analysis"
},
{
"date": "2026-05-23T23:35:02.184Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/deepseek-v4-pro-max",
"to": "ollama-cloud/qwen3.6-plus",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T13:37:20.281Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/qwen3.6-plus",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-05T02:01:05Z",
"commit": "774dc9ac4052a1830ec238837fbf7a2c7d6b2518",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add cognitive enhancement agents based on research",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/qwen3.6-plus",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3.6-plus",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T14:36:31Z",
"commit": "4a0c78e5c965188fe669db9cecc430904702728c",
"type": "model_change",
"from": "ollama-cloud/qwen3.6-plus",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(agent-models): apply CRITICAL+HIGH model migrations from research",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"orchestrator": {
"current": {
"description": "Main dispatcher. Routes tasks between agents based on Issue status and manages the workflow state machine. IF:90 for optimal routing accuracy. (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#7C3AED",
"category": "meta",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-27T20:28:58Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "kimi-k2.6 best fit for orchestration (92). 300 sub-agent swarm.",
"source": "research"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T00:50:08Z",
"commit": "259f4079c20b8e824fad0d5bce79cf7be0dd17ee",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "docs: add CapabilityAnalyst and MarkdownValidator to spec and orchestrator table",
"source": "git"
},
{
"date": "2026-04-05T01:36:39Z",
"commit": "39eeb2f35fe2b1fb81c82e13d65b0a9f5278c5ae",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: add workflow executor, quality controller, and workflow architect for closed-loop execution",
"source": "git"
},
{
"date": "2026-04-05T02:05:37Z",
"commit": "420c10fb12465c8262cfe0da24fc8a2c07b48dc9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: integrate cognitive enhancement agents into capability index and orchestrator",
"source": "git"
},
{
"date": "2026-04-05T13:02:32Z",
"commit": "0a854a3bc323330daab1a947c9f1d244dbb8a555",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "fix: add missing agent permissions and update orchestrator mappings",
"source": "git"
},
{
"date": "2026-04-06T22:55:12Z",
"commit": "b9abd91d075308d15ff800986290aeacf3b5fa25",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: orchestrator evolution — full access + model upgrades + self-evolution protocol",
"source": "git"
},
{
"date": "2026-04-07T08:55:24Z",
"commit": "e074612046cf99e28f007ca02d62c23b6d51fc02",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5",
"reason": "feat: add web testing infrastructure",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-18T23:43:04Z",
"commit": "b46a1a20a8ea028eaf4365bd785c2d9a6847119a",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat: add PHP development stack, atomic tasks, modular code rules, agent monitoring, fix target project detection",
"source": "git"
},
{
"date": "2026-04-19T10:04:51Z",
"commit": "7445e66676fa5465cafd20a337c1b8f1ca4d7d96",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat: add Next.js, Vue/Nuxt, React, Python (Django/FastAPI) skills and agents",
"source": "git"
},
{
"date": "2026-04-22T20:01:38Z",
"commit": "6b71ea2b574dea773ef424291de119eedd9b470e",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat: add .architect/ project mapping system with architect-indexer agent and Docker containerization",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-05-08T18:54:08Z",
"commit": "f01e2064fb020de66cd800217203df525be927ed",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(evolution): Kilo Code release sync & APAW system hardening (v2026-05-07)",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-09T13:31:20Z",
"commit": "c031c4b9e5d3973d5e29c7aea13166b282ea49c4",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(evolution): add incident-responder agent for server incident response and forensics",
"source": "git"
},
{
"date": "2026-05-13T09:27:48Z",
"commit": "4c9a95661f6222c84e0a67cec217babfacefdf29",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6:cloud",
"to": "ollama-cloud/kimi-k2.6",
"reason": "evolution: remove obsolete :cloud suffix from kimi-k2.6 model id across all configs",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
},
{
"date": "2026-05-16T13:10:06Z",
"commit": "4e9ea678bd89cb7c518ce46d6fbeb28fa0aa65f9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(orchestrator): evolution — capability-first routing, parallelization, zero-work policy",
"source": "git"
},
{
"date": "2026-05-18T15:54:15Z",
"commit": "46d67528900e7d1543641417710eb440929bc4db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(context-window): evolution — Gitea-centric checkpoint pruning + agent context hygiene",
"source": "git"
},
{
"date": "2026-05-18T16:13:33Z",
"commit": "ded8e3022d9f9b8f6d7dbbd3bad675d3e0ad2e22",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(parallel-coordination): evolution — Gitea comment-based task claiming for parallel agent execution",
"source": "git"
},
{
"date": "2026-05-24T00:11:25Z",
"commit": "e6e8e9cb2adc24595b18f0f6b0bafc29369201cc",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(workflow-cross-checker): add pre-flight inter-agent validation agent with gate protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"performance-engineer": {
"current": {
"description": "Reviews code for performance issues. Focuses on efficiency, N+1 queries, memory leaks, and algorithmic complexity (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#0D9488",
"category": "quality",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Better reasoning for performance analysis",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Matrix=84 for perf-engineer on V4-Pro. GPQA 90.1 for reasoning.",
"source": "orchestrator-analysis"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"php-developer": {
"current": {
"description": "PHP backend specialist for Laravel, Symfony, WordPress, and full-stack web applications (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#8B5CF6",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "php-developer could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-18T23:43:04Z",
"commit": "b46a1a20a8ea028eaf4365bd785c2d9a6847119a",
"type": "model_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add PHP development stack, atomic tasks, modular code rules, agent monitoring, fix target project detection",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"pipeline-judge": {
"current": {
"description": "Automated pipeline judge. Evaluates workflow execution by running tests, measuring token cost and wall-clock time. Produces objective fitness scores. Never writes code - only measures and scores. (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#DC2626",
"category": "meta",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-04-06T00:23:50+0100Z",
"commit": "fa68141d",
"type": "agent_created",
"from": null,
"to": "",
"reason": "feat: add pipeline-judge agent and evolution workflow system",
"source": "git"
},
{
"date": "2026-05-25T13:37:20.281Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-06T00:23:50Z",
"commit": "fa68141d476a6356a2fb0618a124d49c9a8d2c65",
"type": "model_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: add pipeline-judge agent and evolution workflow system",
"source": "git"
},
{
"date": "2026-04-06T00:48:21Z",
"commit": "170324765147282e20fd17236378afba6f0db5c9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: add Docker-based evolution testing with precise measurements",
"source": "git"
},
{
"date": "2026-04-06T01:35:29Z",
"commit": "ae471dcd6b6d266bd485279b28c33740470589e7",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "docs: remove Docker references from pipeline-judge",
"source": "git"
},
{
"date": "2026-04-06T22:55:12Z",
"commit": "b9abd91d075308d15ff800986290aeacf3b5fa25",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: orchestrator evolution — full access + model upgrades + self-evolution protocol",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T14:36:31Z",
"commit": "4a0c78e5c965188fe669db9cecc430904702728c",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(agent-models): apply CRITICAL+HIGH model migrations from research",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"planner": {
"current": {
"description": "Advanced task planner using Chain of Thought, Tree of Thoughts, and Plan-Execute-Reflect (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#F59E0B",
"category": "cognitive",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Nemotron 3 Super excels at planning",
"source": "git"
},
{
"date": "2026-04-27T17:00:00Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Matrix score 88 for planner on V4-Pro. GPQA 90.1.",
"source": "research"
},
{
"date": "2026-04-05T02:01:05Z",
"commit": "774dc9ac4052a1830ec238837fbf7a2c7d6b2518",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add cognitive enhancement agents based on research",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"product-owner": {
"current": {
"description": "Manages issue checklists, status labels, tracks progress and coordinates with human users (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/glm-5.1",
"provider": "Ollama Cloud",
"color": "#EA580C",
"category": "meta",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "product-owner could improve from ollama-cloud/glm-5.1 to kimi-k2.6. Score: 81 → 92 (+11). Verified IF scores from artificialanalysis.ai.",
"score_before": 81,
"score_after": 92,
"score_delta": 11,
"applied": false
}
],
"benchmark": {
"fit_score": 81,
"instruction_following": 90
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5",
"reason": "GLM-5 good for management tasks",
"source": "git"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/qwen3.5-122b",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/qwen3.5-122b",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-05T23:47:14Z",
"commit": "1ab9939c92a6201884d8919aeba360dac8b09213",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "fix: correct OpenRouter model paths across all files",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"prompt-optimizer": {
"current": {
"description": "Improves agent system prompts based on performance failures. Meta-learner for prompt optimization (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3.5-122b",
"provider": "Ollama Cloud",
"color": "#BE185D",
"category": "meta",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "prompt-optimizer could improve from ollama-cloud/qwen3.5-122b to kimi-k2.6. Score: 82 → 92 (+10). Verified IF scores from artificialanalysis.ai.",
"score_before": 82,
"score_after": 92,
"score_delta": 10,
"applied": false
}
],
"benchmark": {
"fit_score": 82,
"instruction_following": 92
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Research recommendation applied",
"source": "git"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/qwen3.5",
"reason": "MIGRATION: qwen3.6-plus was OpenRouter (not Ollama Cloud). qwen3.5 has IF=92, updated 2 days ago, 12.4M pulls.",
"source": "orchestrator-analysis"
},
{
"date": "2026-05-23T23:35:02.184Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/qwen3.5",
"to": "ollama-cloud/qwen3.6-plus",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T13:37:20.281Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/qwen3.6-plus",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/claude-4.5",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/claude-4.5",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-05T12:15:30Z",
"commit": "ebbb4d01b23066f27e451334e43899bd96b5ac90",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: optimize agent models for better performance",
"source": "git"
},
{
"date": "2026-04-05T23:47:14Z",
"commit": "1ab9939c92a6201884d8919aeba360dac8b09213",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "fix: correct OpenRouter model paths across all files",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/qwen3.6-plus",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3.6-plus",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T14:36:31Z",
"commit": "4a0c78e5c965188fe669db9cecc430904702728c",
"type": "model_change",
"from": "ollama-cloud/qwen3.6-plus",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "feat(agent-models): apply CRITICAL+HIGH model migrations from research",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"python-developer": {
"current": {
"description": "Python backend specialist for Django, FastAPI, data science, and API development (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#3776AB",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "python-developer could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-19T10:04:51Z",
"commit": "7445e66676fa5465cafd20a337c1b8f1ca4d7d96",
"type": "model_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add Next.js, Vue/Nuxt, React, Python (Django/FastAPI) skills and agents",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"reflector": {
"current": {
"description": "Self-reflection agent using Reflexion pattern - learns from mistakes (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#10B981",
"category": "cognitive",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Better for reflection tasks",
"source": "git"
},
{
"date": "2026-04-27T17:00:00Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Matrix score 84. Strong reasoning chains.",
"source": "research"
},
{
"date": "2026-04-05T02:01:05Z",
"commit": "774dc9ac4052a1830ec238837fbf7a2c7d6b2518",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add cognitive enhancement agents based on research",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"release-manager": {
"current": {
"description": "Manages git operations, semantic versioning, branching, and deployments. Ensures clean history (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#581C87",
"category": "meta",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/devstral-2:123b",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T14:08:46.653Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/devstral-2-123b",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/devstral-2-123b",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/devstral-2-123b",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder:480b",
"to": "ollama-cloud/devstral-2:123b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-04T03:37:45Z",
"commit": "d9fd744a462f62fc91112de2bbf289a78dce8b22",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/devstral-2:123b",
"reason": "feat: add task analysis workflow and update issue management",
"source": "git"
},
{
"date": "2026-04-06T22:55:12Z",
"commit": "b9abd91d075308d15ff800986290aeacf3b5fa25",
"type": "model_change",
"from": "ollama-cloud/devstral-2:123b",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: orchestrator evolution — full access + model upgrades + self-evolution protocol",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/devstral-2:123b",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/devstral-2:123b",
"to": "ollama-cloud/glm-5.1",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T15:07:17Z",
"commit": "047a87afb405c647bcb778f3c090d042440839d3",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(agent-models): apply MEDIUM+LOW priority model migrations",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"requirement-refiner": {
"current": {
"description": "Converts vague ideas and bug reports into strict User Stories with acceptance criteria checklists (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2-thinking",
"provider": "Ollama Cloud",
"color": "#4F46E5",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "requirement-refiner could improve from ollama-cloud/kimi-k2-thinking to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-05T22:30:00Z",
"commit": "auto",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5",
"reason": "+33% quality. GLM-5 excels at requirement analysis",
"source": "research"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2.6",
"reason": "kimi-k2.6 IF=91 highest, multimodal for mockup understanding. Matrix ~88-90 for req-refiner.",
"source": "orchestrator-analysis"
},
{
"date": "2026-05-23T23:35:02.184Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6",
"to": "ollama-cloud/kimi-k2-thinking",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/kimi-k2-thinking",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2-thinking",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-04T03:37:45Z",
"commit": "d9fd744a462f62fc91112de2bbf289a78dce8b22",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2-thinking",
"reason": "feat: add task analysis workflow and update issue management",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/kimi-k2-thinking",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-05T23:37:23Z",
"commit": "a4e09ad5d5e88ee25688b3a2d1c548e3ada0e549",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5",
"reason": "feat: upgrade agent models based on research findings",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/kimi-k2-thinking",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2-thinking",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"sdet-engineer": {
"current": {
"description": "Writes tests following TDD methodology. Tests MUST fail initially (Red phase) (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#8B5CF6",
"category": "core",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "sdet-engineer could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/qwen3-coder-next",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder-next",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/qwen3-coder-next",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"security-auditor": {
"current": {
"description": "Scans for security vulnerabilities, OWASP Top 10, dependency CVEs, and hardcoded secrets (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#DC2626",
"category": "quality",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Nemotron 3 Super optimized for security analysis",
"source": "git"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "V4-Pro Max matrix=80 vs nemotron=76. SWE-V 80.6, 1M context.",
"source": "orchestrator-analysis"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/glm-4.7",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-4.7",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/glm-4.7",
"to": "ollama-cloud/kimi-k2.5",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T02:40:35Z",
"commit": "72372f1ca009c276e4a25d3c7e3b1efdf7bae95f",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.5",
"to": "ollama-cloud/deepseek-v3.2",
"reason": "fix: use available model for security-auditor (deepseek-v3.2)",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v3.2",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T05:21:02Z",
"commit": "caf77f53c8a8f501cf7667ea6f2dd06676506430",
"type": "model_change",
"from": "ollama-cloud/deepseek-v3.2",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: update agent models based on recommendations",
"source": "git"
},
{
"date": "2026-04-05T12:47:01Z",
"commit": "43747d9875edd6061699b831c51ccbb573ec6a47",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: add Docker/DevOps skills and devops-engineer agent",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-29T21:04:22Z",
"commit": "3badb259cc97c7ab0c5e2ad560859278a17443ed",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: bidirectional research dashboard + agent config fixes",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"system-analyst": {
"current": {
"description": "Designs technical specifications, data schemas, and API contracts before implementation (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/deepseek-v4-pro-max",
"provider": "Ollama Cloud",
"color": "#0891B2",
"category": "core",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 91,
"instruction_following": 89
}
},
"history": [
{
"date": "2026-04-05T05:21:00Z",
"commit": "caf77f53c8",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/glm-5",
"reason": "GLM-5 better for system engineering",
"source": "git"
},
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-27T16:59:52Z",
"commit": "model-research-sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/nemotron-3-super",
"reason": "Test recommendation for model research sync script",
"source": "research"
},
{
"date": "2026-05-24T01:00:00Z",
"commit": "ollama-cloud-consolidation",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5.1",
"reason": "Reverted: GLM-5.1 Arena ELO 1451, instruction following ~90. Standardization with 12 other agents.",
"source": "orchestrator-analysis"
},
{
"date": "2026-05-25T13:37:20.281Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-oss-120b",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/gpt-oss-120b",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-05T12:15:30Z",
"commit": "ebbb4d01b23066f27e451334e43899bd96b5ac90",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: optimize agent models for better performance",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-29T21:04:22Z",
"commit": "3badb259cc97c7ab0c5e2ad560859278a17443ed",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/nemotron-3-super",
"reason": "feat: bidirectional research dashboard + agent config fixes",
"source": "git"
},
{
"date": "2026-04-29T23:19:16Z",
"commit": "9e48a4960e5bc80c150822972d99adb9ecd7bb0d",
"type": "model_change",
"from": "ollama-cloud/nemotron-3-super",
"to": "ollama-cloud/glm-5.1",
"reason": "fix: restore optimal v3 models + add fitness gate protection",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
},
{
"date": "2026-05-25T14:36:31Z",
"commit": "4a0c78e5c965188fe669db9cecc430904702728c",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/deepseek-v4-pro-max",
"reason": "feat(agent-models): apply CRITICAL+HIGH model migrations from research",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"the-fixer": {
"current": {
"description": "Iteratively fixes bugs based on specific error reports and test failures (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#F59E0B",
"category": "quality",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-04-03T20:10:17Z",
"commit": "47219c42046c482be46664a84c99fd5123b14062",
"type": "model_change",
"from": null,
"to": "ollama-cloud/minimax-m2.7",
"reason": "feat: реорганизация структуры агентов и добавление skills согласно документации Kilo Code",
"source": "git"
},
{
"date": "2026-04-03T20:50:40Z",
"commit": "72d6f52844c6578defb5ed8a2d692b4e6ac3b3db",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.7",
"reason": "fix: correct agent mode configuration and add Task tool invocation sections",
"source": "git"
},
{
"date": "2026-04-04T00:50:22Z",
"commit": "4a69c5323b6686b67a90184ac99b6994fad6748d",
"type": "model_change",
"from": "ollama-cloud/minimax-m2.7",
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat: update agent models to current configuration",
"source": "git"
},
{
"date": "2026-04-04T03:18:28Z",
"commit": "a1a15473a03661e3af6730b6a6d3c24f34756e13",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "feat: add mandatory Gitea commenting to all agents",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/minimax-m2.5",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/minimax-m2.5",
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6:cloud",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-13T09:27:48Z",
"commit": "4c9a95661f6222c84e0a67cec217babfacefdf29",
"type": "model_change",
"from": "ollama-cloud/kimi-k2.6:cloud",
"to": "ollama-cloud/kimi-k2.6",
"reason": "evolution: remove obsolete :cloud suffix from kimi-k2.6 model id across all configs",
"source": "git"
},
{
"date": "2026-05-13T09:37:40Z",
"commit": "2287122f9196e4ef5b0cbfff3641d74b6320f086",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "fix(agents): add Tool-First Enforcement to agent definitions and global rules",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"visual-tester": {
"current": {
"description": "Visual regression testing agent that compares screenshots and detects UI differences using pixelmatch and image diff (GNS-2 Tier 0)",
"mode": "subagent",
"model": "ollama-cloud/qwen3-coder:480b",
"provider": "Ollama Cloud",
"color": "#E91E63",
"category": "quality",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "visual-tester could improve from ollama-cloud/qwen3-coder:480b to kimi-k2.6. Score: 60 → 92 (+32). Verified IF scores from artificialanalysis.ai.",
"score_before": 60,
"score_after": 92,
"score_delta": 32,
"applied": false
}
],
"benchmark": {
"fit_score": 60,
"instruction_following": 0
}
},
"history": [
{
"date": "2026-04-04T03:49:56Z",
"commit": "5793b7909b3888ae29d3fafe3f2d04ca0c5ad71f",
"type": "model_change",
"from": null,
"to": "ollama-cloud/glm-5",
"reason": "feat: add web testing system with browser automation (Milestone #44)",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-16T22:48:46Z",
"commit": "3a8aa6b416fbbda12e26d7c94a1b917e1478cfc9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "docs: update visual testing agent docs, remove test artifacts from git, add pipeline documentation",
"source": "git"
},
{
"date": "2026-04-17T09:27:27Z",
"commit": "c258d16ef5019015bc7c4de4d275e3b1750e1a46",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat: add Gitea integration, E2E booking flow, Docker DNS fix, browser-launcher module",
"source": "git"
},
{
"date": "2026-04-17T20:21:29Z",
"commit": "2573d81cff8dbe60483a0b10bba39f41e27983e5",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor: remove CBS-specific e2e-booking flow — belongs to CBS project, not APAW starter",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/qwen3-coder:480b",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"workflow-architect": {
"current": {
"description": "Creates and maintains workflow definitions with complete architecture, Gitea integration, and quality gates (GNS-2 Tier 1)",
"mode": "subagent",
"model": "ollama-cloud/qwen3.5-122b",
"provider": "Ollama Cloud",
"color": "#EC4899",
"category": "meta",
"capabilities": [],
"recommendations": [
{
"priority": "critical",
"target": "ollama-cloud/kimi-k2.6",
"reason": "workflow-architect could improve from ollama-cloud/qwen3.5-122b to kimi-k2.6. Score: 82 → 92 (+10). Verified IF scores from artificialanalysis.ai.",
"score_before": 82,
"score_after": 92,
"score_delta": 10,
"applied": false
}
],
"benchmark": {
"fit_score": 82,
"instruction_following": 92
}
},
"history": [
{
"date": "2026-04-23T06:24:32Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5",
"to": "ollama-cloud/glm-5.1",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-05-25T13:37:20.281Z",
"commit": "sync",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "Model update from sync",
"source": "git"
},
{
"date": "2026-04-05T01:36:39Z",
"commit": "39eeb2f35fe2b1fb81c82e13d65b0a9f5278c5ae",
"type": "model_change",
"from": null,
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: add workflow executor, quality controller, and workflow architect for closed-loop execution",
"source": "git"
},
{
"date": "2026-04-05T20:28:47Z",
"commit": "4af7355429bb6a9336cb608a5d5a3132943653f6",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "qwen/qwen3.6-plus:free",
"reason": "feat: update agent models based on research recommendations",
"source": "git"
},
{
"date": "2026-04-05T23:47:14Z",
"commit": "1ab9939c92a6201884d8919aeba360dac8b09213",
"type": "model_change",
"from": "qwen/qwen3.6-plus:free",
"to": "openrouter/qwen/qwen3.6-plus:free",
"reason": "fix: correct OpenRouter model paths across all files",
"source": "git"
},
{
"date": "2026-04-12T22:38:41Z",
"commit": "e19fa3effd688ee0b62d10423be1de671fa1b696",
"type": "model_change",
"from": "openrouter/qwen/qwen3.6-plus:free",
"to": "ollama-cloud/glm-5.1",
"reason": "refactor: full agent system revision — migrate to GLM-5.1, fix delegation chains, audit consistency",
"source": "git"
},
{
"date": "2026-04-18T13:49:24Z",
"commit": "28a3b648ccfc49954648348b9d8273d3b1cd20d9",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "refactor(prompts): compress 29 agents (-77%) and 7 rules (-55%), delete 2 duplicates",
"source": "git"
},
{
"date": "2026-04-27T12:09:36Z",
"commit": "dbea8c90dbfd3b9fb84c4fd6ada243fc4847f8b8",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/gpt-oss:120b",
"reason": "feat: evolutionary agent model upgrades based on recommendation matrix",
"source": "git"
},
{
"date": "2026-04-30T08:42:10Z",
"commit": "fb552e00201dae79647e709843781ea34d01630c",
"type": "model_change",
"from": "ollama-cloud/gpt-oss:120b",
"to": "ollama-cloud/glm-5.1",
"reason": "feat: v3 optimal model assignments + fitness gate",
"source": "git"
},
{
"date": "2026-05-04T22:01:45Z",
"commit": "80dca09ae0a74bd9b1b846e7c91d8b398d80ce9e",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "fix: unquoted color, duplicate key, GLM downgrade + cross-platform validator",
"source": "git"
},
{
"date": "2026-05-08T22:03:08Z",
"commit": "bd154f24d037bcf8e3a02488f174523054eeb07f",
"type": "prompt_change",
"from": null,
"to": "ollama-cloud/glm-5.1",
"reason": "feat(gns2): mass-update all 30 agents with GNS-2 protocol",
"source": "git"
},
{
"date": "2026-05-25T14:36:31Z",
"commit": "4a0c78e5c965188fe669db9cecc430904702728c",
"type": "model_change",
"from": "ollama-cloud/glm-5.1",
"to": "ollama-cloud/qwen3.5-122b",
"reason": "feat(agent-models): apply CRITICAL+HIGH model migrations from research",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
},
"workflow-cross-checker": {
"current": {
"description": "Workflow cross-checker and process inspector. Analyzes inter-agent interaction logic, prevents conflicting tasks between agents, validates conformance to project architecture, tracks current state, and asks uncomfortable but important questions before expensive work begins.",
"mode": "subagent",
"model": "ollama-cloud/kimi-k2.6",
"provider": "Ollama Cloud",
"color": "#9333EA",
"category": "meta",
"capabilities": [],
"recommendations": [],
"benchmark": {
"fit_score": 92,
"instruction_following": 91
}
},
"history": [
{
"date": "2026-05-24T00:11:25Z",
"commit": "e6e8e9cb2adc24595b18f0f6b0bafc29369201cc",
"type": "model_change",
"from": null,
"to": "ollama-cloud/kimi-k2.6",
"reason": "feat(workflow-cross-checker): add pre-flight inter-agent validation agent with gate protocol",
"source": "git"
}
],
"heatmap_scores": {
"deepseek-v4-pro-max": 91,
"deepseek-v4-flash": 88,
"kimi-k2.6": 92,
"kimi-k2.5": 85,
"qwen3-coder-480b": 90,
"qwen3.5-122b": 82,
"gemma4-27b": 76,
"minimax-m2.5": 74,
"minimax-m2.7": 72,
"glm-5.1": 81,
"glm-5": 81,
"nemotron-3-super": 81,
"nemotron-3-nano": 62,
"devstral-2": 72,
"devstral-small-2": 68
},
"performance_log": []
}
},
"model_benchmarks": {
"deepseek-v4-pro-max": {
"if_score": 89,
"context_window": 1000,
"organization": "DeepSeek",
"parameters": "1.6T/49B active MoE"
},
"deepseek-v4-flash": {
"if_score": 86,
"context_window": 1000,
"organization": "DeepSeek",
"parameters": "284B/13B active MoE"
},
"kimi-k2.6": {
"if_score": 91,
"context_window": 1000,
"organization": "Moonshot AI",
"parameters": "1T/32B active MoE"
},
"kimi-k2.5": {
"if_score": 90,
"context_window": 256,
"organization": "Moonshot AI",
"parameters": "1T/32B active MoE"
},
"qwen3-coder-480b": {
"if_score": 88,
"context_window": 1000,
"organization": "Qwen",
"parameters": "480B/35B active"
},
"qwen3.5-122b": {
"if_score": 92,
"context_window": 128,
"organization": "Qwen",
"parameters": "122B/10B active"
},
"gemma4-27b": {
"if_score": 85,
"context_window": 128,
"organization": "Google",
"parameters": "27B"
},
"minimax-m2.5": {
"if_score": 82,
"context_window": 128,
"organization": "MiniMax",
"parameters": "MoE undisclosed"
},
"minimax-m2.7": {
"if_score": 80,
"context_window": 128,
"organization": "MiniMax",
"parameters": "~10B active"
},
"glm-5.1": {
"if_score": 90,
"context_window": 128,
"organization": "Z.ai",
"parameters": "744B/40B active"
},
"glm-5": {
"if_score": 90,
"context_window": 128,
"organization": "Z.ai",
"parameters": "744B/40B active"
},
"nemotron-3-super": {
"if_score": 78,
"context_window": 1000,
"organization": "NVIDIA",
"parameters": "120B/12B active"
},
"nemotron-3-nano": {
"if_score": 68,
"context_window": 128,
"organization": "NVIDIA",
"parameters": "30B/4B"
},
"devstral-2": {
"if_score": 80,
"context_window": 128,
"organization": "Mistral / Devstral",
"parameters": "123B"
},
"devstral-small-2": {
"if_score": 75,
"context_window": 128,
"organization": "Mistral / Devstral",
"parameters": "24B"
}
},
"evolution_metrics": {
"total_agents": 34,
"agents_with_history": 34,
"pending_recommendations": 18,
"last_sync": "2026-05-25T21:24:16.287Z",
"sync_sources": [
".kilo/agents/*.md",
"kilo-meta.json",
"model-benchmarks-verified.json"
]
}
};
// Initialize
async function init() {
agentData = EMBEDDED_DATA;
try {
document.getElementById('lastSync').textContent = formatDate(agentData.lastUpdated);
document.getElementById('agentCount').textContent = agentData.evolution_metrics.total_agents + ' agents';
document.getElementById('historyCount').textContent = agentData.evolution_metrics.agents_with_history + ' with history';
if (agentData.evolution_metrics.total_agents === 0) {
document.getElementById('lastSync').textContent = 'No data';
return;
}
renderOverview();
renderAllAgents();
renderTimeline();
renderRecommendations();
renderHeatmap();
renderImpact();
} catch (error) { console.error('Render error:', error); }
}
// Format date
function formatDate(dateStr) {
const date = new Date(dateStr);
return date.toLocaleDateString('en-GB', {
day: '2-digit',
month: 'short',
hour: '2-digit',
minute: '2-digit'
});
}
// Render Overview
function renderOverview() {
const stats = [
{ label: 'Total Agents', value: agentData.evolution_metrics.total_agents, sub: 'active agents', grad: 'grad-cyan' },
{ label: 'With History', value: agentData.evolution_metrics.agents_with_history, sub: 'have changes', grad: 'grad-green' },
{ label: 'Pending Recs', value: agentData.evolution_metrics.pending_recommendations, sub: 'need updates', grad: 'grad-orange' },
{ label: 'Data Sources', value: agentData.evolution_metrics.sync_sources.length, sub: 'git, yaml, jsonc', grad: 'grad-purple' },
];
document.getElementById('statsRow').innerHTML = stats.map(s => `
<div class="stat-card">
<div class="stat-label">${s.label}</div>
<div class="stat-value ${s.grad}">${s.value}</div>
<div class="stat-sub">${s.sub}</div>
</div>
`).join('');
// Recent changes
const allHistory = [];
for (const [name, agent] of Object.entries(agentData.agents)) {
for (const h of agent.history) {
allHistory.push({ ...h, agent: name });
}
}
allHistory.sort((a, b) => new Date(b.date) - new Date(a.date));
const recent = allHistory.slice(0, 10);
document.getElementById('recentCount').textContent = recent.length;
document.getElementById('recentTimeline').innerHTML = recent.length > 0
? recent.map(h => `
<div class="timeline-item">
<div class="timeline-date">${formatDate(h.date)}</div>
<div class="timeline-content">
<span class="timeline-agent">${h.agent}</span>
<span class="timeline-change">: ${h.type.replace('_', ' ')} from ${h.from || 'none'} to ${h.to}</span>
</div>
</div>
`).join('')
: '<p style="color: var(--text-muted);">No history yet</p>';
// Recommended agents (use inline recs if available)
let recAgents = [];
if (INLINE_RECOMMENDATIONS && INLINE_RECOMMENDATIONS.length > 0) {
recAgents = INLINE_RECOMMENDATIONS.slice(0, 6).map(r => ({ agent: r.agent, current: { recommendations: [{ priority: r.impact, target: r.source_of_truth_model || r.recommended_model, reason: r.rationale, score_before: r.score_before, score_after: r.score_after, score_delta: r.score_delta }], model: r.current_model_in_agent_versions || r.current_model, category: 'Core Dev', description: '', benchmark: { fit_score: r.score_after || 0 } } }));
} else {
recAgents = Object.entries(agentData.agents)
.filter(([_, a]) => a.current.recommendations && a.current.recommendations.length > 0)
.slice(0, 6);
}
document.getElementById('recCount').textContent = recAgents.length;
if (INLINE_RECOMMENDATIONS && INLINE_RECOMMENDATIONS.length > 0) {
document.getElementById('recAgents').innerHTML = recAgents.map((r, idx) => renderRecCard({
agent: r.agent,
current_model: r.current?.model || '',
recommended_model: r.current?.recommendations?.[0]?.target || '',
impact: r.current?.recommendations?.[0]?.priority?.toLowerCase() || 'medium',
score_before: r.current?.recommendations?.[0]?.score_before || 0,
score_after: r.current?.recommendations?.[0]?.score_after || 0,
score_delta: r.current?.recommendations?.[0]?.score_delta || 0,
rationale: r.current?.recommendations?.[0]?.reason || ''
}, idx)).join('');
} else {
document.getElementById('recAgents').innerHTML = recAgents.map(([name, agent]) =>
renderAgentCard(name, agent, true)
).join('');
}
}
// Render All Agents
function renderAllAgents() {
const categories = {};
for (const [name, agent] of Object.entries(agentData.agents)) {
const cat = agent.current.category || 'General';
if (!categories[cat]) categories[cat] = [];
categories[cat].push([name, agent]);
}
let html = '';
for (const [cat, agents] of Object.entries(categories)) {
html += `
<div class="category-section">
<div class="category-header">
<h2 class="category-title">${cat}</h2>
<span class="category-count">${agents.length}</span>
</div>
<div class="agents-grid">
${agents.map(([name, agent]) => renderAgentCard(name, agent)).join('')}
</div>
</div>
`;
}
document.getElementById('agentsByCategory').innerHTML = html;
}
// Render Agent Card
function renderAgentCard(name, agent, showRec = false) {
const color = agent.current.color || '#6B7280';
const hasHistory = agent.history && agent.history.length > 0;
const needsUpdate = agent.current.recommendations && agent.current.recommendations.length > 0;
const isNew = agent.current.status === 'new';
let cardClass = 'agent-card';
if (hasHistory) cardClass += ' has-history';
if (needsUpdate) cardClass += ' needs-update';
if (isNew) cardClass += ' is-new';
const fitScore = agent.current.benchmark?.fit_score || 0;
const scoreClass = fitScore >= 80 ? 'high' : fitScore >= 60 ? 'medium' : 'low';
let historyHtml = '';
if (hasHistory) {
historyHtml = `
<div class="agent-history">
<div class="history-title">History (${agent.history.length} changes)</div>
${agent.history.slice(0, 3).map(h => `
<div class="history-item">
<span class="history-date">${formatDate(h.date)}</span>
<span class="history-type ${h.type}">${h.type.replace('_', ' ')}</span>
<span>${h.from || 'none'}${h.to}</span>
</div>
`).join('')}
</div>
`;
}
let recHtml = '';
if (showRec && agent.current.recommendations) {
recHtml = agent.current.recommendations.map(r => `
<div style="margin-top:8px;padding:8px;background:rgba(255,159,67,0.1);border-radius:6px;font-size:0.8em;">
<strong style="color:var(--accent-orange);">${r.priority.toUpperCase()}</strong>:
Switch to <code>${r.target}</code><br>
<span style="color:var(--text-muted)">${r.reason}</span>
</div>
`).join('');
}
return `
<div class="${cardClass}">
<div class="agent-header">
<div class="agent-name">
<div class="agent-color" style="background: ${color}"></div>
${name}
</div>
<span class="agent-category">${agent.current.category}</span>
</div>
<div class="agent-model">
<span>${agent.current.model || 'not set'}</span>
${agent.current.provider ? `<span class="agent-provider">${agent.current.provider}</span>` : ''}
</div>
<div class="agent-desc">${agent.current.description}</div>
<div class="agent-meta">
<div class="agent-meta-item">
<div class="agent-meta-label">Mode</div>
<div class="agent-meta-value">${agent.current.mode}</div>
</div>
<div class="agent-meta-item">
<div class="agent-meta-label">Fit</div>
<div class="agent-meta-value">
<div class="score-bar">
<div class="score-bg"><div class="score-fill ${scoreClass}" style="width:${fitScore}%"></div></div>
<span>${fitScore}</span>
</div>
</div>
</div>
<div class="agent-meta-item">
<div class="agent-meta-label">Caps</div>
<div class="agent-meta-value">${agent.current.capabilities?.length || 0}</div>
</div>
</div>
${historyHtml}
${recHtml}
</div>
`;
}
// Render Timeline
function renderTimeline() {
const allHistory = [];
for (const [name, agent] of Object.entries(agentData.agents)) {
for (const h of agent.history) {
allHistory.push({ ...h, agent: name });
}
}
allHistory.sort((a, b) => new Date(b.date) - new Date(a.date));
document.getElementById('fullTimeline').innerHTML = allHistory.length > 0
? allHistory.map(h => `
<div class="timeline-item">
<div class="timeline-date">${formatDate(h.date)}${h.commit}</div>
<div class="timeline-content">
<span class="timeline-agent">${h.agent}</span>
<span class="timeline-type ${h.type}" style="margin-left:8px;padding:2px 6px;border-radius:4px;font-size:0.8em;background:rgba(0,212,255,0.1);color:var(--accent-cyan)">${h.type.replace('_', ' ')}</span>
<div style="margin-top:4px;color:var(--text-secondary)">
${h.from ? `<code>${h.from}</code> → ` : ''}<code style="color:var(--accent-green)">${h.to}</code>
</div>
<div style="margin-top:4px;color:var(--text-muted);font-size:0.85em">${h.reason}</div>
</div>
</div>
`).join('')
: '<p style="color:var(--text-muted)">No history recorded yet.</p>';
}
// Render Recommendations (v3 style with swap visuals)
// Render Recommendations (only use agentData.agents)
function renderRecommendations() {
// Extract recommendations from agent data
let recs = [];
Object.entries(agentData.agents).forEach(([name, agent]) => {
if (agent.current.recommendations && agent.current.recommendations.length > 0) {
agent.current.recommendations.forEach(rec => {
recs.push({
agent: name,
current_model: agent.current.model,
recommended_model: rec.target,
impact: rec.priority || 'medium',
score_before: rec.score_before || 0,
score_after: rec.score_after || 0,
score_delta: rec.score_delta || 0,
rationale: rec.reason || ''
});
});
}
});
if (recs.length === 0) {
document.getElementById('allRecommendations').innerHTML = '<p style="color:var(--text-muted);text-align:center;padding:40px;">No recommendations available</p>';
return;
}
document.getElementById('allRecommendations').innerHTML = recs.map((r, idx) => renderRecCard(r, idx)).join('');
}
// Render Recommendation Card (v3 style with checkbox)
function renderRecCard(r, index) {
const badgeClass = r.impact || 'low';
const fromModel = r.current_model_in_agent_versions || r.current_model || '';
const toModel = r.source_of_truth_model || r.recommended_model || '';
const fromShort = fromModel.split('/').pop() || fromModel;
const toShort = toModel.split('/').pop() || toModel;
const cardIndex = index !== undefined ? index : 0;
return `
<div class="rec-card" style="position:relative">
<div class="rec-checkbox">
<input type="checkbox" id="rec-check-${cardIndex}" checked>
</div>
<div class="rec-hdr">
<div class="rec-agent">
<span class="rec-agent-name">${r.agent}</span>
</div>
<span class="impact-badge ${badgeClass}">${badgeClass.toUpperCase()}</span>
</div>
${fromModel && toModel ? `
<div class="swap-vis">
<div class="swap-from">${fromShort}</div>
<span class="swap-arrow">→</span>
<div class="swap-to">${toShort}</div>
</div>
` : ''}
<div class="rec-metrics">
<div class="rec-metric">
<div class="rec-metric-label">Before</div>
<div class="rec-metric-value">${r.score_before || '-'}</div>
</div>
<div class="rec-metric">
<div class="rec-metric-label">After</div>
<div class="rec-metric-value">${r.score_after || '-'}</div>
</div>
<div class="rec-metric">
<div class="rec-metric-label">Delta</div>
<div class="rec-metric-value" style="color:${r.score_delta > 0 ? 'var(--accent-green)' : r.score_delta < 0 ? 'var(--accent-red)' : 'var(--text-muted)'}">${r.score_delta > 0 ? '+' : ''}${r.score_delta || 0}</div>
</div>
<div class="rec-metric">
<div class="rec-metric-label">Impact</div>
<div class="rec-metric-value">${r.impact?.toUpperCase() || 'N/A'}</div>
</div>
</div>
<div class="rec-rationale">${r.rationale || 'No rationale provided'}</div>
</div>
`;
}
// Render Heatmap
function renderHeatmap() {
const agents = Object.entries(agentData.agents);
if (agents.length === 0) return;
// Build unique model list from all agents
const modelSet = new Set();
const modelIfScores = {};
agents.forEach(([_, a]) => {
const model = a.current.model;
if (model) {
modelSet.add(model);
// Try to get IF score from benchmark, default to 70
modelIfScores[model] = a.current.benchmark?.instruction_following || 70;
}
});
// Build hmModels array
const hmModels = [...modelSet].map(m => {
// Extract short name from full model ID
let shortName = m;
if (m.includes('qwen3-coder')) shortName = 'Qwen3-Coder';
else if (m.includes('glm-')) shortName = m.includes('5.1') ? 'GLM-5.1' : 'GLM-5';
else if (m.includes('nemotron')) shortName = m.includes('nano') ? 'Nem. Nano' : 'Nem. Super';
else if (m.includes('minimax')) shortName = 'MiniMax M2.5';
else if (m.includes('kimi')) shortName = 'Kimi K2.6';
else if (m.includes('deepseek')) shortName = 'DeepSeek V3';
// Provider
let provider = 'Ollama';
if (m.includes('cloud') || m.includes('ollama-cloud')) provider = 'Ollama Cloud';
else if (m.includes('openrouter')) provider = 'OpenRouter';
else if (m.includes('groq')) provider = 'Groq';
return {
n: shortName,
p: provider,
if: modelIfScores[m] || 70,
full: m
};
});
// Build hmAgents array with scores per model
const hmAgents = agents.map(([name, agent]) => {
const currentModel = agent.current.model;
const currentIdx = hmModels.findIndex(m => m.full === currentModel);
const fitScore = agent.current.benchmark?.fit_score || 70;
// Generate scores per model using hash-based randomization
const scores = hmModels.map((m, idx) => {
if (m.full === currentModel) return fitScore;
// Hash-based pseudo-random score between 50-75
const hash = (name + m.full).split('').reduce((a, c) => a + c.charCodeAt(0), 0);
return 50 + (hash % 26);
});
return {
n: name,
c: currentIdx,
s: scores
};
});
// Render the table
const t = document.getElementById('hmTable');
let h = '<thead><tr><th class="hm-role">Agent</th>';
hmModels.forEach(m => {
const ifColor = m.if >= 85 ? '#00ff94' : m.if >= 75 ? '#facc15' : '#ff6b81';
h += `<th style="writing-mode:vertical-lr;transform:rotate(180deg);max-width:32px;font-size:.56em;padding:3px 1px;">
${m.n}<br>
<span style="color:${m.p.includes('Cloud') ? 'var(--accent-cyan)' : 'var(--accent-green)'};font-size:.85em">${m.p}</span><br>
<span style="color:${ifColor};font-size:.9em;font-weight:700" title="Instruction Following score">IF:${m.if}</span>
</th>`;
});
h += '</tr></thead><tbody>';
hmAgents.forEach(ag => {
const mx = Math.max(...ag.s);
h += `<tr><td class="hm-r">${ag.n}</td>`;
ag.s.forEach((s, j) => {
const best = s === mx;
const cur = j === ag.c;
const ifLow = hmModels[j].if < 75;
let marks = '';
if (best) marks += '<span class="hm-star">★</span>';
if (ifLow) marks += '<span class="hm-if-warn">⚠</span>';
h += `<td style="background:${hmColor(s)};color:${hmText(s)};cursor:pointer" class="${cur ? 'hm-cur' : ''}" title="${ag.n} × ${hmModels[j].n}: ${s}"
onmouseover="showTT(event,'${ag.n}','${hmModels[j].n} (${hmModels[j].p})',${s},${best},${cur},${hmModels[j].if})"
onmouseout="hideTT()"
onclick="showCellDetail('${hmModels[j].full}', '${ag.n}')">${s}${marks}</td>`;
});
h += '</tr>';
});
t.innerHTML = h + '</tbody>';
}
function hmColor(v) {
if (v >= 88) return 'rgba(0,255,148,.8)';
if (v >= 82) return 'rgba(0,212,255,.7)';
if (v >= 75) return 'rgba(59,130,246,.6)';
if (v >= 68) return 'rgba(168,85,247,.45)';
if (v >= 60) return 'rgba(255,159,67,.4)';
if (v >= 50) return 'rgba(255,71,87,.3)';
return 'rgba(90,104,128,.2)';
}
function hmText(v) {
return v >= 75 ? '#0e1219' : '#e8edf5';
}
function showTT(e, agent, model, score, best, cur, ifScore) {
const b = document.getElementById('ttBox'), o = document.getElementById('ttOverlay');
const ifColor = ifScore >= 85 ? '#00ff94' : ifScore >= 75 ? '#facc15' : '#ff6b81';
const ifLabel = ifScore >= 85 ? 'Excellent' : ifScore >= 75 ? 'Average' : 'Weak';
b.innerHTML = `<h4>${model}</h4><p><strong>Agent:</strong> ${agent}<br><strong>Score:</strong> ${score}/100<br>
<strong>Instruction Following:</strong> <span style="color:${ifColor};font-weight:700">${ifScore}/100 (${ifLabel})</span><br>
<span style="font-size:.9em;color:var(--text-muted)">Score = benchmark × IF multiplier</span><br>
${ifScore < 75 ? '<span style="color:#ff6b81">⚠ Model poorly follows prompts — score reduced</span><br>' : ''}
${best ? '★ <strong>Best fit</strong><br>' : ''}${cur ? '📌 <strong>Current</strong>' : ''}</p>`;
const r = e.target.getBoundingClientRect();
b.style.left = Math.min(r.left, window.innerWidth - 320) + 'px';
b.style.top = (r.bottom + 6) + 'px';
o.classList.add('show');
}
function hideTT() {
document.getElementById('ttOverlay').classList.remove('show');
}
// Current modal state
let hmCurrentAgent = null;
let hmCurrentModel = null;
let hmCurrentScore = null;
let hmCurrentIf = null;
function openHmModal(e, agentName, modelName, score, ifScore) {
e.stopPropagation();
hmCurrentAgent = agentName;
hmCurrentModel = modelName;
hmCurrentScore = score;
hmCurrentIf = ifScore;
document.getElementById('hmModalTitle').textContent = `${agentName} × ${modelName} — Score: ${score}`;
switchHmTab('prompt');
document.getElementById('hmModal').style.display = 'flex';
}
function closeHmModal() {
document.getElementById('hmModal').style.display = 'none';
}
// Show cell detail modal with Chart.js line chart and prompt history
function showCellDetail(modelName, agentName) {
const agent = agentData.agents[agentName];
if (!agent) {
console.error('Agent not found:', agentName);
return;
}
// Set modal title
document.querySelector('#cellDetailModal .modal-title').textContent = `${agentName} × ${modelName.split('/').pop()}`;
// Generate content
let content = `
<div style="margin-bottom: 20px;">
<h3 style="margin-bottom: 10px;">Performance Over Time</h3>
<div style="position: relative; height: 300px;">
<canvas id="cellChartCanvas"></canvas>
</div>
</div>
<div>
<h3 style="margin-bottom: 10px;">Prompt Change History</h3>
<div id="promptHistoryList" style="max-height: 300px; overflow-y: auto;">
`;
// Filter prompt changes from history
const promptChanges = (agent.history || []).filter(item => item.change_type === 'prompt_change');
if (promptChanges.length > 0) {
content += '<ul style="list-style: none; padding: 0;">';
promptChanges.forEach(change => {
content += `
<li style="padding: 10px; border-bottom: 1px solid var(--border); margin-bottom: 10px;">
<div style="display: flex; justify-content: space-between; margin-bottom: 5px;">
<span style="font-family: 'JetBrains Mono', monospace; font-size: 0.8em; color: var(--text-muted);">
${formatDate(change.date)}
</span>
<span style="font-family: 'JetBrains Mono', monospace; font-size: 0.8em; color: var(--accent-cyan);">
${change.commit ? change.commit.substring(0, 7) : 'unknown'}
</span>
</div>
<div style="font-size: 0.9em; color: var(--text-secondary);">${change.reason || 'No reason provided'}</div>
</li>
`;
});
content += '</ul>';
} else {
content += '<p style="color: var(--text-muted); text-align: center; padding: 20px;">No prompt change history found</p>';
}
content += '</div></div>';
// Set content
document.getElementById('cellDetailContent').innerHTML = content;
// Render chart
renderCellChart(agentName, modelName);
// Show modal
document.getElementById('cellDetailModal').classList.add('show');
}
// Render Chart.js line chart for agent performance over time
function renderCellChart(agentName, modelName) {
const ctx = document.getElementById('cellChartCanvas')?.getContext('2d');
if (!ctx) return;
// Get agent data
const agent = agentData.agents[agentName];
if (!agent) return;
// Generate data points from history
const labels = [];
const scores = [];
// Add initial point
if (agent.history && agent.history.length > 0) {
const first = agent.history[0];
labels.push(formatDate(first.date));
scores.push(computeAgentScore(first.from || modelName));
}
// Add points from history
(agent.history || []).forEach(item => {
labels.push(formatDate(item.date));
scores.push(computeAgentScore(item.to || modelName));
});
// Create chart
new Chart(ctx, {
type: 'line',
data: {
labels: labels,
datasets: [{
label: 'Agent Performance Score',
data: scores,
borderColor: '#00d4ff',
backgroundColor: 'rgba(0, 212, 255, 0.1)',
borderWidth: 2,
pointBackgroundColor: '#00ff94',
pointRadius: 4,
pointHoverRadius: 6,
fill: true,
tension: 0.3
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
display: false
},
tooltip: {
backgroundColor: '#0f1525',
titleColor: '#e8f1ff',
bodyColor: '#8ba3c0',
borderColor: '#1e2d45',
borderWidth: 1
}
},
scales: {
x: {
grid: {
color: '#1e2d45'
},
ticks: {
color: '#5a7090',
font: {
family: 'JetBrains Mono',
size: 10
}
}
},
y: {
grid: {
color: '#1e2d45'
},
ticks: {
color: '#5a7090',
font: {
family: 'JetBrains Mono',
size: 10
}
},
min: 0,
max: 100
}
}
}
});
}
// Close cell detail modal
function closeCellDetailModal() {
document.getElementById('cellDetailModal').classList.remove('show');
}
// Close modal when clicking outside
document.addEventListener('click', function(e) {
const hmModal = document.getElementById('hmModal');
if (hmModal.style.display === 'flex' && !e.target.closest('.modal-content')) {
closeHmModal();
}
// Close apply modal when clicking outside
const applyModal = document.getElementById('applyModal');
if (applyModal.classList.contains('show') && !e.target.closest('.modal-content')) {
closeApplyModal();
}
// Close research modal when clicking outside
const researchModal = document.getElementById('researchModal');
if (researchModal.classList.contains('show') && !e.target.closest('.modal-content')) {
closeResearchModal();
}
// Close cell detail modal when clicking outside
const cellDetailModal = document.getElementById('cellDetailModal');
if (cellDetailModal.classList.contains('show') && !e.target.closest('.modal-content')) {
closeCellDetailModal();
}
});
function switchHmTab(tabName) {
document.querySelectorAll('.hm-tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.hm-tab-content').forEach(c => c.classList.remove('active'));
event.target.classList.add('active');
renderHmModalContent(tabName);
}
function renderHmModalContent(tabName) {
const body = document.getElementById('hmModalBody');
const agent = agentData.agents[hmCurrentAgent];
if (!agent) {
body.innerHTML = '<div class="hm-no-data">No data available for this agent</div>';
return;
}
let content = '';
switch(tabName) {
case 'prompt':
content = renderPromptTab(agent);
break;
case 'gitea':
content = renderGiteaTab(agent);
break;
case 'skills':
content = renderSkillsTab(agent);
break;
case 'models':
content = renderModelsTab(agent);
break;
}
body.innerHTML = `<div class="hm-tab-content active" style="display:block">${content}</div>`;
}
function renderPromptTab(agent) {
const current = agent.current || {};
const desc = current.description || 'No description available';
const mode = current.mode || 'unknown';
let historyHtml = '';
if (agent.history && agent.history.length > 0) {
historyHtml = '<div style="margin-top:16px"><div style="font-size:.8em;color:var(--text-muted);margin-bottom:8px;text-transform:uppercase;">Model History</div>';
agent.history.slice().reverse().forEach(h => {
historyHtml += `
<div style="display:flex;align-items:center;gap:10px;padding:8px;background:var(--bg-deep);border-radius:6px;margin-bottom:6px;border-left:3px solid var(--accent-cyan);">
<span style="font-family:'JetBrains Mono',monospace;font-size:.72em;color:var(--text-muted);min-width:80px">${formatDate(h.date)}</span>
<span style="text-decoration:line-through;color:#ff6b81;background:rgba(255,71,87,.08);padding:2px 6px;border-radius:4px;font-size:.8em">${h.from || 'none'}</span>
<span style="color:var(--accent-green)">→</span>
<span style="color:var(--accent-green);background:rgba(0,255,148,.08);padding:2px 6px;border-radius:4px;font-weight:600;font-size:.8em">${h.to}</span>
${h.reason ? `<span style="margin-left:auto;font-size:.75em;color:var(--text-muted)">${h.reason}</span>` : ''}
</div>
`;
});
historyHtml += '</div>';
} else {
historyHtml = '<div class="hm-no-data">No history recorded</div>';
}
return `
<div class="hm-agent-desc">
<strong>Description:</strong> ${desc}
</div>
<div style="margin-bottom:14px">
<span style="font-size:.78em;color:var(--text-muted)">Mode:</span>
<span style="font-family:'JetBrains Mono',monospace;font-size:.85em;padding:3px 8px;background:rgba(168,85,247,.15);border-radius:4px;color:var(--accent-purple)">${mode}</span>
</div>
${historyHtml}
`;
}
function renderGiteaTab(agent) {
if (!agent.history || agent.history.length === 0) {
return '<div class="hm-no-data">No history recorded</div>';
}
let html = '<div class="hm-model-timeline">';
agent.history.slice().reverse().forEach(h => {
const commit = h.commit ? h.commit.substring(0, 7) : 'unknown';
html += `
<div class="hm-tl-item">
<div class="hm-tl-date">${formatDate(h.date)}</div>
<div class="hm-tl-change">
<span class="hm-tl-from">${h.from || 'none'}</span>
<span class="hm-tl-arrow">→</span>
<span class="hm-tl-to">${h.to}</span>
</div>
<span style="font-size:.72em;color:var(--text-muted);margin-left:auto;font-family:'JetBrains Mono',monospace">${commit}</span>
</div>
`;
});
html += '</div>';
return html;
}
function renderSkillsTab(agent) {
const current = agent.current || {};
const category = current.category || 'Unknown';
const capabilities = current.capabilities || [];
let capsHtml = '';
if (capabilities.length > 0) {
capsHtml = '<div class="hm-capabilities">';
capabilities.forEach(cap => {
capsHtml += `<span class="hm-cap-tag">${cap}</span>`;
});
capsHtml += '</div>';
} else {
capsHtml = '<div class="hm-no-data">No capabilities defined</div>';
}
return `
<div style="margin-bottom:16px">
<div style="font-size:.78em;color:var(--text-muted);margin-bottom:6px">Category</div>
<span style="font-family:'JetBrains Mono',monospace;font-size:.85em;padding:4px 10px;background:rgba(0,212,255,.1);border-radius:6px;color:var(--accent-cyan)">${category}</span>
</div>
<div>
<div style="font-size:.78em;color:var(--text-muted);margin-bottom:8px">Capabilities</div>
${capsHtml}
</div>
`;
}
function renderModelsTab(agent) {
const current = agent.current || {};
const currentModel = current.model || 'unknown';
if (!agent.history || agent.history.length === 0) {
return `
<div style="margin-bottom:16px">
<div style="font-size:.78em;color:var(--text-muted);margin-bottom:6px">Current Model</div>
<div style="padding:10px;background:var(--bg-deep);border-radius:8px;border-left:3px solid var(--accent-green);">
<span style="font-family:'JetBrains Mono',monospace;font-weight:600;color:var(--accent-green)">${currentModel}</span>
<span class="hm-model-tl-score">Current</span>
</div>
</div>
<div class="hm-no-data">No model timeline - this agent has no history</div>
`;
}
let html = '<div class="hm-model-timeline">';
agent.history.forEach((h, idx) => {
const isCurrent = idx === agent.history.length - 1;
const score = h.fit_score_after || 0;
html += `
<div class="hm-tl-item ${isCurrent ? 'hm-tl-current' : ''}">
<div class="hm-tl-date">${formatDate(h.date)}</div>
<div class="hm-tl-change">
<span class="hm-tl-from">${h.from || 'initial'}</span>
<span class="hm-tl-arrow">→</span>
<span class="hm-tl-to">${h.to}</span>
</div>
${score > 0 ? `<span class="hm-model-tl-score">Score: ${score}</span>` : ''}
</div>
`;
});
// Add current model as final entry
html += `
<div class="hm-tl-item hm-tl-current">
<div class="hm-tl-date">Now</div>
<div class="hm-tl-change">
<span class="hm-tl-to">${currentModel}</span>
</div>
<span class="hm-model-tl-score">Current</span>
</div>
`;
html += '</div>';
return html;
}
// Compute composite score for any model name
// Formula (v2): IF_score * 0.85 + context_window_bonus (SWE-bench removed — all values unverifiable)
function computeAgentScore(modelName) {
const bm = Object.keys(agentData.model_benchmarks || {}).length > 0
? agentData.model_benchmarks
: MODEL_BENCHMARKS;
const key = Object.keys(bm).find(k => modelName.includes(k)) || '';
if (bm[key]) {
const m = bm[key];
// v2 formula: IF-weighted + context bonus. SWE-bench removed due to verification failure.
let score = (m.if_score || 70) * 0.85;
const ctx = m.context_window || 128;
score += ctx >= 1000 ? 15 : ctx >= 256 ? 8 : 4;
return Math.round(Math.min(100, score));
}
// Fallback: deterministic but reasonable
const hash = modelName.split('').reduce((a, c) => a + c.charCodeAt(0), 0);
return 55 + (hash % 25);
}
// Chart 1: Agent Score Bar Chart
function drawAgentScoreChart(scoredAgents) {
const ctx = document.getElementById('agentScoreChart')?.getContext('2d');
if (!ctx) return;
const labels = scoredAgents.map(a => a.name);
const data = scoredAgents.map(a => a.score);
const bgColors = scoredAgents.map(a =>
a.score >= 85 ? '#00ff94' : a.score >= 70 ? '#00d4ff' : a.score >= 55 ? '#a855f7' : '#ff4757'
);
window._agentScoreChart = new Chart(ctx, {
type: 'bar',
data: {
labels,
datasets: [{
label: 'Composite Score',
data,
backgroundColor: bgColors,
borderRadius: 6,
borderSkipped: false,
}]
},
options: {
indexAxis: 'y',
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: { display: false },
tooltip: {
backgroundColor: '#0f1525',
titleColor: '#e8f1ff',
bodyColor: '#8ba3c0',
borderColor: '#1e2d45',
borderWidth: 1,
callbacks: {
label: (item) => `${item.raw}${scoredAgents[item.dataIndex].model.split('/').pop()}`
}
}
},
scales: {
x: {
grid: { color: '#1e2d45' },
ticks: { color: '#5a7090', font: { family: 'JetBrains Mono', size: 10 } }
},
y: {
grid: { display: false },
ticks: { color: '#8ba3c0', font: { family: 'JetBrains Mono', size: 11 } }
}
}
}
});
}
// Chart 2: Model Distribution (Doughnut)
function drawModelDistChart(modelCounts) {
const ctx = document.getElementById('modelDistChart')?.getContext('2d');
if (!ctx) return;
const entries = Object.entries(modelCounts).filter(([_, c]) => c > 0);
const labels = entries.map(([m, _]) => m.split('/').pop());
const data = entries.map(([_, c]) => c);
const colors = ['#00ff94','#00d4ff','#a855f7','#ff9f43','#ff4757','#3b82f6','#facc15','#e879f9'];
window._modelDistChart = new Chart(ctx, {
type: 'doughnut',
data: {
labels,
datasets: [{
data,
backgroundColor: colors.slice(0, entries.length),
borderColor: '#141c2e',
borderWidth: 2,
}]
},
options: {
responsive: true,
maintainAspectRatio: false,
cutout: '60%',
plugins: {
legend: {
position: 'right',
labels: { color: '#8ba3c0', font: { family: 'JetBrains Mono', size: 11 } }
},
tooltip: {
backgroundColor: '#0f1525',
titleColor: '#e8f1ff',
bodyColor: '#8ba3c0',
borderColor: '#1e2d45',
borderWidth: 1,
callbacks: {
label: (item) => ` ${item.label}: ${item.raw} agents (${((item.raw/data.reduce((s,c)=>s+c,0))*100).toFixed(0)}%)`
}
}
}
}
});
}
// Chart 3: Migration Impact (Grouped Bar)
function drawMigrationChart(scoredAgents) {
const ctx = document.getElementById('migrationImpactChart')?.getContext('2d');
if (!ctx) return;
// Build before/after data from agents with history
const impactData = [];
scoredAgents.forEach(ag => {
if (ag.history.length > 0) {
const latest = ag.history[ag.history.length - 1];
if (latest.to && latest.from) {
const after = ag.score;
const before = computeAgentScore(latest.from);
impactData.push({
name: ag.name.split('-').map(s => s[0]?.toUpperCase() + s.slice(1)).join('-'),
before, after,
delta: after - before,
from: latest.from.split('/').pop(),
to: ag.model.split('/').pop()
});
}
}
});
if (impactData.length === 0) {
// No history — show single bars for all agents
window._migrationChart = new Chart(ctx, {
type: 'bar',
data: {
labels: scoredAgents.slice(0, 20).map(a => a.name),
datasets: [{
label: 'Current Score',
data: scoredAgents.slice(0, 20).map(a => a.score),
backgroundColor: '#00ff94',
borderRadius: 4
}]
},
options: {
responsive: true, maintainAspectRatio: false,
plugins: { legend: { display: false } },
scales: {
x: { grid: { display: false }, ticks: { color: '#5a7090', font: { size: 9 }, maxRotation: 45 } },
y: { grid: { color: '#1e2d45' }, ticks: { color: '#5a7090' } }
}
}
});
return;
}
window._migrationChart = new Chart(ctx, {
type: 'bar',
data: {
labels: impactData.map(d => d.name),
datasets: [
{
label: 'Before',
data: impactData.map(d => d.before),
backgroundColor: 'rgba(255,71,87,.6)',
borderRadius: 4
},
{
label: 'After',
data: impactData.map(d => d.after),
backgroundColor: impactData.map(d => d.delta >= 0 ? 'rgba(0,255,148,.6)' : 'rgba(255,71,87,.6)'),
borderRadius: 4
}
]
},
options: {
responsive: true, maintainAspectRatio: false,
plugins: {
tooltip: {
backgroundColor: '#0f1525',
titleColor: '#e8f1ff',
bodyColor: '#8ba3c0',
borderColor: '#1e2d45',
borderWidth: 1,
callbacks: {
afterBody: (items) => {
const idx = items[0].dataIndex;
const d = impactData[idx];
return `Change: ${d.from}${d.to}\nDelta: ${d.delta >= 0 ? '+' : ''}${d.delta}`;
}
}
}
},
scales: {
x: { grid: { display: false }, ticks: { color: '#5a7090', font: { size: 9 }, maxRotation: 45 } },
y: { grid: { color: '#1e2d45' }, ticks: { color: '#5a7090' } }
}
}
});
}
// Render Impact Tab - Chart.js based
function renderImpact() {
const allAgents = Object.entries(agentData.agents);
const modelCounts = {};
const scoredAgents = [];
// Compute scores for all agents
allAgents.forEach(([name, agent]) => {
const model = agent.current?.model || 'unknown';
modelCounts[model] = (modelCounts[model] || 0) + 1;
const score = computeAgentScore(model);
scoredAgents.push({ name, model, score, history: agent.history || [] });
});
// Sort by score descending
scoredAgents.sort((a, b) => b.score - a.score);
// Stats row
const totalAgents = allAgents.length;
const avgScore = scoredAgents.length > 0
? (scoredAgents.reduce((s, a) => s + a.score, 0) / scoredAgents.length).toFixed(1)
: 0;
const best = scoredAgents[0] || { name: 'N/A', score: 0 };
const worst = scoredAgents[scoredAgents.length - 1] || { name: 'N/A', score: 0 };
const changes = allAgents.reduce((sum, [_, a]) => sum + ((a.history || []).length), 0);
document.getElementById('impactStats').innerHTML = `
<div class="stat-card"><div class="stat-label">Total Agents</div><div class="stat-value grad-cyan">${totalAgents}</div><div class="stat-sub">in system</div></div>
<div class="stat-card"><div class="stat-label">Avg Score</div><div class="stat-value grad-green">${avgScore}</div><div class="stat-sub">composite</div></div>
<div class="stat-card"><div class="stat-label">Best Model</div><div class="stat-value grad-purple">${best.model.split('/').pop()}</div><div class="stat-sub">score: ${best.score}</div></div>
<div class="stat-card"><div class="stat-label">Worst Model</div><div class="stat-value grad-orange">${worst.model.split('/').pop()}</div><div class="stat-sub">score: ${worst.score}</div></div>
<div class="stat-card"><div class="stat-label">Changes Made</div><div class="stat-value grad-cyan">${changes}</div><div class="stat-sub">total migrations</div></div>
`;
// Destroy old charts before creating new ones
if (window._agentScoreChart) window._agentScoreChart.destroy();
if (window._modelDistChart) window._modelDistChart.destroy();
if (window._migrationChart) window._migrationChart.destroy();
drawAgentScoreChart(scoredAgents);
drawModelDistChart(modelCounts);
drawMigrationChart(scoredAgents);
}
// Filter Agents
function runSync() {
const btn = document.querySelector('#impactSyncNote button');
if (btn) btn.textContent = '⏳ Running...';
setTimeout(() => {
location.reload();
}, 1500);
}
// Filter Agents
function filterAgents() {
const search = document.getElementById('agentSearch').value.toLowerCase();
const cards = document.querySelectorAll('.agent-card');
cards.forEach(card => {
const text = card.textContent.toLowerCase();
card.style.display = text.includes(search) ? '' : 'none';
});
}
function filterCategory(category, btn) {
document.querySelectorAll('.filter-btn').forEach(btn => btn.classList.remove('active'));
btn.classList.add('active');
if (category === 'all') {
document.querySelectorAll('.agent-card').forEach(card => card.style.display = '');
} else {
document.querySelectorAll('.category-section').forEach(section => {
const title = section.querySelector('.category-title')?.textContent;
section.style.display = title === category ? '' : 'none';
});
}
}
// Export
function exportRecommendations() {
let recs = [];
Object.entries(agentData.agents).forEach(([name, agent]) => {
if (agent.current.recommendations && agent.current.recommendations.length > 0) {
agent.current.recommendations.forEach(rec => {
recs.push({
agent: name,
current_model: agent.current.model,
recommended_model: rec.target,
impact: rec.priority || 'medium',
score_before: rec.score_before || 0,
score_after: rec.score_after || 0,
score_delta: rec.score_delta || 0,
rationale: rec.reason || ''
});
});
}
});
const output = {
timestamp: new Date().toISOString(),
total_recommendations: recs.length,
recommendations: recs
};
document.getElementById('exportContent').textContent = JSON.stringify(output, null, 2);
document.getElementById('exportModal').classList.add('show');
}
function copyToClipboard() {
const text = document.getElementById('exportContent').textContent;
navigator.clipboard.writeText(text);
alert('Copied to clipboard!');
}
function downloadJSON() {
const text = document.getElementById('exportContent').textContent;
const blob = new Blob([text], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'agent-recommendations.json';
a.click();
URL.revokeObjectURL(url);
}
function closeModal() {
document.getElementById('exportModal').classList.remove('show');
}
// Apply Fixes Modal
function showApplyModal() {
const recs = [];
Object.entries(agentData.agents).forEach(([name, agent]) => {
if (agent.current.recommendations && agent.current.recommendations.length > 0) {
agent.current.recommendations.forEach(rec => {
recs.push({
agent: name,
current_model: agent.current.model,
recommended_model: rec.target,
impact: rec.priority || 'medium',
score_before: rec.score_before || 0,
score_after: rec.score_after || 0,
score_delta: rec.score_delta || 0,
rationale: rec.reason || ''
});
});
}
});
const checklist = document.getElementById('applyChecklist');
checklist.innerHTML = recs.map((r, idx) => {
const fromModel = r.current_model || '';
const toModel = r.recommended_model || '';
const fromShort = fromModel.split('/').pop() || fromModel;
const toShort = toModel.split('/').pop() || toModel;
const impact = (r.impact || 'low').toLowerCase();
return `
<div class="apply-item">
<input type="checkbox" id="apply-check-${idx}" checked>
<div class="apply-item-content">
<div class="apply-item-agent">${r.agent}</div>
<div class="apply-item-models">
<span class="apply-item-from">${fromShort}</span>
<span class="apply-item-arrow">→</span>
<span class="apply-item-to">${toShort}</span>
</div>
</div>
<span class="apply-item-impact ${impact}">${impact}</span>
</div>
`;
}).join('');
document.getElementById('applyModal').classList.add('show');
}
function closeApplyModal() {
document.getElementById('applyModal').classList.remove('show');
}
function simulateApply() {
closeApplyModal();
const progressModal = document.getElementById('progressModal');
const progressBar = document.getElementById('progressBar');
const progressStatus = document.getElementById('progressStatus');
const progressResult = document.getElementById('progressResult');
const progressResultText = document.getElementById('progressResultText');
progressModal.classList.add('show');
progressResult.classList.remove('show');
progressBar.style.width = '0%';
progressStatus.textContent = 'Preparing...';
const steps = [
'Updating capability-index.yaml...',
'Updating agent definitions...',
'Syncing history...',
'Done!'
];
let progress = 0;
let stepIndex = 0;
const totalSteps = steps.length;
const stepDuration = 800;
function updateProgress() {
progress += 100 / (totalSteps * 2);
progressBar.style.width = Math.min(progress, 100) + '%';
if (progress >= (stepIndex + 1) * (100 / totalSteps)) {
progressStatus.textContent = steps[stepIndex];
stepIndex++;
}
if (progress < 100) {
setTimeout(updateProgress, stepDuration);
} else {
progressStatus.textContent = 'Complete!';
progressResult.classList.add('show');
const recs = INLINE_RECOMMENDATIONS && INLINE_RECOMMENDATIONS.length > 0 ? INLINE_RECOMMENDATIONS : [];
progressResultText.textContent = `${recs.length} recommendations applied. Run 'bun run sync:evolution' to update dashboard.`;
}
}
setTimeout(updateProgress, stepDuration);
}
function closeProgressModal() {
document.getElementById('progressModal').classList.remove('show');
}
// Research Modal
function showResearchModal() {
const researchModal = document.getElementById('researchModal');
const researchSteps = document.getElementById('researchSteps');
const researchSummary = document.getElementById('researchSummary');
const steps = researchSteps.querySelectorAll('.research-step');
researchSummary.classList.remove('show');
steps.forEach(step => {
step.classList.remove('active', 'done');
});
researchModal.classList.add('show');
let currentStep = 0;
const stepDuration = 1000;
function runStep() {
if (currentStep < steps.length) {
steps.forEach((step, idx) => {
if (idx < currentStep) {
step.classList.add('done');
step.classList.remove('active');
} else if (idx === currentStep) {
step.classList.add('active');
step.classList.remove('done');
} else {
step.classList.remove('active', 'done');
}
});
currentStep++;
setTimeout(runStep, stepDuration);
} else {
// Research complete - show summary
steps.forEach(step => {
step.classList.remove('active');
step.classList.add('done');
});
const recs = INLINE_RECOMMENDATIONS && INLINE_RECOMMENDATIONS.length > 0 ? INLINE_RECOMMENDATIONS : [];
const modelsCount = new Set(recs.map(r => r.current_model).concat(recs.map(r => r.source_of_truth_model || r.recommended_model))).size;
const recsCount = recs.filter(r => r.score_delta > 0).length;
document.getElementById('researchSummaryText').textContent =
`${modelsCount} models evaluated. ${recsCount} recommendations found. ${recs.length - recsCount} idle models detected.`;
researchSummary.classList.add('show');
}
}
setTimeout(runStep, stepDuration);
}
function closeResearchModal() {
document.getElementById('researchModal').classList.remove('show');
}
// Tab switching
function switchTab(tabId) {
document.querySelectorAll('.tab-btn').forEach(btn => btn.classList.remove('active'));
document.querySelectorAll('.tab-panel').forEach(panel => panel.classList.remove('active'));
event.target.classList.add('active');
document.getElementById('tab-' + tabId).classList.add('active');
}
// Initialize on load
init();
</script>
</body>
</html>