diff --git a/dashboard/dashboard.py b/dashboard/dashboard.py
index e4fb98c..5ec61b9 100644
--- a/dashboard/dashboard.py
+++ b/dashboard/dashboard.py
@@ -140,11 +140,15 @@ body { background: #0b0f17; color: #bcc3cd; font-family: -apple-system, BlinkMac
var MODELS=[
{id:'qwen3.6-35B-A3B',label:'Qwen MoE',gpu:'MoE - Strix Halo',color:'#a78bfa',short:'MoE',domId:'gpu-moe',perf:'35B MoE'},
{id:'qwen3.6-27B-code',label:'Qwen Code',gpu:'Dense - RTX 3090',color:'#f59e0b',short:'Dense',domId:'gpu-dense',perf:'27B Dense'},
- {id:'gemma-4-12b',label:'Gemma 4 12B',gpu:'VLM - RTX 5070',color:'#22c55e',short:'VLM',domId:'gpu-light',perf:'12B VLM'}
+ {id:'gemma-4-12b',label:'Gemma 4 12B',gpu:'VLM - RTX 5070',color:'#22c55e',short:'VLM',domId:'gpu-light',perf:'12B VLM'},
+ {id:'qwen3.5-9b-vlm',label:'Qwen VLM (retired)',gpu:'RTX 5070 (legacy)',color:'#64748b',short:'OLD',domId:'gpu-light',perf:'9B VLM'}
];
// Auto-derived lookups — DO NOT EDIT below
var MC={},ML={},GL={},ids={},lb={},mlab={},mcol={};
MODELS.forEach(function(m){MC[m.id]=m.color;ML[m.id]=m.label;GL[m.id]=m.gpu;ids[m.id]=m.domId;lb[m.id]=m.short;mlab[m.id]=m.perf;mcol[m.id]=m.color;});
+// Safe lookup helpers — fall back to raw model ID if not in MODELS
+function modelLabel(id){return mlab[id]||id||'Unknown';}
+function modelColor(id){return mcol[id]||'#64748b';}
function $(id){return document.getElementById(id);}
function render(data){
@@ -228,8 +232,8 @@ var models=d.models||[],reasons=d.reasons||[],agents=d.agents||[],sum=d.summary|
if(!models.length){$('perf-latency').innerHTML='
Accumulating data...
';return;}
var maxLat=Math.max(...models.map(function(m){return m.latency.p99||0}),1);
var latHTML=models.map(function(m){
-var l=m.latency||{},p50=l.p50||0,p95=l.p95||0,p99=l.p99||0,c=mcol[m.model]||'#38bdf8';
-return'