<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Model Evaluation | David Fernandez</title><link>https://davidferna.com/tags/model-evaluation/</link><atom:link href="https://davidferna.com/tags/model-evaluation/index.xml" rel="self" type="application/rss+xml"/><description>Model Evaluation</description><generator>HugoBlox Kit (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 22 Jun 2026 00:00:00 +0000</lastBuildDate><image><url>https://davidferna.com/media/icon_hu_7c85b1cf69ad867f.png</url><title>Model Evaluation</title><link>https://davidferna.com/tags/model-evaluation/</link></image><item><title>Comparative Analysis of Patch Attack on VLM-Based Autonomous Driving Architectures</title><link>https://davidferna.com/publications/comparative-patch-attack-vlm/</link><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid>https://davidferna.com/publications/comparative-patch-attack-vlm/</guid><description>&lt;p&gt;&lt;style&gt;
/* ── Scroll-reveal: shared across scenario / pipeline / results ── */
@keyframes cpa-up {
from { opacity: 0; transform: translateY(18px) }
to { opacity: 1; transform: translateY(0) }
}
@media screen {
.cpa-reveal { opacity: 0; transform: translateY(18px) }
}
@media screen and (prefers-reduced-motion: no-preference) {
.cpa-reveal.cpa-visible { animation: cpa-up .55s ease forwards }
.cpa-reveal.cpa-d1.cpa-visible { animation-delay: .1s }
.cpa-reveal.cpa-d2.cpa-visible { animation-delay: .25s }
.cpa-reveal.cpa-d3.cpa-visible { animation-delay: .4s }
}
@media screen and (prefers-reduced-motion: reduce) {
.cpa-reveal.cpa-visible { opacity: 1; transform: none; transition: opacity .2s ease }
}
/* ── Bars grow from zero when scrolled into view ── */
.cpa-bar { transform: scaleX(0); transform-origin: left center; }
@media screen and (prefers-reduced-motion: no-preference) {
.cpa-visible .cpa-bar { animation: cpa-grow 1s cubic-bezier(.22,1,.36,1) forwards; }
}
@keyframes cpa-grow { to { transform: scaleX(1); } }
@media screen and (prefers-reduced-motion: reduce) {
.cpa-bar { transform: scaleX(1); }
}
/* ── Highway: car drives forward (up), then veers right into the barrier ── */
@keyframes cpa-drive {
0% { transform: translate(205px,224px) scale(1) rotate(0deg); opacity: 0 }
6% { transform: translate(205px,224px) scale(1) rotate(0deg); opacity: 1 }
30% { transform: translate(203px,182px) scale(.72) rotate(0deg); opacity: 1 }
52% { transform: translate(206px,146px) scale(.55) rotate(0deg); opacity: 1 }
70% { transform: translate(226px,131px) scale(.47) rotate(16deg); opacity: 1 }
84% { transform: translate(246px,126px) scale(.42) rotate(28deg); opacity: 1 }
89% { transform: translate(254px,127px) scale(.40) rotate(34deg); opacity: 1 }
95% { transform: translate(254px,127px) scale(.40) rotate(34deg); opacity: 0 }
100% { transform: translate(254px,127px) scale(.40) rotate(34deg); opacity: 0 }
}
.cpa-veer-car {
transform-box: fill-box;
transform-origin: center;
animation: cpa-drive 5s ease-in infinite;
}
/* ── Crash burst, synced to the moment of impact ── */
@keyframes cpa-crash-flash {
0%,84% { opacity: 0; transform: scale(0) }
88% { opacity: 1; transform: scale(.7) }
93% { opacity: .85; transform: scale(1.5) }
99% { opacity: 0; transform: scale(1.9) }
100% { opacity: 0; transform: scale(0) }
}
.cpa-crash {
transform-box: fill-box;
transform-origin: center;
opacity: 0;
animation: cpa-crash-flash 5s ease-in infinite;
}
@media (prefers-reduced-motion: reduce) {
.cpa-veer-car { animation: none; transform: translate(206px,146px) scale(.6) rotate(0deg) }
.cpa-crash { animation: none; opacity: 0 }
}
&lt;/style&gt;
&lt;div class="not-prose" style="margin:0;padding:0;"&gt;
&lt;div class="pub-grid" style="display:grid;gap:1rem;margin-bottom:1.5rem;"&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#ef4444;margin-bottom:.5rem;"&gt;01 &amp;nbsp;·&amp;nbsp; The Problem&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Cars are starting to use VLMs to make driving decisions, but no one has tested how well they hold up against a &lt;strong style="color:#e2e8f0;"&gt;printed patch on a roadside billboard&lt;/strong&gt;. And because each model answers in its own format, there was no fair way to compare them.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#6366f1;margin-bottom:.5rem;"&gt;02 &amp;nbsp;·&amp;nbsp; The Framework&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;One &lt;strong style="color:#e2e8f0;"&gt;shared translation step&lt;/strong&gt; turns each model&amp;rsquo;s answer into the same kind of signal. That lets one black-box attack and one scoring method work on every model, all tested in the CARLA driving simulator.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#22c55e;margin-bottom:.5rem;"&gt;03 &amp;nbsp;·&amp;nbsp; The Finding&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;All three models fail: the attack works &lt;strong style="color:#e2e8f0;"&gt;73 to 76%&lt;/strong&gt; of the time (12 to 20 times more than normal) and holds for 6 to 8 frames. Each model fails in its own way.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══════════════ THREAT MODEL ═══════════════ --&gt;
&lt;div style="margin-bottom:1.25rem;border-radius:1.25rem;border:1px solid rgba(239,68,68,.2);overflow:hidden;background:linear-gradient(135deg,rgba(239,68,68,.05),rgba(249,115,22,.03));"&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(239,68,68,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;div style="flex-shrink:0;width:2rem;height:2rem;border-radius:.5rem;background:rgba(239,68,68,.15);display:flex;align-items:center;justify-content:center;color:#f87171;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#f87171;margin-bottom:.15rem;"&gt;Threat Model&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;An attacker can print a patch on &lt;strong style="color:#cbd5e1;"&gt;existing road infrastructure&lt;/strong&gt;, such as a roadside ad. They never see inside the model and never touch the car&amp;rsquo;s sensors.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:1rem min(1.5rem,var(--pub-panel-padding));display:grid;gap:.75rem;"&gt;
&lt;div style="padding:.7rem .85rem;border-radius:.7rem;background:rgba(15,23,42,.35);border:1px solid rgba(239,68,68,.12);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#f87171;margin-bottom:.25rem;"&gt;Access&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#cbd5e1;line-height:1.45;"&gt;Send an image, read the text reply. Nothing about the model&amp;rsquo;s internals.&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.7rem .85rem;border-radius:.7rem;background:rgba(15,23,42,.35);border:1px solid rgba(239,68,68,.12);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#f87171;margin-bottom:.25rem;"&gt;Surface&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#cbd5e1;line-height:1.45;"&gt;Existing roadside infrastructure, such as bus-shelter ad panels and billboards.&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.7rem .85rem;border-radius:.7rem;background:rgba(15,23,42,.35);border:1px solid rgba(239,68,68,.12);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#f87171;margin-bottom:.25rem;"&gt;Patch Generation&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#cbd5e1;line-height:1.45;"&gt;About 6,000 quick tries per patch, with no access to the model&amp;rsquo;s internals.&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.7rem .85rem;border-radius:.7rem;background:rgba(15,23,42,.35);border:1px solid rgba(239,68,68,.12);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#f87171;margin-bottom:.25rem;"&gt;Realizability&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#cbd5e1;line-height:1.45;"&gt;Limited to printable colors and smooth patterns, so it holds up as a real print.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══════════════ ATTACK SCENARIO ═══════════════ --&gt;
&lt;div style="display:flex;align-items:center;gap:.6rem;margin:1.5rem 0 .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#94a3b8;white-space:normal;"&gt;The Attack in Action&lt;/div&gt;
&lt;div style="flex:1;height:1px;background:linear-gradient(90deg,rgba(148,163,184,.3),transparent);"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0 0 1rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The study runs two kinds of attack. One &lt;strong style="color:#f87171;"&gt;hides a real hazard&lt;/strong&gt;, such as a pedestrian at a crosswalk. The other, shown here, &lt;strong style="color:#fbbf24;"&gt;forces an unsafe move&lt;/strong&gt; on the highway.&lt;/p&gt;
&lt;!-- ── SCENARIO: HIGHWAY / ACTION ── --&gt;
&lt;div class="cpa-reveal" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(245,158,11,.3);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06);"&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));background:linear-gradient(135deg,rgba(245,158,11,.1),rgba(249,115,22,.05));border-bottom:1px solid rgba(245,158,11,.15);"&gt;
&lt;div style="display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;"&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:#f59e0b;color:#1a1205;padding:.22rem .6rem;border-radius:9999px;"&gt;Action Attack&lt;/span&gt;
&lt;span style="font-size:1.15rem;font-weight:650;color:#e2e8f0;"&gt;Highway: Hijacking the Decision&lt;/span&gt;
&lt;span style="margin-left:auto;font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#fcd34d;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.3);border-radius:.4rem;padding:.15rem .5rem;white-space:normal;"&gt;1024&amp;times;512 patch &amp;middot; 85 km/h&lt;/span&gt;
&lt;/div&gt;
&lt;div style="margin-top:.4rem;font-size:var(--pub-text-body);color:#94a3b8;"&gt;Here the model still sees the road fine. The patch attacks the &lt;strong style="color:#cbd5e1;"&gt;decision&lt;/strong&gt; instead, nudging it to &amp;ldquo;turn right&amp;rdquo; straight into the concrete barrier.&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:1.25rem min(1.5rem,var(--pub-panel-padding));display:grid;gap:1.25rem;align-items:center;"&gt;
&lt;!-- illustration --&gt;
&lt;div style="border-radius:.9rem;overflow:hidden;border:1px solid rgba(245,158,11,.2);background:rgba(15,23,42,.35);"&gt;
&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" viewBox="0 0 380 240" style="display:block;--pub-diagram-width:23.75rem;" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Highway seen from the driver's seat. The ego-vehicle drives forward up the road, then turns right and crashes into the concrete barrier below an adversarial billboard."&gt;
&lt;defs&gt;
&lt;linearGradient id="cpa-sky" x1="0" y1="0" x2="0" y2="1"&gt;&lt;stop offset="0" stop-color="#1e293b"/&gt;&lt;stop offset="1" stop-color="#334155"/&gt;&lt;/linearGradient&gt;
&lt;linearGradient id="cpa-road" x1="0" y1="0" x2="0" y2="1"&gt;&lt;stop offset="0" stop-color="#334155"/&gt;&lt;stop offset="1" stop-color="#475569"/&gt;&lt;/linearGradient&gt;
&lt;radialGradient id="cpa-flash"&gt;&lt;stop offset="0" stop-color="#fef08a"/&gt;&lt;stop offset="35%" stop-color="#f97316"/&gt;&lt;stop offset="70%" stop-color="#ef4444" stop-opacity=".7"/&gt;&lt;stop offset="100%" stop-color="#ef4444" stop-opacity="0"/&gt;&lt;/radialGradient&gt;
&lt;/defs&gt;
&lt;rect x="0" y="0" width="380" height="66" fill="url(#cpa-sky)"/&gt;
&lt;!-- road, widening toward the viewer --&gt;
&lt;polygon points="150,66 230,66 336,240 44,240" fill="url(#cpa-road)"/&gt;
&lt;!-- centre lane dashes + left edge --&gt;
&lt;g stroke="#e2e8f0" stroke-width="2.5" opacity=".45" stroke-dasharray="7 12"&gt;&lt;line x1="190" y1="68" x2="190" y2="240"/&gt;&lt;/g&gt;
&lt;line x1="150" y1="66" x2="44" y2="240" stroke="#fbbf24" stroke-width="1.6" opacity=".55"/&gt;
&lt;!-- concrete barrier along the right edge --&gt;
&lt;polygon points="230,66 244,66 336,240 300,240" fill="#64748b" stroke="#94a3b8" stroke-width="1"/&gt;
&lt;g fill="#475569"&gt;&lt;rect x="236" y="78" width="6" height="10"/&gt;&lt;rect x="252" y="108" width="10" height="15"/&gt;&lt;rect x="278" y="150" width="16" height="22"/&gt;&lt;rect x="300" y="196" width="22" height="28"/&gt;&lt;/g&gt;
&lt;text x="272" y="150" font-size="7.5" fill="#cbd5e1" transform="rotate(69 272 150)" font-family="sans-serif" font-weight="600"&gt;CONCRETE BARRIER&lt;/text&gt;
&lt;!-- adversarial billboard, upper right --&gt;
&lt;g&gt;
&lt;rect x="300" y="22" width="66" height="44" rx="2" fill="#0f172a" stroke="#f59e0b" stroke-width="1.5"/&gt;
&lt;rect x="304" y="26" width="58" height="36" rx="1" fill="#1e293b"/&gt;
&lt;g&gt;
&lt;rect x="310" y="34" width="6" height="6" fill="#ef4444"/&gt;&lt;rect x="316" y="34" width="6" height="6" fill="#22c55e"/&gt;&lt;rect x="322" y="34" width="6" height="6" fill="#3b82f6"/&gt;&lt;rect x="328" y="34" width="6" height="6" fill="#eab308"/&gt;&lt;rect x="334" y="34" width="6" height="6" fill="#a855f7"/&gt;&lt;rect x="340" y="34" width="6" height="6" fill="#06b6d4"/&gt;&lt;rect x="346" y="34" width="6" height="6" fill="#f97316"/&gt;
&lt;rect x="310" y="40" width="6" height="6" fill="#22c55e"/&gt;&lt;rect x="316" y="40" width="6" height="6" fill="#f97316"/&gt;&lt;rect x="322" y="40" width="6" height="6" fill="#ec4899"/&gt;&lt;rect x="328" y="40" width="6" height="6" fill="#ef4444"/&gt;&lt;rect x="334" y="40" width="6" height="6" fill="#84cc16"/&gt;&lt;rect x="340" y="40" width="6" height="6" fill="#3b82f6"/&gt;&lt;rect x="346" y="40" width="6" height="6" fill="#eab308"/&gt;
&lt;rect x="310" y="46" width="6" height="6" fill="#3b82f6"/&gt;&lt;rect x="316" y="46" width="6" height="6" fill="#eab308"/&gt;&lt;rect x="322" y="46" width="6" height="6" fill="#14b8a6"/&gt;&lt;rect x="328" y="46" width="6" height="6" fill="#a855f7"/&gt;&lt;rect x="334" y="46" width="6" height="6" fill="#f97316"/&gt;&lt;rect x="340" y="46" width="6" height="6" fill="#ef4444"/&gt;&lt;rect x="346" y="46" width="6" height="6" fill="#22c55e"/&gt;
&lt;rect x="310" y="52" width="6" height="6" fill="#ec4899"/&gt;&lt;rect x="316" y="52" width="6" height="6" fill="#06b6d4"/&gt;&lt;rect x="322" y="52" width="6" height="6" fill="#eab308"/&gt;&lt;rect x="328" y="52" width="6" height="6" fill="#22c55e"/&gt;&lt;rect x="334" y="52" width="6" height="6" fill="#3b82f6"/&gt;&lt;rect x="340" y="52" width="6" height="6" fill="#f97316"/&gt;&lt;rect x="346" y="52" width="6" height="6" fill="#a855f7"/&gt;
&lt;/g&gt;
&lt;rect x="331" y="66" width="3" height="18" fill="#334155"/&gt;
&lt;/g&gt;
&lt;!-- intended (hijacked) trajectory: forward, then right into the barrier --&gt;
&lt;path d="M 205 224 C 203 182, 205 150, 222 134 C 238 120, 248 122, 255 128" fill="none" stroke="#f59e0b" stroke-width="1.5" stroke-dasharray="4 4" opacity=".3"/&gt;
&lt;polygon points="258,129 250,124 251,132" fill="#f59e0b" opacity=".45"/&gt;
&lt;!-- ego vehicle: drives up, then veers right into the barrier (animated) --&gt;
&lt;g class="cpa-veer-car"&gt;
&lt;rect x="-9" y="-6" width="18" height="12" rx="2.5" fill="#f59e0b" stroke="#fde68a" stroke-width="1"/&gt;
&lt;rect x="-6" y="-4" width="12" height="4.5" rx="1" fill="#1e293b" opacity=".75"/&gt;
&lt;rect x="-8" y="4.5" width="4" height="2" rx="1" fill="#fca5a5"/&gt;&lt;rect x="4" y="4.5" width="4" height="2" rx="1" fill="#fca5a5"/&gt;
&lt;/g&gt;
&lt;!-- crash burst at the barrier --&gt;
&lt;circle class="cpa-crash" cx="254" cy="124" r="12" fill="url(#cpa-flash)"/&gt;
&lt;/svg&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- target output --&gt;
&lt;div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.7rem;"&gt;
&lt;div style="border-radius:.7rem;border:1px solid rgba(34,197,94,.25);background:rgba(34,197,94,.05);padding:.65rem .85rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#22c55e;margin-bottom:.2rem;"&gt;Safe action&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;&amp;ldquo;Maintain speed / accelerate.&amp;rdquo;&lt;/p&gt;
&lt;/div&gt;
&lt;div style="display:flex;justify-content:center;color:#f59e0b;"&gt;&lt;svg width="18" height="18" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M19.5 13.5L12 21m0 0l-7.5-7.5M12 21V3"/&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;div style="border-radius:.7rem;border:1px solid rgba(239,68,68,.3);background:rgba(239,68,68,.05);padding:.65rem .85rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#f87171;margin-bottom:.2rem;"&gt;Hijacked action&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;&amp;ldquo;Turn right to exit the highway.&amp;rdquo;&lt;/p&gt;
&lt;div style="margin-top:.35rem;font-size:var(--pub-text-small);color:#f87171;"&gt;&amp;rarr; steers toward the barrier&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:0 min(1.5rem,var(--pub-panel-padding)) 1.1rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;font-size:var(--pub-text-small);color:#94a3b8;background:rgba(245,158,11,.05);border:1px solid rgba(245,158,11,.15);border-radius:.6rem;padding:.55rem .85rem;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="#fbbf24" stroke-width="2" style="flex-shrink:0;"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M11.42 15.17L17.25 21A2.652 2.652 0 0021 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 11-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 004.486-6.336l-3.276 3.277a3.004 3.004 0 01-2.25-2.25l3.276-3.276a4.5 4.5 0 00-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085"/&gt;&lt;/svg&gt;
&lt;span&gt;The bigger 2 m &amp;times; 1 m billboard patch can be seen from &lt;strong style="color:#cbd5e1;"&gt;about 80 m&lt;/strong&gt; away. It goes after the model&amp;rsquo;s choice of action, not its eyesight: the model still &amp;ldquo;sees&amp;rdquo; the road correctly.&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paper-section-anchor" id="paper-method" tabindex="-1" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(168,85,247,.2);overflow:hidden;"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(168,85,247,.12);background:linear-gradient(135deg,rgba(168,85,247,.1),rgba(99,102,241,.06));display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(168,85,247,.18);display:flex;align-items:center;justify-content:center;color:#c084fc;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9.75 3.104v5.714a2.25 2.25 0 01-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 014.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0112 15a9.065 9.065 0 00-6.23-.693L5 14.5m14.8.8l1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0112 21a48.25 48.25 0 01-8.135-.687c-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#c084fc;margin-bottom:.1rem;"&gt;Methodology&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;A repeating loop that lets one attack test three very different VLMs on equal terms.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 5-stage pipeline strip --&gt;
&lt;div class="pub-scroll" style="padding:.9rem min(1.25rem,var(--pub-panel-padding));border-bottom:1px solid rgba(148,163,184,.06);display:flex;align-items:flex-start;overflow-x:auto;gap:0;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:64px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#1d4ed8,#3b82f6);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(59,130,246,.18);"&gt;01&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#60a5fa;text-align:center;line-height:1.3;white-space:nowrap;"&gt;NES Patch&lt;br&gt;Generation&lt;/div&gt;&lt;/div&gt;
&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(59,130,246,.5),rgba(20,184,166,.5));margin:1.05rem 3px 0;"&gt;&lt;/div&gt;
&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:64px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#0f766e,#14b8a6);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(20,184,166,.18);"&gt;02&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#2dd4bf;text-align:center;line-height:1.3;white-space:nowrap;"&gt;CARLA&lt;br&gt;Simulation&lt;/div&gt;&lt;/div&gt;
&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(20,184,166,.5),rgba(99,102,241,.5));margin:1.05rem 3px 0;"&gt;&lt;/div&gt;
&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:64px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#4338ca,#6366f1);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(99,102,241,.18);"&gt;03&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#818cf8;text-align:center;line-height:1.3;white-space:nowrap;"&gt;VLM&lt;br&gt;Inference&lt;/div&gt;&lt;/div&gt;
&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(99,102,241,.5),rgba(168,85,247,.5));margin:1.05rem 3px 0;"&gt;&lt;/div&gt;
&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:64px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#7e22ce,#a855f7);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(168,85,247,.18);"&gt;04&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#c084fc;text-align:center;line-height:1.3;white-space:nowrap;"&gt;Semantic&lt;br&gt;Homogenization&lt;/div&gt;&lt;/div&gt;
&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(168,85,247,.5),rgba(34,197,94,.5));margin:1.05rem 3px 0;"&gt;&lt;/div&gt;
&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:64px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#15803d,#22c55e);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(34,197,94,.18);"&gt;05&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#4ade80;text-align:center;line-height:1.3;white-space:nowrap;"&gt;Multi-Dim.&lt;br&gt;Evaluation&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- two method cards --&gt;
&lt;div class="pub-grid" style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));display:grid;gap:.9rem;"&gt;
&lt;!-- NES --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(59,130,246,.22);background:rgba(59,130,246,.04);overflow:hidden;"&gt;
&lt;div style="padding:.7rem 1rem;border-bottom:1px solid rgba(59,130,246,.1);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#60a5fa;margin-bottom:.15rem;"&gt;Stage 01 &amp;middot; Black-Box NES&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;"&gt;Tuning the patch without seeing inside the model&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.85rem 1rem;"&gt;
&lt;p style="margin:0 0 .6rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The attack only &lt;strong style="color:#cbd5e1;"&gt;asks the model questions&lt;/strong&gt; and watches its answers, so it never needs the model&amp;rsquo;s inner workings. Step by step, it nudges the patch until the answer matches a phrase the attacker picked.&lt;/p&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;background:rgba(15,23,42,.45);border:1px solid rgba(59,130,246,.18);border-left:3px solid #3b82f6;border-radius:0 .5rem .5rem 0;padding:.6rem .85rem;font-family:ui-monospace,'Cascadia Code',monospace;font-size:var(--pub-text-body);line-height:2;color:#e2e8f0;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;div style="color:#64748b;font-size:var(--pub-text-small);white-space:nowrap;"&gt;// CLIP-space semantic similarity loss&lt;/div&gt;
&lt;div style="white-space:nowrap;"&gt;L &amp;nbsp;=&amp;nbsp; 1 &amp;minus; cos(&amp;thinsp;e&lt;sub style="font-size:.75em;"&gt;gen&lt;/sub&gt;&amp;thinsp;,&amp;thinsp; e&lt;sub style="font-size:.75em;"&gt;target&lt;/sub&gt;&amp;thinsp;)&lt;/div&gt;
&lt;div style="color:#64748b;font-size:var(--pub-text-small);white-space:nowrap;"&gt;// NES gradient estimate over N directions&lt;/div&gt;
&lt;div style="white-space:nowrap;"&gt;&amp;nabla;&lt;sub style="font-size:.75em;"&gt;&amp;theta;&lt;/sub&gt;J &amp;nbsp;&amp;asymp;&amp;nbsp; (N&amp;sigma;)&lt;sup style="font-size:.75em;"&gt;&amp;minus;1&lt;/sup&gt; &amp;Sigma;&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt; J(&amp;theta;+&amp;sigma;&amp;epsilon;&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt;)&amp;thinsp;&amp;epsilon;&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style="display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.6rem;"&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.3);color:#93c5fd;border-radius:.35rem;padding:.1rem .45rem;"&gt;N = 20 dirs &amp;middot; &amp;sigma; = 0.1&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.3);color:#93c5fd;border-radius:.35rem;padding:.1rem .45rem;"&gt;150 iters &amp;middot; ~6k queries&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(59,130,246,.12);border:1px solid rgba(59,130,246,.3);color:#93c5fd;border-radius:.35rem;padding:.1rem .45rem;"&gt;EoT (K=5) &amp;middot; TV smoothing&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Semantic homogenization --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(168,85,247,.22);background:rgba(168,85,247,.04);overflow:hidden;"&gt;
&lt;div style="padding:.7rem 1rem;border-bottom:1px solid rgba(168,85,247,.1);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#c084fc;margin-bottom:.15rem;"&gt;Stage 04 &amp;middot; Semantic Homogenization&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;"&gt;Turning three kinds of answers into one&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.85rem 1rem;"&gt;
&lt;p style="margin:0 0 .7rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The three models answer in different ways: plain sentences, structured data, and step-by-step reasoning. A &lt;strong style="color:#cbd5e1;"&gt;frozen CLIP text encoder&lt;/strong&gt; turns each answer into the same kind of signal, so one attack goal and one set of metrics fit all of them.&lt;/p&gt;
&lt;!-- three-into-one diagram --&gt;
&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" viewBox="0 0 300 132" style="display:block;--pub-diagram-width:18.75rem;" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Three heterogeneous VLM outputs projected through a frozen CLIP text encoder into one shared embedding space"&gt;
&lt;rect x="4" y="6" width="96" height="26" rx="5" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.4)" stroke-width="1"/&gt;
&lt;text x="52" y="18" text-anchor="middle" font-size="8" font-weight="bold" fill="#60a5fa"&gt;Dolphins&lt;/text&gt;
&lt;text x="52" y="28" text-anchor="middle" font-size="6.5" fill="#64748b"&gt;free-form NL&lt;/text&gt;
&lt;rect x="4" y="53" width="96" height="26" rx="5" fill="rgba(168,85,247,.1)" stroke="rgba(168,85,247,.4)" stroke-width="1"/&gt;
&lt;text x="52" y="65" text-anchor="middle" font-size="8" font-weight="bold" fill="#c084fc"&gt;Omni-L&lt;/text&gt;
&lt;text x="52" y="75" text-anchor="middle" font-size="6.5" fill="#64748b"&gt;structured JSON&lt;/text&gt;
&lt;rect x="4" y="100" width="96" height="26" rx="5" fill="rgba(245,158,11,.1)" stroke="rgba(245,158,11,.4)" stroke-width="1"/&gt;
&lt;text x="52" y="112" text-anchor="middle" font-size="8" font-weight="bold" fill="#fbbf24"&gt;LeapVAD&lt;/text&gt;
&lt;text x="52" y="122" text-anchor="middle" font-size="6.5" fill="#64748b"&gt;dual reasoning&lt;/text&gt;
&lt;!-- arrows --&gt;
&lt;line x1="100" y1="19" x2="150" y2="60" stroke="rgba(148,163,184,.45)" stroke-width="1.2"/&gt;
&lt;line x1="100" y1="66" x2="150" y2="66" stroke="rgba(148,163,184,.45)" stroke-width="1.2"/&gt;
&lt;line x1="100" y1="113" x2="150" y2="72" stroke="rgba(148,163,184,.45)" stroke-width="1.2"/&gt;
&lt;!-- CLIP encoder --&gt;
&lt;rect x="152" y="46" width="66" height="40" rx="7" fill="rgba(196,181,253,.12)" stroke="#a855f7" stroke-width="1.3"/&gt;
&lt;text x="185" y="63" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#c084fc"&gt;CLIP text&lt;/text&gt;
&lt;text x="185" y="74" text-anchor="middle" font-size="7" fill="#94a3b8"&gt;encoder &amp;#10052;&lt;/text&gt;
&lt;line x1="218" y1="66" x2="242" y2="66" stroke="rgba(148,163,184,.45)" stroke-width="1.4"/&gt;
&lt;polygon points="240,62 248,66 240,70" fill="rgba(148,163,184,.6)"/&gt;
&lt;!-- shared space --&gt;
&lt;circle cx="272" cy="66" r="24" fill="rgba(34,197,94,.08)" stroke="rgba(34,197,94,.45)" stroke-width="1.2" stroke-dasharray="3,2"/&gt;
&lt;circle cx="266" cy="60" r="2.4" fill="#4ade80"/&gt;&lt;circle cx="280" cy="63" r="2.4" fill="#60a5fa"/&gt;&lt;circle cx="272" cy="74" r="2.4" fill="#fbbf24"/&gt;
&lt;text x="272" y="102" text-anchor="middle" font-size="6.5" fill="#4ade80"&gt;shared space&lt;/text&gt;
&lt;/svg&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- architecture comparison --&gt;
&lt;div style="padding:.2rem min(1.25rem,var(--pub-panel-padding)) 1.2rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#818cf8;margin:.4rem 0 .7rem;"&gt;Stage 03 &amp;middot; Three designs, three different weak spots&lt;/div&gt;
&lt;div class="pub-grid" style="display:grid;gap:.75rem;"&gt;
&lt;!-- Dolphins --&gt;
&lt;div style="border-radius:.9rem;border:1px solid rgba(59,130,246,.3);background:rgba(59,130,246,.05);overflow:hidden;"&gt;
&lt;div style="padding:.55rem .8rem;background:rgba(59,130,246,.12);border-bottom:1px solid rgba(59,130,246,.15);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Dolphins&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#93c5fd;"&gt;cross-attention &amp;middot; CLIP ViT-L/14 + MPT-7B&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#60a5fa;margin-bottom:.25rem;"&gt;Weak to&lt;/div&gt;
&lt;p style="margin:0 0 .55rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Being fooled about what it sees. Corrupted image features pass straight into the language model.&lt;/p&gt;
&lt;div style="display:flex;align-items:baseline;gap:.35rem;"&gt;&lt;span style="font-size:1.15rem;font-weight:800;font-family:ui-monospace,monospace;color:#f87171;"&gt;&amp;minus;71 pp&lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#64748b;"&gt;pedestrian&lt;br&gt;detection&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Omni-L --&gt;
&lt;div style="border-radius:.9rem;border:1px solid rgba(168,85,247,.3);background:rgba(168,85,247,.05);overflow:hidden;"&gt;
&lt;div style="padding:.55rem .8rem;background:rgba(168,85,247,.12);border-bottom:1px solid rgba(168,85,247,.15);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;OmniDrive (Omni-L)&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#d8b4fe;"&gt;MLP projection &amp;middot; multi-view&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#c084fc;margin-bottom:.25rem;"&gt;Weak to&lt;/div&gt;
&lt;p style="margin:0 0 .55rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Everything, evenly. Its fixed way of handling images leaves no safe distance.&lt;/p&gt;
&lt;div style="display:flex;align-items:baseline;gap:.35rem;"&gt;&lt;span style="font-size:1.15rem;font-weight:800;font-family:ui-monospace,monospace;color:#c084fc;"&gt;82&amp;ndash;91%&lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#64748b;"&gt;ASR across&lt;br&gt;all distances&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- LeapVAD --&gt;
&lt;div style="border-radius:.9rem;border:1px solid rgba(245,158,11,.3);background:rgba(245,158,11,.05);overflow:hidden;"&gt;
&lt;div style="padding:.55rem .8rem;background:rgba(245,158,11,.12);border-bottom:1px solid rgba(245,158,11,.15);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;LeapVAD&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#fcd34d;"&gt;dual-process &amp;middot; critical-object attention&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#fbbf24;margin-bottom:.25rem;"&gt;Weak to&lt;/div&gt;
&lt;p style="margin:0 0 .55rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Bad reasoning. It spots objects best of the three, yet still gets talked into unsafe actions.&lt;/p&gt;
&lt;div style="display:flex;align-items:baseline;gap:.35rem;"&gt;&lt;span style="font-size:1.15rem;font-weight:800;font-family:ui-monospace,monospace;color:#fbbf24;"&gt;81.7%&lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#64748b;"&gt;highway ASR&lt;br&gt;(highest)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="paper-results" tabindex="-1" class="paper-section-anchor cpa-reveal" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(251,191,36,.2);overflow:hidden;background:linear-gradient(135deg,rgba(251,191,36,.05),rgba(34,197,94,.03));"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(251,191,36,.15);display:flex;align-items:center;justify-content:center;color:#fbbf24;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#fbbf24;margin-bottom:.1rem;"&gt;Results&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;The weakness is serious, long-lasting, and shows up in every design. We measured it in four ways.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- headline stat band --&gt;
&lt;div class="pub-grid" style="padding:1rem min(1.25rem,var(--pub-panel-padding));display:grid;gap:.75rem;border-bottom:1px solid rgba(251,191,36,.1);"&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#f87171;line-height:1;"&gt;73&amp;ndash;76&lt;span style="font-size:var(--pub-text-body);"&gt;%&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;combined attack&lt;br&gt;success rate&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(249,115,22,.06);border:1px solid rgba(249,115,22,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#fb923c;line-height:1;"&gt;12&amp;ndash;20&lt;span style="font-size:var(--pub-text-body);"&gt;&amp;times;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;increase over&lt;br&gt;benign baseline&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(168,85,247,.06);border:1px solid rgba(168,85,247,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#c084fc;line-height:1;"&gt;6.2&amp;ndash;7.8&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;consecutive frames&lt;br&gt;of failure&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#4ade80;line-height:1;"&gt;p&amp;lt;.001&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;GEE significance,&lt;br&gt;all architectures&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ A · Overall ASR by model &amp; scenario ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fbbf24;margin-bottom:.9rem;"&gt;A &amp;middot; Overall Attack Success (Table I)&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:1rem;"&gt;
&lt;!-- legend --&gt;
&lt;div style="display:flex;gap:1rem;flex-wrap:wrap;font-size:var(--pub-text-small);color:#94a3b8;"&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.35rem;"&gt;&lt;span style="width:.7rem;height:.7rem;border-radius:2px;background:#3b82f6;"&gt;&lt;/span&gt;Crosswalk&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.35rem;"&gt;&lt;span style="width:.7rem;height:.7rem;border-radius:2px;background:#f59e0b;"&gt;&lt;/span&gt;Highway&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.35rem;"&gt;&lt;span style="width:.7rem;height:.7rem;border-radius:2px;background:repeating-linear-gradient(45deg,#64748b,#64748b 2px,transparent 2px,transparent 4px);"&gt;&lt;/span&gt;Benign baseline&lt;/span&gt;
&lt;/div&gt;
&lt;!-- Dolphins --&gt;
&lt;div&gt;
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.3rem;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Dolphins&lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#94a3b8;"&gt;combined &lt;strong style="color:#f87171;font-family:ui-monospace,monospace;"&gt;76.0%&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.3rem;"&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Crosswalk&lt;/span&gt;&lt;div style="flex:1;height:.85rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:73.1%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;73.1&lt;/span&gt;&lt;/div&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Highway&lt;/span&gt;&lt;div style="flex:1;height:.85rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:79.2%;background:linear-gradient(90deg,#d97706,#f59e0b);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#fcd34d;text-align:right;"&gt;79.2&lt;/span&gt;&lt;/div&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Baseline&lt;/span&gt;&lt;div style="flex:1;height:.5rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:3.8%;background:#64748b;border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#64748b;text-align:right;"&gt;3.8&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Omni-L --&gt;
&lt;div&gt;
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.3rem;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;OmniDrive (Omni-L)&lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#94a3b8;"&gt;combined &lt;strong style="color:#f87171;font-family:ui-monospace,monospace;"&gt;73.5%&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.3rem;"&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Crosswalk&lt;/span&gt;&lt;div style="flex:1;height:.85rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:71.8%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;71.8&lt;/span&gt;&lt;/div&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Highway&lt;/span&gt;&lt;div style="flex:1;height:.85rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:75.6%;background:linear-gradient(90deg,#d97706,#f59e0b);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#fcd34d;text-align:right;"&gt;75.6&lt;/span&gt;&lt;/div&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Baseline&lt;/span&gt;&lt;div style="flex:1;height:.5rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:5.1%;background:#64748b;border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#64748b;text-align:right;"&gt;5.1&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- LeapVAD --&gt;
&lt;div&gt;
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.3rem;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;LeapVAD&lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#94a3b8;"&gt;combined &lt;strong style="color:#f87171;font-family:ui-monospace,monospace;"&gt;75.0%&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.3rem;"&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Crosswalk&lt;/span&gt;&lt;div style="flex:1;height:.85rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:68.4%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;68.4&lt;/span&gt;&lt;/div&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Highway&lt;/span&gt;&lt;div style="flex:1;height:.85rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:81.7%;background:linear-gradient(90deg,#d97706,#f59e0b);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#fcd34d;text-align:right;"&gt;81.7&lt;/span&gt;&lt;/div&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#64748b;flex-shrink:0;"&gt;Baseline&lt;/span&gt;&lt;div style="flex:1;height:.5rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="cpa-bar" style="height:100%;width:6.3%;background:#64748b;border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#64748b;text-align:right;"&gt;6.3&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ B · Distance-dependent efficacy ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.08);"&gt;
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fbbf24;"&gt;B &amp;middot; Distance-Dependent Efficacy (Fig. 3, crosswalk)&lt;/div&gt;
&lt;div style="display:flex;gap:.8rem;flex-wrap:wrap;font-size:var(--pub-text-small);"&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;color:#93c5fd;"&gt;&lt;span style="width:.7rem;height:.18rem;background:#3b82f6;border-radius:2px;"&gt;&lt;/span&gt;Dolphins&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;color:#d8b4fe;"&gt;&lt;span style="width:.7rem;height:.18rem;background:#a855f7;border-radius:2px;"&gt;&lt;/span&gt;Omni-L&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;color:#fcd34d;"&gt;&lt;span style="width:.7rem;height:.18rem;background:#f59e0b;border-radius:2px;"&gt;&lt;/span&gt;LeapVAD&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 620 290" style="display:block;--pub-diagram-width:38.75rem;" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Attack success rate versus distance to patch for the crosswalk scenario; all models peak in the 10 to 25 meter critical decision range and fall off at the extremes"&gt;
&lt;!-- critical zone --&gt;
&lt;rect x="192.5" y="30" width="198.75" height="220" fill="rgba(239,68,68,.06)"/&gt;
&lt;text x="291" y="45" text-anchor="middle" font-size="9" fill="rgba(248,113,113,.7)" font-family="sans-serif" font-style="italic"&gt;critical decision range&lt;/text&gt;
&lt;!-- gridlines + y labels --&gt;
&lt;g stroke="rgba(148,163,184,.15)" stroke-width="1"&gt;
&lt;line x1="60" y1="250" x2="590" y2="250"/&gt;&lt;line x1="60" y1="195" x2="590" y2="195"/&gt;&lt;line x1="60" y1="140" x2="590" y2="140"/&gt;&lt;line x1="60" y1="85" x2="590" y2="85"/&gt;&lt;line x1="60" y1="30" x2="590" y2="30"/&gt;
&lt;/g&gt;
&lt;!-- 50% threshold --&gt;
&lt;line x1="60" y1="140" x2="590" y2="140" stroke="rgba(148,163,184,.5)" stroke-width="1" stroke-dasharray="5,4"/&gt;
&lt;text x="64" y="135" font-size="8" fill="#94a3b8" font-family="monospace"&gt;50% threshold&lt;/text&gt;
&lt;g font-size="9" fill="#94a3b8" font-family="monospace" text-anchor="end"&gt;
&lt;text x="54" y="253"&gt;0&lt;/text&gt;&lt;text x="54" y="198"&gt;25&lt;/text&gt;&lt;text x="54" y="143"&gt;50&lt;/text&gt;&lt;text x="54" y="88"&gt;75&lt;/text&gt;&lt;text x="54" y="33"&gt;100&lt;/text&gt;
&lt;/g&gt;
&lt;text x="18" y="145" font-size="9" fill="#94a3b8" font-family="monospace" transform="rotate(-90 18 145)" text-anchor="middle"&gt;Attack Success (%)&lt;/text&gt;
&lt;!-- axes --&gt;
&lt;line x1="60" y1="30" x2="60" y2="250" stroke="rgba(148,163,184,.4)" stroke-width="1.2"/&gt;
&lt;line x1="60" y1="250" x2="590" y2="250" stroke="rgba(148,163,184,.4)" stroke-width="1.2"/&gt;
&lt;g font-size="9" fill="#94a3b8" font-family="monospace" text-anchor="middle"&gt;
&lt;text x="126" y="265"&gt;5&lt;/text&gt;&lt;text x="192.5" y="265"&gt;10&lt;/text&gt;&lt;text x="258.75" y="265"&gt;15&lt;/text&gt;&lt;text x="391.25" y="265"&gt;25&lt;/text&gt;&lt;text x="523.75" y="265"&gt;35&lt;/text&gt;
&lt;/g&gt;
&lt;text x="325" y="283" font-size="9" fill="#94a3b8" font-family="monospace" text-anchor="middle"&gt;Distance to patch (m)&lt;/text&gt;
&lt;!-- Omni-L --&gt;
&lt;polyline points="126,109 192.5,70 258.75,50 391.25,67 523.75,162" fill="none" stroke="#a855f7" stroke-width="2.2"/&gt;
&lt;g fill="#a855f7"&gt;&lt;circle cx="126" cy="109" r="3"/&gt;&lt;circle cx="192.5" cy="70" r="3"/&gt;&lt;circle cx="258.75" cy="50" r="3"/&gt;&lt;circle cx="391.25" cy="67" r="3"/&gt;&lt;circle cx="523.75" cy="162" r="3"/&gt;&lt;/g&gt;
&lt;!-- Dolphins --&gt;
&lt;polyline points="126,129 192.5,92 258.75,54 391.25,85 523.75,169" fill="none" stroke="#3b82f6" stroke-width="2.2"/&gt;
&lt;g fill="#3b82f6"&gt;&lt;circle cx="126" cy="129" r="3"/&gt;&lt;circle cx="192.5" cy="92" r="3"/&gt;&lt;circle cx="258.75" cy="54" r="3"/&gt;&lt;circle cx="391.25" cy="85" r="3"/&gt;&lt;circle cx="523.75" cy="169" r="3"/&gt;&lt;/g&gt;
&lt;!-- LeapVAD --&gt;
&lt;polyline points="126,144 192.5,114 258.75,76 391.25,100 523.75,175" fill="none" stroke="#f59e0b" stroke-width="2.2"/&gt;
&lt;g fill="#f59e0b"&gt;&lt;circle cx="126" cy="144" r="3"/&gt;&lt;circle cx="192.5" cy="114" r="3"/&gt;&lt;circle cx="258.75" cy="76" r="3"/&gt;&lt;circle cx="391.25" cy="100" r="3"/&gt;&lt;circle cx="523.75" cy="175" r="3"/&gt;&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;p style="margin:.5rem 0 0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Every model does poorly at the far and very near extremes, where the patch is either too small or too warped to work. They all peak in the &lt;strong style="color:#f87171;"&gt;10 to 25 m range&lt;/strong&gt;, exactly when the car has to decide whether to brake or steer. Omni-L stays the most vulnerable the whole way, while LeapVAD holds up best when the patch is close.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ═══ C · Temporal persistence ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fbbf24;margin-bottom:.3rem;"&gt;C &amp;middot; Temporal Persistence (Fig. 4, highway)&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The failures &lt;strong style="color:#cbd5e1;"&gt;last; they are not quick flickers&lt;/strong&gt;. Each row shows ten frames, half a second apart, and each cell is one frame&amp;rsquo;s result. Runs of 6 to 8 bad frames outlast any defense that waits 3 to 5 frames before trusting a decision.&lt;/p&gt;
&lt;div style="display:flex;gap:1rem;flex-wrap:wrap;margin-bottom:.7rem;font-size:var(--pub-text-small);"&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.35rem;color:#94a3b8;"&gt;&lt;span style="width:.8rem;height:.8rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;Attack succeeds (unsafe action)&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.35rem;color:#94a3b8;"&gt;&lt;span style="width:.8rem;height:.8rem;border-radius:2px;background:#22c55e;"&gt;&lt;/span&gt;Attack fails (safe action)&lt;/span&gt;
&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.55rem;"&gt;
&lt;!-- Dolphins: run of 7 --&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.6rem;"&gt;
&lt;span class="pub-chart-label" style="font-size:var(--pub-text-heading);font-weight:700;color:#93c5fd;flex-shrink:0;"&gt;Dolphins&lt;/span&gt;
&lt;div style="display:flex;gap:3px;flex:1;"&gt;
&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#22c55e;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#cbd5e1;text-align:right;flex-shrink:0;"&gt;7.4 frames&lt;/span&gt;
&lt;/div&gt;
&lt;!-- Omni-L: run of 6 --&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.6rem;"&gt;
&lt;span class="pub-chart-label" style="font-size:var(--pub-text-heading);font-weight:700;color:#d8b4fe;flex-shrink:0;"&gt;Omni-L&lt;/span&gt;
&lt;div style="display:flex;gap:3px;flex:1;"&gt;
&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#22c55e;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#22c55e;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#cbd5e1;text-align:right;flex-shrink:0;"&gt;6.9 frames&lt;/span&gt;
&lt;/div&gt;
&lt;!-- LeapVAD: run of 8 --&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.6rem;"&gt;
&lt;span class="pub-chart-label" style="font-size:var(--pub-text-heading);font-weight:700;color:#fcd34d;flex-shrink:0;"&gt;LeapVAD&lt;/span&gt;
&lt;div style="display:flex;gap:3px;flex:1;"&gt;
&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#ef4444;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#22c55e;"&gt;&lt;/span&gt;&lt;span style="flex:1;height:1.1rem;border-radius:2px;background:#22c55e;"&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#cbd5e1;text-align:right;flex-shrink:0;"&gt;7.8 frames&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-chart-axis" style="display:flex;justify-content:space-between;font-size:var(--pub-text-small);font-family:monospace;color:#64748b;margin-top:.35rem;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span&gt;F0&lt;/span&gt;&lt;span&gt;F9 &amp;middot; 0.5 s intervals&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ D · Detection collapse ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fbbf24;margin-bottom:.3rem;"&gt;D &amp;middot; Detection Collapse &amp;amp; Scene Corruption (Table II)&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Under attack, the models mostly &lt;strong style="color:#cbd5e1;"&gt;stop spotting pedestrians&lt;/strong&gt;. They don&amp;rsquo;t go quiet, either. They keep describing the scene in smooth, confident language that is simply wrong.&lt;/p&gt;
&lt;div style="display:flex;flex-direction:column;gap:.7rem;"&gt;
&lt;!-- Dolphins --&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.6rem;"&gt;
&lt;span class="pub-chart-label" style="font-size:var(--pub-text-heading);font-weight:700;color:#93c5fd;flex-shrink:0;"&gt;Dolphins&lt;/span&gt;
&lt;div style="flex:1;position:relative;height:1.1rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;
&lt;div style="position:absolute;left:0;top:0;height:100%;width:92.3%;background:rgba(34,197,94,.25);"&gt;&lt;/div&gt;
&lt;div class="cpa-bar" style="position:absolute;left:0;top:0;height:100%;width:21.2%;background:linear-gradient(90deg,#dc2626,#ef4444);border-radius:.3rem 0 0 .3rem;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#94a3b8;text-align:right;flex-shrink:0;"&gt;92.3&amp;rarr;&lt;span style="color:#f87171;"&gt;21.2%&lt;/span&gt; &lt;span style="color:#f87171;font-weight:700;"&gt;&amp;minus;71pp&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;!-- Omni-L --&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.6rem;"&gt;
&lt;span class="pub-chart-label" style="font-size:var(--pub-text-heading);font-weight:700;color:#d8b4fe;flex-shrink:0;"&gt;Omni-L&lt;/span&gt;
&lt;div style="flex:1;position:relative;height:1.1rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;
&lt;div style="position:absolute;left:0;top:0;height:100%;width:89.7%;background:rgba(34,197,94,.25);"&gt;&lt;/div&gt;
&lt;div class="cpa-bar" style="position:absolute;left:0;top:0;height:100%;width:34.8%;background:linear-gradient(90deg,#dc2626,#ef4444);border-radius:.3rem 0 0 .3rem;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#94a3b8;text-align:right;flex-shrink:0;"&gt;89.7&amp;rarr;&lt;span style="color:#f87171;"&gt;34.8%&lt;/span&gt; &lt;span style="color:#f87171;font-weight:700;"&gt;&amp;minus;55pp&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;!-- LeapVAD --&gt;
&lt;div class="pub-chart-row" style="align-items:center;gap:.6rem;"&gt;
&lt;span class="pub-chart-label" style="font-size:var(--pub-text-heading);font-weight:700;color:#fcd34d;flex-shrink:0;"&gt;LeapVAD&lt;/span&gt;
&lt;div style="flex:1;position:relative;height:1.1rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;
&lt;div style="position:absolute;left:0;top:0;height:100%;width:94.6%;background:rgba(34,197,94,.25);"&gt;&lt;/div&gt;
&lt;div class="cpa-bar" style="position:absolute;left:0;top:0;height:100%;width:48.2%;background:linear-gradient(90deg,#dc2626,#ef4444);border-radius:.3rem 0 0 .3rem;"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#94a3b8;text-align:right;flex-shrink:0;"&gt;94.6&amp;rarr;&lt;span style="color:#f87171;"&gt;48.2%&lt;/span&gt; &lt;span style="color:#f87171;font-weight:700;"&gt;&amp;minus;46pp&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="display:flex;gap:1rem;flex-wrap:wrap;margin-top:.6rem;padding-top:.7rem;border-top:1px solid rgba(148,163,184,.1);"&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;"&gt;&lt;span style="color:#64748b;"&gt;bar shows&lt;/span&gt; benign detection &lt;span style="color:#64748b;"&gt;(faded)&lt;/span&gt; &amp;rarr; adversarial &lt;span style="color:#64748b;"&gt;(red)&lt;/span&gt;, pedestrian, crosswalk scenario&lt;/div&gt;
&lt;div style="margin-left:auto;font-size:var(--pub-text-small);color:#94a3b8;"&gt;scene-description quality: BLEU-4 &lt;strong style="color:#cbd5e1;font-family:ui-monospace,monospace;"&gt;0.18&amp;ndash;0.31&lt;/strong&gt; &amp;middot; semantic sim. &lt;strong style="color:#cbd5e1;font-family:ui-monospace,monospace;"&gt;0.49&amp;ndash;0.67&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Research questions answered ═══ --&gt;
&lt;div class="paper-section-anchor" id="paper-impact" tabindex="-1" style="margin-bottom:1.25rem;border-radius:1.25rem;border:1px solid rgba(99,102,241,.2);overflow:hidden;background:linear-gradient(135deg,rgba(99,102,241,.05),rgba(168,85,247,.03));"&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(99,102,241,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(99,102,241,.15);display:flex;align-items:center;justify-content:center;color:#818cf8;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9 5.25h.008v.008H12v-.008z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#818cf8;"&gt;What the Comparison Answers&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:1rem min(1.5rem,var(--pub-panel-padding));display:grid;gap:.75rem;"&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(99,102,241,.18);background:rgba(99,102,241,.04);padding:.8rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#818cf8;margin-bottom:.3rem;"&gt;RQ1 &amp;middot; Spatial &amp;amp; Temporal&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The attack works across the whole 10 to 25 m decision zone and lasts &lt;strong style="color:#e2e8f0;"&gt;6 to 8 frames in a row&lt;/strong&gt;. This is not one-off noise a filter could catch.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(99,102,241,.18);background:rgba(99,102,241,.04);padding:.8rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#818cf8;margin-bottom:.3rem;"&gt;RQ2 &amp;middot; Perception vs Behavior&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;They &lt;strong style="color:#e2e8f0;"&gt;come apart&lt;/strong&gt;. Even under attack, LeapVAD still spots 48% of pedestrians, yet it still acts unsafely. Seeing the object is not the same as making the right choice.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(99,102,241,.18);background:rgba(99,102,241,.04);padding:.8rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#818cf8;margin-bottom:.3rem;"&gt;RQ3 &amp;middot; Scope of Corruption&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;It spreads. Low text-overlap and meaning scores show the patch throws off the model&amp;rsquo;s &lt;strong style="color:#e2e8f0;"&gt;whole understanding of the scene&lt;/strong&gt;, not just one label. The result is fluent but false descriptions.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Implications ═══ --&gt;
&lt;div style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(251,191,36,.2);background:linear-gradient(135deg,rgba(251,191,36,.05),rgba(245,158,11,.03));overflow:hidden;"&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(251,191,36,.15);display:flex;align-items:center;justify-content:center;color:#fbbf24;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18v-5.25m0 0a6.01 6.01 0 001.5-.189m-1.5.189a6.01 6.01 0 01-1.5-.189m3.75 7.478a12.06 12.06 0 01-4.5 0m3.75 2.383a14.406 14.406 0 01-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 10-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#fbbf24;"&gt;Implications&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));display:flex;flex-direction:column;gap:.6rem;"&gt;
&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Security&lt;/span&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;No design is safe on its own.&lt;/strong&gt; All three approaches fail at 73 to 76%. The weakness comes from how today&amp;rsquo;s vision and language parts are joined together, not from one unlucky model.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Design&lt;/span&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Each design trades one weakness for another.&lt;/strong&gt; LeapVAD&amp;rsquo;s focus on key objects makes it better at seeing but easier to mislead in its reasoning. Omni-L&amp;rsquo;s fixed image handling leaves no safe distance. Safety has to be built into both the seeing &lt;em&gt;and&lt;/em&gt; the deciding.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Defense&lt;/span&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Defenses that wait and compare frames won&amp;rsquo;t save you.&lt;/strong&gt; Failures run 6 to 8 frames, so a check that needs 3 to 5 matching frames still locks in the unsafe action before it can object.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- methodology note --&gt;
&lt;div style="display:flex;align-items:flex-start;gap:.6rem;padding:.875rem min(1.1rem,var(--pub-panel-padding));border-radius:.75rem;background:rgba(99,102,241,.05);border:1px solid rgba(99,102,241,.15);margin-bottom:1rem;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="#6366f1" stroke-width="2" style="flex-shrink:0;margin-top:.15rem;"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"/&gt;&lt;/svg&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;All tests ran in the &lt;strong style="color:#6366f1;"&gt;CARLA 0.9.14&lt;/strong&gt; driving simulator (Town04) with a single forward camera at 1920&amp;times;1080, using real-world patch sizes (1 m&amp;sup2; at the crosswalk, 2 m&amp;times;1 m on the billboard). Attack Success Rate is the share of frames where the model picks the unsafe action, tested for statistical significance against normal driving. The line chart and frame strips above illustrate the paper&amp;rsquo;s Figures 3 and 4; the exact numbers are in the PDF.&lt;/p&gt;
&lt;/div&gt;
&lt;script&gt;(function(){if(!("IntersectionObserver" in window))return;var io=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add("cpa-visible");io.unobserve(e.target);}});},{threshold:0});document.querySelectorAll(".cpa-reveal").forEach(function(el){io.observe(el);});}());&lt;/script&gt;
&lt;/p&gt;</description></item><item><title>Understanding Adversarial Transferability in Vision-Language Models for Autonomous Driving: A Cross-Architecture Analysis</title><link>https://davidferna.com/publications/adversarial-transferability-vlm/</link><pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate><guid>https://davidferna.com/publications/adversarial-transferability-vlm/</guid><description>&lt;p&gt;&lt;style&gt;
/* ── Scroll-reveal: scenario cards &amp; methodology phases ── */
@keyframes adv-card-up {
from { opacity: 0; transform: translateY(18px) }
to { opacity: 1; transform: translateY(0) }
}
@media screen {
.adv-scenario .adv-img { opacity: 0; transform: translateY(18px) }
.adv-scenario .adv-matrix { opacity: 0; transform: translateY(14px) }
}
@media screen and (prefers-reduced-motion: no-preference) {
.adv-scenario.adv-visible .adv-img { animation: adv-card-up .6s .1s ease forwards }
.adv-scenario.adv-visible .adv-matrix { animation: adv-card-up .5s .4s ease forwards }
}
@media screen and (prefers-reduced-motion: reduce) {
.adv-scenario.adv-visible .adv-img,
.adv-scenario.adv-visible .adv-matrix { opacity: 1; transform: none; transition: opacity .2s ease }
}
/* ── Methodology pipeline phase reveal ── */
@media screen {
.adv-pipe-phase { opacity: 0; transform: translateY(12px) }
}
@media screen and (prefers-reduced-motion: no-preference) {
.adv-pipe-phase.adv-visible { animation: adv-card-up .45s ease forwards }
}
@media screen and (prefers-reduced-motion: reduce) {
.adv-pipe-phase.adv-visible { opacity: 1; transform: none; transition: opacity .15s ease }
}
/* ── Threat model: normal car (drives through safely) ── */
@keyframes adv-safe {
from { transform: translateX(100vw) }
to { transform: translateX(-20vw) }
}
/* ── Threat model: crash car (sees patch, veers, stops) ── */
/* Uses left:% so the stop position is container-relative and aligns with the flash */
@keyframes adv-crash-drive {
0% { left: 110%; opacity: 1 }
60% { left: 65%; opacity: 1 }
78% { left: 30%; opacity: 1 }
83% { left: 29%; opacity: .85 }
92% { left: 29%; opacity: .2 }
100% { left: 29%; opacity: 0 }
}
/* ── Threat model: red burst at crash point ── */
@keyframes adv-flash {
0%, 76% { opacity: 0; transform: translate(-50%, -50%) scale(0) }
78% { opacity: 1; transform: translate(-50%, -50%) scale(.5) }
82% { opacity: 1; transform: translate(-50%, -50%) scale(2) }
89% { opacity: 0; transform: translate(-50%, -50%) scale(2.5)}
100% { opacity: 0 }
}
.adv-car-safe {
position: absolute; left: 0; will-change: transform;
animation: adv-safe 7s linear infinite;
}
.adv-car-crash {
position: absolute; left: 110%; will-change: left, opacity;
animation: adv-crash-drive 11s ease-in-out infinite;
}
.adv-flash {
position: absolute; pointer-events: none;
animation: adv-flash 11s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
.adv-car-safe { animation: none; transform: translateX(60vw) }
.adv-car-crash { animation: none; left: 30% }
.adv-flash { display: none }
}
&lt;/style&gt;
&lt;div class="not-prose" style="margin:0;padding:0;"&gt;&lt;div class="pub-grid" style="display:grid;gap:1rem;margin-bottom:1.5rem;"&gt;&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.2);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#ef4444;margin-bottom:.5rem;"&gt;01 &amp;nbsp;·&amp;nbsp; The Problem&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Physical adversarial patches on road signs can manipulate VLM driving decisions. Attackers typically don't know which model a vehicle uses, yet that may not matter.&lt;/p&gt;&lt;/div&gt;&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#6366f1;margin-bottom:.5rem;"&gt;02 &amp;nbsp;·&amp;nbsp; The Method&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Three VLMs (Dolphins, OmniDrive, LeapVAD) are evaluated with physically realizable patches in Crosswalk and Highway scenarios using Black-Box NES optimization.&lt;/p&gt;&lt;/div&gt;&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#22c55e;margin-bottom:.5rem;"&gt;03 &amp;nbsp;·&amp;nbsp; The Finding: Transferability&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Patches optimised for one model remain &lt;strong style="color:#e2e8f0;"&gt;73–91% effective&lt;/strong&gt; on others. Architectural diversity alone provides limited real-world protection.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="paper-section-anchor" id="paper-threat" tabindex="-1" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(239,68,68,.2);overflow:hidden;background:linear-gradient(135deg,rgba(239,68,68,.05),rgba(249,115,22,.03));"&gt;
&lt;!-- Header --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(239,68,68,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;div style="flex-shrink:0;width:2rem;height:2rem;border-radius:.5rem;background:rgba(239,68,68,.15);display:flex;align-items:center;justify-content:center;color:#f87171;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;
&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"/&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#f87171;margin-bottom:.15rem;"&gt;Threat Model&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Black-box attacker uses only physical patches on legitimate roadside infrastructure: no model internals, no gradients, no target knowledge required.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Two animation strips side by side --&gt;
&lt;div class="pub-grid" style="gap:0;"&gt;
&lt;!-- Strip 1: no patch → car drives safely --&gt;
&lt;div style="flex:1;min-width:0;display:flex;flex-direction:column;border-right:1px solid rgba(148,163,184,.08);"&gt;
&lt;div style="display:flex;align-items:center;justify-content:center;gap:.35rem;padding:.3rem .6rem;
background:rgba(15,23,42,.6);border-bottom:1px solid rgba(34,197,94,.2);"&gt;
&lt;span style="width:.5rem;height:.5rem;border-radius:50%;background:#22c55e;flex-shrink:0;display:inline-block;"&gt;&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#4ade80;white-space:normal;"&gt;No patch · Drives safely&lt;/span&gt;
&lt;/div&gt;
&lt;div style="position:relative;overflow:hidden;flex:1;"&gt;
&lt;img src="threat-bg-clean.svg" style="width:100%;height:auto;display:block;"
alt="Clean road scene, no adversarial patch on billboard"&gt;
&lt;img class="adv-car-safe" src="car.svg" alt="" aria-hidden="true" style="bottom:10%;width:11%;"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Strip 2: adversarial patch → car is manipulated --&gt;
&lt;div style="flex:1;min-width:0;display:flex;flex-direction:column;"&gt;
&lt;div style="display:flex;align-items:center;justify-content:center;gap:.35rem;padding:.3rem .6rem;
background:rgba(15,23,42,.6);border-bottom:1px solid rgba(239,68,68,.2);"&gt;
&lt;span style="width:.5rem;height:.5rem;border-radius:50%;background:#ef4444;flex-shrink:0;display:inline-block;"&gt;&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#f87171;white-space:normal;"&gt;With patch · Manipulated&lt;/span&gt;
&lt;/div&gt;
&lt;div style="position:relative;overflow:hidden;flex:1;"&gt;
&lt;img src="threat-bg.svg" style="width:100%;height:auto;display:block;"
alt="Road scene with adversarial patch on billboard"&gt;
&lt;img class="adv-car-crash" src="car.svg" alt="" aria-hidden="true" style="bottom:10%;width:11%;"&gt;
&lt;div class="adv-flash"
style="bottom:14%;left:35%;width:2.2rem;height:2.2rem;border-radius:50%;
background:radial-gradient(circle, rgba(239,68,68,.95), rgba(249,115,22,.55) 50%, transparent 75%);"&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paper-section-anchor" id="paper-method" tabindex="-1" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(168,85,247,.2);overflow:hidden;"&gt;&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(168,85,247,.12);background:linear-gradient(135deg,rgba(168,85,247,.1),rgba(99,102,241,.06));display:flex;align-items:center;gap:.75rem;"&gt;&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(168,85,247,.18);display:flex;align-items:center;justify-content:center;color:#c084fc;"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9.75 3.104v5.714a2.25 2.25 0 01-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 014.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0112 15a9.065 9.065 0 00-6.23-.693L5 14.5m14.8.8l1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0112 21a48.25 48.25 0 01-8.135-.687c-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#c084fc;margin-bottom:.1rem;"&gt;Methodology&lt;/div&gt;&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Five-stage pipeline: black-box patch optimization &amp;rarr; physical deployment &amp;rarr; VLM inference &amp;rarr; semantic homogenization &amp;rarr; transfer evaluation&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="pub-scroll" style="padding:.875rem min(1.25rem,var(--pub-panel-padding));border-bottom:1px solid rgba(148,163,184,.06);display:flex;align-items:center;overflow-x:auto;gap:0;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:58px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#c2410c,#f97316);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(249,115,22,.18),0 2px 6px rgba(249,115,22,.3);"&gt;01&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#fb923c;text-align:center;line-height:1.3;white-space:nowrap;"&gt;Patch&lt;br&gt;Generation&lt;/div&gt;&lt;/div&gt;&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(249,115,22,.5),rgba(59,130,246,.5));margin:0 3px;margin-bottom:1.35rem;"&gt;&lt;/div&gt;&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:58px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#1d4ed8,#3b82f6);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(59,130,246,.18),0 2px 6px rgba(59,130,246,.3);"&gt;02&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#60a5fa;text-align:center;line-height:1.3;white-space:nowrap;"&gt;CARLA&lt;br&gt;Deployment&lt;/div&gt;&lt;/div&gt;&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(59,130,246,.5),rgba(99,102,241,.5));margin:0 3px;margin-bottom:1.35rem;"&gt;&lt;/div&gt;&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:58px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#4338ca,#6366f1);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(99,102,241,.18),0 2px 6px rgba(99,102,241,.3);"&gt;03&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#818cf8;text-align:center;line-height:1.3;white-space:nowrap;"&gt;VLM&lt;br&gt;Inference&lt;/div&gt;&lt;/div&gt;&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(99,102,241,.5),rgba(139,92,246,.5));margin:0 3px;margin-bottom:1.35rem;"&gt;&lt;/div&gt;&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:58px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#6d28d9,#8b5cf6);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(139,92,246,.18),0 2px 6px rgba(139,92,246,.3);"&gt;04&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#a78bfa;text-align:center;line-height:1.3;white-space:nowrap;"&gt;CLIP&lt;br&gt;Homogenization&lt;/div&gt;&lt;/div&gt;&lt;div style="flex:1;min-width:.5rem;height:2px;background:linear-gradient(90deg,rgba(139,92,246,.5),rgba(34,197,94,.5));margin:0 3px;margin-bottom:1.35rem;"&gt;&lt;/div&gt;&lt;div style="flex:none;display:flex;flex-direction:column;align-items:center;gap:.3rem;min-width:58px;"&gt;&lt;div style="width:2.1rem;height:2.1rem;border-radius:50%;background:linear-gradient(135deg,#15803d,#22c55e);display:flex;align-items:center;justify-content:center;font-size:var(--pub-text-label);font-weight:800;color:#fff;box-shadow:0 0 0 3px rgba(34,197,94,.18),0 2px 6px rgba(34,197,94,.3);"&gt;05&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);font-weight:600;color:#4ade80;text-align:center;line-height:1.3;white-space:nowrap;"&gt;Transfer&lt;br&gt;Evaluation&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding:1rem min(1.25rem,var(--pub-panel-padding));"&gt;
&lt;div class="pub-grid" style="display:grid;gap:.75rem;align-items:start;"&gt;
&lt;div class="adv-pipe-phase" style="grid-column:1/-1;border-radius:1rem;border:1px solid rgba(249,115,22,.2);background:rgba(249,115,22,.04);overflow:hidden;"&gt;
&lt;div style="padding:.7rem 1rem;border-bottom:1px solid rgba(249,115,22,.1);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fb923c;margin-bottom:.15rem;"&gt;Phase 01 &amp;nbsp;&amp;middot;&amp;nbsp; Patch Generation&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;"&gt;No gradients: NES converges in 6 000 queries&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:.875rem 1rem;gap:1.5rem;align-items:start;"&gt;
&lt;div style="flex:1;min-width:0;"&gt;
&lt;p style="margin:0 0 .625rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Patches are optimised via &lt;strong style="color:#e2e8f0;"&gt;Natural Evolution Strategies&lt;/strong&gt; using a CLIP-based semantic similarity loss over the VLM output command, with no access to model weights or gradients. Expectation over Transformation (EoT) bakes in physical robustness across viewing angles and lighting conditions.&lt;/p&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;background:rgba(15,23,42,.45);border:1px solid rgba(249,115,22,.18);border-left:3px solid #ea580c;border-radius:0 .5rem .5rem 0;padding:.65rem .875rem;font-family:ui-monospace,'Cascadia Code',monospace;font-size:var(--pub-text-body);line-height:2.1;color:#e2e8f0;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;div style="color:#475569;font-size:var(--pub-text-small);white-space:nowrap;"&gt;// Semantic adversarial loss (CLIP text embedding space)&lt;/div&gt;
&lt;div style="white-space:nowrap;margin-bottom:.3rem;"&gt;L(&amp;delta;) &amp;nbsp;=&amp;nbsp; 1 &amp;minus; cos(&amp;thinsp;E&lt;sub style="font-size:.75em;"&gt;T&lt;/sub&gt;(f(x &amp;oplus; M&amp;delta;))&amp;thinsp;,&amp;thinsp; E&lt;sub style="font-size:.75em;"&gt;T&lt;/sub&gt;(f(x))&amp;thinsp;)&lt;/div&gt;
&lt;div style="color:#475569;font-size:var(--pub-text-small);white-space:nowrap;"&gt;// NES gradient estimate &amp;amp; patch update&lt;/div&gt;
&lt;div style="white-space:nowrap;margin-bottom:.3rem;"&gt;g&lt;sub style="font-size:.75em;"&gt;k&lt;/sub&gt; &amp;nbsp;=&amp;nbsp; (n&amp;sigma;)&lt;sup style="font-size:.75em;"&gt;&amp;minus;1&lt;/sup&gt; &amp;sdot; &amp;Sigma;&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt; &amp;epsilon;&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt; &amp;sdot; L(&amp;delta;&lt;sub style="font-size:.75em;"&gt;k&lt;/sub&gt; + &amp;sigma;&amp;epsilon;&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt;)&lt;/div&gt;
&lt;div style="white-space:nowrap;"&gt;&amp;delta;&lt;sub style="font-size:.75em;"&gt;k+1&lt;/sub&gt; &amp;nbsp;=&amp;nbsp; clip(&amp;thinsp;&amp;delta;&lt;sub style="font-size:.75em;"&gt;k&lt;/sub&gt; + &amp;alpha;&amp;sdot;g&lt;sub style="font-size:.75em;"&gt;k&lt;/sub&gt;&amp;thinsp;,&amp;thinsp; [0,1])&lt;/div&gt;
&lt;/div&gt;
&lt;div style="display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.625rem;"&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.3);color:#fb923c;border-radius:.35rem;padding:.1rem .45rem;"&gt;Zero gradient access&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.3);color:#fb923c;border-radius:.35rem;padding:.1rem .45rem;"&gt;6 000 queries / model&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.3);color:#fb923c;border-radius:.35rem;padding:.1rem .45rem;"&gt;EoT physical robustness&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-small);background:rgba(249,115,22,.12);border:1px solid rgba(249,115,22,.3);color:#fb923c;border-radius:.35rem;padding:.1rem .45rem;"&gt;CARLA simulation&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="flex:1;min-width:0;"&gt;
&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" viewBox="0 0 300 235" style="display:block;margin-top:0;--pub-diagram-width:18.75rem;" xmlns="http://www.w3.org/2000/svg"&gt;
&lt;!-- CARLA --&gt;
&lt;rect x="5" y="10" width="85" height="42" rx="6" fill="rgba(249,115,22,.13)" stroke="rgba(249,115,22,.4)" stroke-width="1"/&gt;
&lt;text x="47" y="28" text-anchor="middle" font-size="9" font-weight="bold" fill="#fb923c"&gt;CARLA&lt;/text&gt;
&lt;text x="47" y="40" text-anchor="middle" font-size="7" fill="#94a3b8"&gt;renders patch&lt;/text&gt;
&lt;text x="47" y="50" text-anchor="middle" font-size="6" fill="#64748b"&gt;in simulation&lt;/text&gt;
&lt;!-- VLM --&gt;
&lt;rect x="210" y="10" width="85" height="42" rx="6" fill="rgba(99,102,241,.12)" stroke="rgba(99,102,241,.4)" stroke-width="1"/&gt;
&lt;text x="252" y="28" text-anchor="middle" font-size="9" font-weight="bold" fill="#818cf8"&gt;VLM&lt;/text&gt;
&lt;text x="252" y="40" text-anchor="middle" font-size="7" fill="#94a3b8"&gt;inference on&lt;/text&gt;
&lt;text x="252" y="50" text-anchor="middle" font-size="6" fill="#64748b"&gt;patched scene&lt;/text&gt;
&lt;!-- CLIP Loss --&gt;
&lt;rect x="210" y="92" width="85" height="42" rx="6" fill="rgba(239,68,68,.09)" stroke="rgba(239,68,68,.35)" stroke-width="1"/&gt;
&lt;text x="252" y="110" text-anchor="middle" font-size="9" font-weight="bold" fill="#f87171"&gt;CLIP Loss&lt;/text&gt;
&lt;text x="252" y="122" text-anchor="middle" font-size="7" fill="#94a3b8"&gt;semantic drift&lt;/text&gt;
&lt;text x="252" y="132" text-anchor="middle" font-size="6" fill="#64748b"&gt;cos similarity &amp;darr;&lt;/text&gt;
&lt;!-- NES Update --&gt;
&lt;rect x="5" y="92" width="85" height="42" rx="6" fill="rgba(34,197,94,.08)" stroke="rgba(34,197,94,.35)" stroke-width="1"/&gt;
&lt;text x="47" y="110" text-anchor="middle" font-size="9" font-weight="bold" fill="#4ade80"&gt;NES Update&lt;/text&gt;
&lt;text x="47" y="122" text-anchor="middle" font-size="7" fill="#94a3b8"&gt;evolve patch &amp;delta;&lt;/text&gt;
&lt;text x="47" y="132" text-anchor="middle" font-size="6" fill="#64748b"&gt;gradient-free&lt;/text&gt;
&lt;!-- Center --&gt;
&lt;text x="150" y="63" text-anchor="middle" font-size="13" font-weight="bold" fill="#64748b"&gt;6 000&lt;/text&gt;
&lt;text x="150" y="76" text-anchor="middle" font-size="8" fill="#475569"&gt;queries / model&lt;/text&gt;
&lt;!-- Arrow: CARLA &amp;rarr; VLM --&gt;
&lt;line x1="90" y1="31" x2="207" y2="31" stroke="rgba(249,115,22,.65)" stroke-width="1.5"/&gt;
&lt;polygon points="203,27 211,31 203,35" fill="rgba(249,115,22,.8)"/&gt;
&lt;!-- Arrow: VLM &amp;rarr; CLIP Loss --&gt;
&lt;line x1="252" y1="52" x2="252" y2="89" stroke="rgba(249,115,22,.65)" stroke-width="1.5"/&gt;
&lt;polygon points="248,85 252,93 256,85" fill="rgba(249,115,22,.8)"/&gt;
&lt;!-- Arrow: CLIP Loss &amp;rarr; NES Update --&gt;
&lt;line x1="207" y1="113" x2="93" y2="113" stroke="rgba(249,115,22,.65)" stroke-width="1.5"/&gt;
&lt;polygon points="97,109 89,113 97,117" fill="rgba(249,115,22,.8)"/&gt;
&lt;!-- Arrow: NES Update &amp;rarr; CARLA --&gt;
&lt;line x1="47" y1="92" x2="47" y2="55" stroke="rgba(249,115,22,.65)" stroke-width="1.5"/&gt;
&lt;polygon points="43,59 47,51 51,59" fill="rgba(249,115,22,.8)"/&gt;
&lt;!-- Dashed arrow: NES &amp;rarr; output patch --&gt;
&lt;line x1="47" y1="134" x2="47" y2="167" stroke="rgba(34,197,94,.55)" stroke-width="1.5" stroke-dasharray="3,2"/&gt;
&lt;line x1="47" y1="167" x2="100" y2="167" stroke="rgba(34,197,94,.55)" stroke-width="1.5" stroke-dasharray="3,2"/&gt;
&lt;polygon points="96,163 104,167 96,171" fill="rgba(34,197,94,.65)"/&gt;
&lt;!-- Output patch box --&gt;
&lt;rect x="104" y="156" width="191" height="74" rx="6" fill="rgba(249,115,22,.07)" stroke="rgba(249,115,22,.4)" stroke-width="1" stroke-dasharray="5,2"/&gt;
&lt;text x="198" y="173" text-anchor="middle" font-size="8.5" font-weight="bold" fill="#fb923c"&gt;Adversarial Patch &amp;#948;*&lt;/text&gt;
&lt;!-- Pixel grid: 9 cols x 3 rows, 13x12 each, 1px gap --&gt;
&lt;rect x="110" y="180" width="12" height="12" fill="#f97316" opacity=".85" rx="1.5"/&gt;
&lt;rect x="124" y="180" width="12" height="12" fill="#ef4444" opacity=".5" rx="1.5"/&gt;
&lt;rect x="138" y="180" width="12" height="12" fill="#f97316" opacity=".9" rx="1.5"/&gt;
&lt;rect x="152" y="180" width="12" height="12" fill="#dc2626" opacity=".4" rx="1.5"/&gt;
&lt;rect x="166" y="180" width="12" height="12" fill="#f97316" opacity=".7" rx="1.5"/&gt;
&lt;rect x="180" y="180" width="12" height="12" fill="#ef4444" opacity=".65" rx="1.5"/&gt;
&lt;rect x="194" y="180" width="12" height="12" fill="#dc2626" opacity=".8" rx="1.5"/&gt;
&lt;rect x="208" y="180" width="12" height="12" fill="#f97316" opacity=".55" rx="1.5"/&gt;
&lt;rect x="222" y="180" width="12" height="12" fill="#ef4444" opacity=".7" rx="1.5"/&gt;
&lt;rect x="110" y="194" width="12" height="12" fill="#ef4444" opacity=".6" rx="1.5"/&gt;
&lt;rect x="124" y="194" width="12" height="12" fill="#f97316" opacity=".75" rx="1.5"/&gt;
&lt;rect x="138" y="194" width="12" height="12" fill="#dc2626" opacity=".5" rx="1.5"/&gt;
&lt;rect x="152" y="194" width="12" height="12" fill="#f97316" opacity=".85" rx="1.5"/&gt;
&lt;rect x="166" y="194" width="12" height="12" fill="#ef4444" opacity=".4" rx="1.5"/&gt;
&lt;rect x="180" y="194" width="12" height="12" fill="#dc2626" opacity=".9" rx="1.5"/&gt;
&lt;rect x="194" y="194" width="12" height="12" fill="#f97316" opacity=".6" rx="1.5"/&gt;
&lt;rect x="208" y="194" width="12" height="12" fill="#f97316" opacity=".7" rx="1.5"/&gt;
&lt;rect x="222" y="194" width="12" height="12" fill="#dc2626" opacity=".45" rx="1.5"/&gt;
&lt;rect x="110" y="208" width="12" height="12" fill="#dc2626" opacity=".5" rx="1.5"/&gt;
&lt;rect x="124" y="208" width="12" height="12" fill="#ef4444" opacity=".8" rx="1.5"/&gt;
&lt;rect x="138" y="208" width="12" height="12" fill="#f97316" opacity=".6" rx="1.5"/&gt;
&lt;rect x="152" y="208" width="12" height="12" fill="#ef4444" opacity=".75" rx="1.5"/&gt;
&lt;rect x="166" y="208" width="12" height="12" fill="#f97316" opacity=".5" rx="1.5"/&gt;
&lt;rect x="180" y="208" width="12" height="12" fill="#f97316" opacity=".85" rx="1.5"/&gt;
&lt;rect x="194" y="208" width="12" height="12" fill="#ef4444" opacity=".65" rx="1.5"/&gt;
&lt;rect x="208" y="208" width="12" height="12" fill="#dc2626" opacity=".7" rx="1.5"/&gt;
&lt;rect x="222" y="208" width="12" height="12" fill="#f97316" opacity=".4" rx="1.5"/&gt;
&lt;!-- "physically deployable" label --&gt;
&lt;text x="263" y="192" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;physically&lt;/text&gt;
&lt;text x="263" y="203" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;deployable&lt;/text&gt;
&lt;text x="263" y="214" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;on billboard&lt;/text&gt;
&lt;/svg&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="grid-column:1/-1;display:flex;flex-direction:column;align-items:center;padding:.2rem 0;"&gt;
&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(249,115,22,.55),rgba(249,115,22,.3));"&gt;&lt;/div&gt;
&lt;span style="font-size:var(--pub-text-small);color:rgba(249,115,22,.7);letter-spacing:.06em;padding:.15rem .5rem;white-space:normal;background:rgba(249,115,22,.06);border:1px solid rgba(249,115,22,.2);border-radius:.3rem;"&gt;Adversarial patch &amp;#948;* &amp;nbsp;&amp;rarr;&amp;nbsp; deployed on simulated billboard&lt;/span&gt;
&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(249,115,22,.3),rgba(249,115,22,.55));"&gt;&lt;/div&gt;
&lt;svg width="10" height="6" viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg"&gt;&lt;polygon points="0,0 10,0 5,6" fill="rgba(249,115,22,.65)"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;div class="adv-pipe-phase" style="grid-column:1/-1;border-radius:1rem;border:1px solid rgba(59,130,246,.25);background:rgba(59,130,246,.04);overflow:hidden;"&gt;
&lt;div style="padding:.7rem 1rem;border-bottom:1px solid rgba(59,130,246,.12);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#60a5fa;margin-bottom:.15rem;"&gt;Phase 02 &amp;nbsp;&amp;middot;&amp;nbsp; CARLA Deployment&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;"&gt;Patch rendered on a simulated billboard; VLM vehicles drive past it&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.875rem 1rem;"&gt;
&lt;p style="margin:0 0 .625rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The optimised patch &amp;#948;* is placed on a roadside billboard inside the &lt;strong style="color:#e2e8f0;"&gt;CARLA simulator&lt;/strong&gt;. Ego-vehicles equipped with the target VLMs drive toward it under varied lighting and camera angles, producing the inference inputs for Phase 03.&lt;/p&gt;
&lt;!-- Two deployment scenarios side by side --&gt;
&lt;div class="pub-grid" style="gap:.5rem;"&gt;
&lt;!-- S1: Crosswalk / Bus Stop --&gt;
&lt;div style="flex:1;min-width:0;border-radius:.6rem;overflow:hidden;border:1px solid rgba(59,130,246,.2);"&gt;
&lt;img src="scen-crosswalk.png" style="width:100%;aspect-ratio:1.991;object-fit:cover;object-position:top;display:block;" alt="S1: Bus stop crosswalk scenario"&gt;
&lt;div style="padding:.4rem .6rem;background:rgba(15,23,42,.6);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;color:#60a5fa;text-transform:uppercase;letter-spacing:.07em;"&gt;S1 &amp;middot; Crosswalk: Bus Stop&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.1rem;"&gt;Patch on shelter billboard at pedestrian crossing&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- S2: Highway Billboard --&gt;
&lt;div style="flex:1;min-width:0;border-radius:.6rem;overflow:hidden;border:1px solid rgba(59,130,246,.2);"&gt;
&lt;img src="scen-highway.png" style="width:100%;aspect-ratio:1.991;object-fit:cover;object-position:top;display:block;" alt="S2: Highway billboard scenario"&gt;
&lt;div style="padding:.4rem .6rem;background:rgba(15,23,42,.6);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;color:#60a5fa;text-transform:uppercase;letter-spacing:.07em;"&gt;S2 &amp;middot; Highway: Billboard&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.1rem;"&gt;Patch on roadside billboard at highway speed&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="grid-column:1/-1;display:flex;flex-direction:column;align-items:center;padding:.2rem 0;"&gt;
&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(59,130,246,.55),rgba(99,102,241,.3));"&gt;&lt;/div&gt;
&lt;span style="font-size:var(--pub-text-small);color:rgba(129,140,248,.85);letter-spacing:.06em;padding:.15rem .5rem;white-space:normal;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);border-radius:.3rem;"&gt;Patched driving frames &amp;nbsp;&amp;rarr;&amp;nbsp; fed to all three VLM architectures&lt;/span&gt;
&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(99,102,241,.3),rgba(99,102,241,.55));"&gt;&lt;/div&gt;
&lt;svg width="10" height="6" viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg"&gt;&lt;polygon points="0,0 10,0 5,6" fill="rgba(99,102,241,.65)"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;div class="adv-pipe-phase" style="grid-column:1/-1;border-radius:1rem;border:1px solid rgba(99,102,241,.25);background:rgba(99,102,241,.04);overflow:hidden;"&gt;
&lt;div style="padding:.7rem 1rem;border-bottom:1px solid rgba(99,102,241,.12);display:flex;flex-wrap:wrap;align-items:flex-end;gap:.4rem 1rem;"&gt;
&lt;div style="flex:1 1 15rem;min-width:0;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#818cf8;margin-bottom:.15rem;"&gt;Phase 03 &amp;nbsp;&amp;middot;&amp;nbsp; VLM Inference&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;"&gt;Three architectures receive the patched scene and produce driving decisions&lt;/div&gt;
&lt;/div&gt;
&lt;div style="display:flex;flex-wrap:wrap;gap:.7rem;font-size:var(--pub-text-small);color:#64748b;align-items:center;padding-bottom:.1rem;"&gt;
&lt;span&gt;&amp;#10052; frozen&lt;/span&gt;
&lt;span&gt;&amp;#128293; trained / fine-tuned&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;"&gt;&lt;span style="width:.55rem;height:.55rem;background:#f97316;border-radius:2px;display:inline-block;"&gt;&lt;/span&gt;patch entry point&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.875rem 1rem;display:flex;flex-direction:column;gap:.875rem;"&gt;
&lt;!-- ═══════════ (a) Dolphins ═══════════ --&gt;
&lt;div style="border-radius:.875rem;border:2px solid rgba(99,102,241,.4);background:rgba(99,102,241,.05);overflow:hidden;"&gt;
&lt;div style="padding:.5rem .75rem;background:rgba(99,102,241,.12);border-bottom:1px solid rgba(99,102,241,.12);display:flex;align-items:center;justify-content:space-between;gap:.4rem;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;div style="display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Dolphins&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#818cf8;"&gt;OpenFlamingo-based &amp;middot; video VLM&lt;/div&gt;&lt;/div&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:700;background:#6366f1;color:#fff;border-radius:9999px;padding:.1rem .4rem;letter-spacing:.04em;"&gt;CLIP shared&lt;/span&gt;
&lt;/div&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 880 272" style="display:block;--pub-diagram-width:55rem;" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Dolphins architecture: video frames to CLIP ViT-L/14, Perceiver Resampler, gated cross-attention into frozen MPT-7B, driving decision output"&gt;
&lt;!-- input: stacked video frames --&gt;
&lt;rect x="12" y="86" width="64" height="44" rx="3" fill="rgba(30,41,59,.5)" stroke="rgba(148,163,184,.3)" stroke-width="1"/&gt;
&lt;rect x="20" y="94" width="64" height="44" rx="3" fill="rgba(30,41,59,.65)" stroke="rgba(148,163,184,.38)" stroke-width="1"/&gt;
&lt;rect x="28" y="102" width="64" height="44" rx="3" fill="rgba(15,23,42,.9)" stroke="rgba(148,163,184,.5)" stroke-width="1.2"/&gt;
&lt;line x1="28" y1="118" x2="92" y2="118" stroke="rgba(148,163,184,.25)" stroke-width="1"/&gt;
&lt;line x1="46" y1="146" x2="56" y2="118" stroke="rgba(148,163,184,.4)" stroke-width="1"/&gt;
&lt;line x1="78" y1="146" x2="68" y2="118" stroke="rgba(148,163,184,.4)" stroke-width="1"/&gt;
&lt;rect x="72" y="106" width="13" height="10" rx="1.5" fill="#f97316" stroke="#fdba74" stroke-width=".8"/&gt;
&lt;text x="52" y="164" text-anchor="middle" font-size="8" fill="#94a3b8"&gt;T video frames&lt;/text&gt;
&lt;text x="52" y="175" text-anchor="middle" font-size="7.5" fill="#fb923c"&gt;patched scene &amp;#948;*&lt;/text&gt;
&lt;!-- arrow: input -&gt; CLIP --&gt;
&lt;line x1="96" y1="124" x2="112" y2="124" stroke="rgba(99,102,241,.6)" stroke-width="1.6"/&gt;
&lt;polygon points="110,120 118,124 110,128" fill="rgba(99,102,241,.7)"/&gt;
&lt;!-- CLIP encoder + attack-surface halo --&gt;
&lt;rect x="116" y="74" width="118" height="100" rx="10" fill="none" stroke="rgba(249,115,22,.45)" stroke-width="1.2" stroke-dasharray="4,3"/&gt;
&lt;rect x="122" y="80" width="106" height="88" rx="8" fill="rgba(99,102,241,.13)" stroke="#6366f1" stroke-width="1.4"/&gt;
&lt;text x="172" y="100" text-anchor="middle" font-size="12" font-weight="bold" fill="#a5b4fc"&gt;CLIP ViT-L/14&lt;/text&gt;
&lt;text x="219" y="99" text-anchor="middle" font-size="10" fill="#7dd3fc"&gt;&amp;#10052;&lt;/text&gt;
&lt;text x="175" y="113" text-anchor="middle" font-size="8" fill="#64748b"&gt;InfoNCE contrastive&lt;/text&gt;
&lt;rect x="134" y="121" width="82" height="9" rx="2" fill="rgba(99,102,241,.22)"/&gt;
&lt;rect x="134" y="134" width="82" height="9" rx="2" fill="rgba(99,102,241,.22)"/&gt;
&lt;rect x="134" y="147" width="82" height="9" rx="2" fill="rgba(99,102,241,.22)"/&gt;
&lt;text x="175" y="164" text-anchor="middle" font-size="7.5" fill="#818cf8"&gt;&amp;#215;24 layers &amp;middot; 1024-d&lt;/text&gt;
&lt;text x="175" y="187" text-anchor="middle" font-size="7.5" fill="#fb923c"&gt;shared CLIP attack surface&lt;/text&gt;
&lt;!-- arrow: CLIP -&gt; resampler --&gt;
&lt;line x1="234" y1="124" x2="252" y2="124" stroke="rgba(99,102,241,.6)" stroke-width="1.6"/&gt;
&lt;polygon points="250,120 258,124 250,128" fill="rgba(99,102,241,.7)"/&gt;
&lt;!-- Perceiver Resampler --&gt;
&lt;rect x="260" y="88" width="102" height="72" rx="8" fill="rgba(139,92,246,.12)" stroke="#8b5cf6" stroke-width="1.3"/&gt;
&lt;text x="305" y="106" text-anchor="middle" font-size="11" font-weight="bold" fill="#c4b5fd"&gt;Perceiver&lt;/text&gt;
&lt;text x="305" y="119" text-anchor="middle" font-size="11" font-weight="bold" fill="#c4b5fd"&gt;Resampler&lt;/text&gt;
&lt;text x="348" y="103" text-anchor="middle" font-size="9"&gt;&amp;#128293;&lt;/text&gt;
&lt;rect x="270" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.45)"/&gt;
&lt;rect x="279" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.45)"/&gt;
&lt;rect x="288" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.45)"/&gt;
&lt;rect x="297" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.45)"/&gt;
&lt;rect x="306" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.45)"/&gt;
&lt;rect x="315" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.45)"/&gt;
&lt;line x1="325" y1="131.5" x2="330" y2="131.5" stroke="rgba(196,181,253,.7)" stroke-width="1.2"/&gt;
&lt;polygon points="329,129 333,131.5 329,134" fill="rgba(196,181,253,.8)"/&gt;
&lt;rect x="336" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.85)"/&gt;
&lt;rect x="345" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.85)"/&gt;
&lt;rect x="354" y="128" width="7" height="7" rx="1" fill="rgba(139,92,246,.85)"/&gt;
&lt;text x="311" y="152" text-anchor="middle" font-size="7" fill="#64748b"&gt;compresses visual tokens&lt;/text&gt;
&lt;!-- vision trunk -&gt; gated x-attn layers --&gt;
&lt;line x1="362" y1="124" x2="470" y2="124" stroke="rgba(139,92,246,.6)" stroke-width="1.8"/&gt;
&lt;text x="416" y="115" text-anchor="middle" font-size="8" fill="#a78bfa"&gt;KV &amp;middot; visual features&lt;/text&gt;
&lt;line x1="470" y1="108.5" x2="470" y2="152.5" stroke="rgba(139,92,246,.6)" stroke-width="1.8"/&gt;
&lt;line x1="470" y1="108.5" x2="494" y2="108.5" stroke="rgba(139,92,246,.6)" stroke-width="1.8"/&gt;
&lt;polygon points="492,104.5 500,108.5 492,112.5" fill="rgba(139,92,246,.7)"/&gt;
&lt;line x1="470" y1="152.5" x2="494" y2="152.5" stroke="rgba(139,92,246,.6)" stroke-width="1.8"/&gt;
&lt;polygon points="492,148.5 500,152.5 492,156.5" fill="rgba(139,92,246,.7)"/&gt;
&lt;!-- MPT-7B stack with interleaved gated x-attn --&gt;
&lt;rect x="500" y="36" width="230" height="182" rx="10" fill="rgba(99,102,241,.07)" stroke="rgba(99,102,241,.5)" stroke-width="1.4"/&gt;
&lt;text x="608" y="56" text-anchor="middle" font-size="13" font-weight="bold" fill="#a5b4fc"&gt;MPT-7B&lt;/text&gt;
&lt;text x="650" y="55" text-anchor="middle" font-size="10" fill="#7dd3fc"&gt;&amp;#10052;&lt;/text&gt;
&lt;text x="615" y="69" text-anchor="middle" font-size="8" fill="#64748b"&gt;6.7B params &amp;middot; frozen decoder &amp;middot; GCoT&lt;/text&gt;
&lt;rect x="516" y="78" width="176" height="17" rx="3" fill="rgba(99,102,241,.13)" stroke="rgba(99,102,241,.35)" stroke-width=".8"/&gt;
&lt;text x="604" y="90" text-anchor="middle" font-size="8" fill="#a5b4fc"&gt;LM self-attention block &amp;#10052;&lt;/text&gt;
&lt;rect x="516" y="100" width="176" height="17" rx="3" fill="rgba(139,92,246,.18)" stroke="#8b5cf6" stroke-width=".8"/&gt;
&lt;text x="604" y="112" text-anchor="middle" font-size="8" fill="#c4b5fd"&gt;gated cross-attention &amp;#128293;&lt;/text&gt;
&lt;rect x="516" y="122" width="176" height="17" rx="3" fill="rgba(99,102,241,.13)" stroke="rgba(99,102,241,.35)" stroke-width=".8"/&gt;
&lt;text x="604" y="134" text-anchor="middle" font-size="8" fill="#a5b4fc"&gt;LM self-attention block &amp;#10052;&lt;/text&gt;
&lt;rect x="516" y="144" width="176" height="17" rx="3" fill="rgba(139,92,246,.18)" stroke="#8b5cf6" stroke-width=".8"/&gt;
&lt;text x="604" y="156" text-anchor="middle" font-size="8" fill="#c4b5fd"&gt;gated cross-attention &amp;#128293;&lt;/text&gt;
&lt;path d="M700,78 h6 v83 h-6" fill="none" stroke="rgba(129,140,248,.5)" stroke-width="1"/&gt;
&lt;text x="716" y="123" text-anchor="middle" font-size="9" font-weight="bold" fill="#818cf8"&gt;&amp;#215;N&lt;/text&gt;
&lt;text x="604" y="180" text-anchor="middle" font-size="11" fill="#64748b"&gt;&amp;#8942;&lt;/text&gt;
&lt;text x="604" y="205" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;Q: language tokens &amp;middot; KV: visual features&lt;/text&gt;
&lt;!-- text prompt --&gt;
&lt;rect x="540" y="236" width="150" height="26" rx="6" fill="rgba(148,163,184,.07)" stroke="rgba(148,163,184,.3)" stroke-width="1"/&gt;
&lt;text x="615" y="252" text-anchor="middle" font-size="8" font-style="italic" fill="#94a3b8"&gt;driving instruction prompt&lt;/text&gt;
&lt;line x1="615" y1="236" x2="615" y2="224" stroke="rgba(148,163,184,.5)" stroke-width="1.4"/&gt;
&lt;polygon points="611,226 615,218 619,226" fill="rgba(148,163,184,.6)"/&gt;
&lt;!-- output --&gt;
&lt;line x1="730" y1="124" x2="750" y2="124" stroke="rgba(99,102,241,.6)" stroke-width="1.8"/&gt;
&lt;polygon points="748,120 756,124 748,128" fill="rgba(99,102,241,.7)"/&gt;
&lt;rect x="756" y="96" width="112" height="56" rx="8" fill="rgba(34,197,94,.08)" stroke="rgba(34,197,94,.45)" stroke-width="1.3"/&gt;
&lt;text x="812" y="119" text-anchor="middle" font-size="10.5" font-weight="bold" fill="#4ade80"&gt;driving decision&lt;/text&gt;
&lt;text x="812" y="133" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;Grounded CoT output&lt;/text&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;div style="padding:.45rem .75rem .55rem;border-top:1px solid rgba(99,102,241,.1);font-size:var(--pub-text-small);line-height:1.5;color:#64748b;"&gt;&lt;strong style="color:#a5b4fc;"&gt;(a) Dolphins.&lt;/strong&gt; &lt;em&gt;Frozen CLIP ViT-L/14 features are compressed by a trained Perceiver Resampler and injected into the frozen MPT-7B decoder through interleaved gated cross-attention layers. The adversarial patch couples directly into the shared CLIP manifold.&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══════════ (b) OmniDrive ═══════════ --&gt;
&lt;div style="border-radius:.875rem;border:1px solid rgba(148,163,184,.25);background:rgba(148,163,184,.04);overflow:hidden;"&gt;
&lt;div style="padding:.5rem .75rem;background:rgba(148,163,184,.07);border-bottom:1px solid rgba(148,163,184,.1);display:flex;align-items:center;justify-content:space-between;gap:.4rem;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;div style="display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;OmniDrive&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;"&gt;Omni-L &amp;amp; Omni-Q variants &amp;middot; multi-view 3D&lt;/div&gt;&lt;/div&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-small);font-weight:600;color:#94a3b8;border:1px solid rgba(148,163,184,.3);border-radius:9999px;padding:.1rem .4rem;"&gt;Distinct encoder&lt;/span&gt;
&lt;/div&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 880 260" style="display:block;--pub-diagram-width:55rem;" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="OmniDrive architecture: multi-view cameras to EVA-02-L encoder, MLP projector or Q-Former3D, LLaMA2-7B, language and 3D detection outputs"&gt;
&lt;!-- input: multi-view cams --&gt;
&lt;rect x="12" y="58" width="62" height="40" rx="3" fill="rgba(30,41,59,.5)" stroke="rgba(148,163,184,.3)" stroke-width="1"/&gt;
&lt;rect x="20" y="96" width="62" height="40" rx="3" fill="rgba(30,41,59,.65)" stroke="rgba(148,163,184,.38)" stroke-width="1"/&gt;
&lt;rect x="28" y="134" width="62" height="40" rx="3" fill="rgba(15,23,42,.9)" stroke="rgba(148,163,184,.5)" stroke-width="1.2"/&gt;
&lt;line x1="28" y1="148" x2="90" y2="148" stroke="rgba(148,163,184,.25)" stroke-width="1"/&gt;
&lt;line x1="44" y1="174" x2="54" y2="148" stroke="rgba(148,163,184,.4)" stroke-width="1"/&gt;
&lt;line x1="74" y1="174" x2="64" y2="148" stroke="rgba(148,163,184,.4)" stroke-width="1"/&gt;
&lt;rect x="68" y="138" width="12" height="9" rx="1.5" fill="#f97316" stroke="#fdba74" stroke-width=".8"/&gt;
&lt;text x="51" y="192" text-anchor="middle" font-size="8" fill="#94a3b8"&gt;N surround-view cams&lt;/text&gt;
&lt;text x="51" y="203" text-anchor="middle" font-size="7.5" fill="#fb923c"&gt;patched billboard&lt;/text&gt;
&lt;!-- converging arrows --&gt;
&lt;line x1="74" y1="78" x2="122" y2="121" stroke="rgba(148,163,184,.45)" stroke-width="1.3"/&gt;
&lt;line x1="82" y1="116" x2="122" y2="124" stroke="rgba(148,163,184,.45)" stroke-width="1.3"/&gt;
&lt;line x1="90" y1="154" x2="122" y2="128" stroke="rgba(148,163,184,.45)" stroke-width="1.3"/&gt;
&lt;polygon points="122,120 130,125 122,130" fill="rgba(148,163,184,.6)"/&gt;
&lt;!-- EVA-02-L + manifold halo --&gt;
&lt;rect x="126" y="74" width="133" height="102" rx="10" fill="none" stroke="rgba(148,163,184,.4)" stroke-width="1.2" stroke-dasharray="4,3"/&gt;
&lt;rect x="132" y="80" width="121" height="90" rx="8" fill="rgba(148,163,184,.1)" stroke="rgba(148,163,184,.55)" stroke-width="1.4"/&gt;
&lt;text x="192" y="102" text-anchor="middle" font-size="12.5" font-weight="bold" fill="#cbd5e1"&gt;EVA-02-L&lt;/text&gt;
&lt;text x="192" y="115" text-anchor="middle" font-size="8" fill="#64748b"&gt;MIM-distilled CLIP&lt;/text&gt;
&lt;rect x="144" y="124" width="97" height="9" rx="2" fill="rgba(148,163,184,.18)"/&gt;
&lt;rect x="144" y="137" width="97" height="9" rx="2" fill="rgba(148,163,184,.18)"/&gt;
&lt;rect x="144" y="150" width="97" height="9" rx="2" fill="rgba(148,163,184,.18)"/&gt;
&lt;text x="192" y="166" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;multi-view N&amp;#215;C&amp;#215;H&amp;#215;W&lt;/text&gt;
&lt;text x="192" y="189" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;MIM manifold &amp;middot; partially distinct&lt;/text&gt;
&lt;!-- split into two connector variants --&gt;
&lt;line x1="259" y1="125" x2="288" y2="125" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="288" y1="82" x2="288" y2="180" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="288" y1="82" x2="322" y2="82" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;polygon points="322,78 330,82 322,86" fill="rgba(148,163,184,.6)"/&gt;
&lt;line x1="288" y1="180" x2="322" y2="180" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;polygon points="322,176 330,180 322,184" fill="rgba(148,163,184,.6)"/&gt;
&lt;text x="414" y="44" text-anchor="middle" font-size="8" font-style="italic" fill="#64748b"&gt;two connector variants&lt;/text&gt;
&lt;!-- Omni-L: MLP --&gt;
&lt;rect x="330" y="54" width="168" height="56" rx="8" fill="rgba(148,163,184,.06)" stroke="rgba(148,163,184,.4)" stroke-width="1.2"/&gt;
&lt;rect x="338" y="60" width="44" height="13" rx="6.5" fill="rgba(148,163,184,.18)"/&gt;
&lt;text x="360" y="69.5" text-anchor="middle" font-size="6.5" font-weight="bold" fill="#cbd5e1"&gt;OMNI-L&lt;/text&gt;
&lt;text x="414" y="86" text-anchor="middle" font-size="11.5" font-weight="bold" fill="#cbd5e1"&gt;MLP projector&lt;/text&gt;
&lt;text x="414" y="100" text-anchor="middle" font-size="8" fill="#64748b"&gt;linear &amp;middot; LLaVA-style&lt;/text&gt;
&lt;!-- Omni-Q: Q-Former3D --&gt;
&lt;rect x="330" y="138" width="168" height="84" rx="8" fill="rgba(148,163,184,.08)" stroke="rgba(148,163,184,.45)" stroke-width="1.2"/&gt;
&lt;rect x="338" y="144" width="44" height="13" rx="6.5" fill="rgba(148,163,184,.18)"/&gt;
&lt;text x="360" y="153.5" text-anchor="middle" font-size="6.5" font-weight="bold" fill="#cbd5e1"&gt;OMNI-Q&lt;/text&gt;
&lt;text x="414" y="170" text-anchor="middle" font-size="11.5" font-weight="bold" fill="#cbd5e1"&gt;Q-Former3D&lt;/text&gt;
&lt;text x="414" y="183" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;carrier + perception queries&lt;/text&gt;
&lt;rect x="352" y="190" width="9" height="9" rx="1" fill="rgba(148,163,184,.5)"/&gt;
&lt;rect x="364" y="190" width="9" height="9" rx="1" fill="rgba(148,163,184,.5)"/&gt;
&lt;rect x="376" y="190" width="9" height="9" rx="1" fill="rgba(148,163,184,.5)"/&gt;
&lt;rect x="388" y="190" width="9" height="9" rx="1" fill="rgba(148,163,184,.5)"/&gt;
&lt;text x="374" y="212" text-anchor="middle" font-size="6.5" fill="#94a3b8"&gt;carrier q&lt;/text&gt;
&lt;rect x="424" y="190" width="9" height="9" rx="1" fill="rgba(99,102,241,.6)"/&gt;
&lt;rect x="436" y="190" width="9" height="9" rx="1" fill="rgba(99,102,241,.6)"/&gt;
&lt;rect x="448" y="190" width="9" height="9" rx="1" fill="rgba(99,102,241,.6)"/&gt;
&lt;rect x="460" y="190" width="9" height="9" rx="1" fill="rgba(99,102,241,.6)"/&gt;
&lt;text x="446" y="212" text-anchor="middle" font-size="6.5" fill="#818cf8"&gt;perception q&lt;/text&gt;
&lt;!-- 3D position encoding --&gt;
&lt;line x1="414" y1="240" x2="414" y2="230" stroke="rgba(148,163,184,.5)" stroke-width="1.3"/&gt;
&lt;polygon points="410,231 414,224 418,231" fill="rgba(148,163,184,.6)"/&gt;
&lt;text x="414" y="252" text-anchor="middle" font-size="8" fill="#64748b"&gt;3D position encoding&lt;/text&gt;
&lt;!-- merge --&gt;
&lt;line x1="498" y1="82" x2="528" y2="82" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="498" y1="180" x2="528" y2="180" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="528" y1="82" x2="528" y2="180" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="528" y1="125" x2="550" y2="125" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;polygon points="550,121 558,125 550,129" fill="rgba(148,163,184,.6)"/&gt;
&lt;!-- LLaMA2-7B --&gt;
&lt;rect x="560" y="78" width="148" height="94" rx="8" fill="rgba(148,163,184,.1)" stroke="rgba(148,163,184,.55)" stroke-width="1.4"/&gt;
&lt;text x="634" y="102" text-anchor="middle" font-size="12.5" font-weight="bold" fill="#cbd5e1"&gt;LLaMA2-7B&lt;/text&gt;
&lt;text x="634" y="115" text-anchor="middle" font-size="8" fill="#64748b"&gt;causal decoder &amp;middot; 4096-d&lt;/text&gt;
&lt;rect x="574" y="124" width="120" height="9" rx="2" fill="rgba(148,163,184,.18)"/&gt;
&lt;rect x="574" y="137" width="120" height="9" rx="2" fill="rgba(148,163,184,.18)"/&gt;
&lt;rect x="574" y="150" width="120" height="9" rx="2" fill="rgba(148,163,184,.18)"/&gt;
&lt;text x="634" y="166" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;vision-language alignment&lt;/text&gt;
&lt;!-- outputs --&gt;
&lt;line x1="708" y1="125" x2="736" y2="125" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="736" y1="95" x2="736" y2="155" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;line x1="736" y1="95" x2="748" y2="95" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;polygon points="748,91 756,95 748,99" fill="rgba(148,163,184,.6)"/&gt;
&lt;line x1="736" y1="155" x2="748" y2="155" stroke="rgba(148,163,184,.5)" stroke-width="1.6"/&gt;
&lt;polygon points="748,151 756,155 748,159" fill="rgba(148,163,184,.6)"/&gt;
&lt;rect x="756" y="72" width="112" height="46" rx="8" fill="rgba(34,197,94,.08)" stroke="rgba(34,197,94,.45)" stroke-width="1.3"/&gt;
&lt;text x="812" y="91" text-anchor="middle" font-size="10" font-weight="bold" fill="#4ade80"&gt;language output&lt;/text&gt;
&lt;text x="812" y="105" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;planning &amp;middot; QA&lt;/text&gt;
&lt;rect x="756" y="132" width="112" height="46" rx="8" fill="rgba(148,163,184,.07)" stroke="rgba(148,163,184,.4)" stroke-width="1.3"/&gt;
&lt;text x="812" y="151" text-anchor="middle" font-size="10" font-weight="bold" fill="#cbd5e1"&gt;3D detection&lt;/text&gt;
&lt;text x="812" y="165" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;perception outputs&lt;/text&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;div style="padding:.45rem .75rem .55rem;border-top:1px solid rgba(148,163,184,.1);font-size:var(--pub-text-small);line-height:1.5;color:#64748b;"&gt;&lt;strong style="color:#cbd5e1;"&gt;(b) OmniDrive.&lt;/strong&gt; &lt;em&gt;Multi-view features from the MIM-distilled EVA-02-L encoder reach LLaMA2-7B through either a linear MLP projector (Omni-L) or a Q-Former3D with carrier and perception queries (Omni-Q). Its partially distinct feature manifold weakens incoming CLIP-optimised patches (TR 0.42&amp;ndash;0.57).&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══════════ (c) LeapVAD ═══════════ --&gt;
&lt;div style="border-radius:.875rem;border:2px solid rgba(99,102,241,.4);background:rgba(99,102,241,.05);overflow:hidden;"&gt;
&lt;div style="padding:.5rem .75rem;background:rgba(99,102,241,.12);border-bottom:1px solid rgba(99,102,241,.12);display:flex;align-items:center;justify-content:space-between;gap:.4rem;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;div style="display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap;"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;LeapVAD&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#818cf8;"&gt;dual-process &amp;middot; cognitive driving&lt;/div&gt;&lt;/div&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:700;background:#6366f1;color:#fff;border-radius:9999px;padding:.1rem .4rem;letter-spacing:.04em;"&gt;CLIP shared&lt;/span&gt;
&lt;/div&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 880 278" style="display:block;--pub-diagram-width:55rem;" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="LeapVAD architecture: patched frames to Qwen-VL-7B scene VLM, scene description, scene encoder and memory bank, System-II GPT-4o distilled into System-I Qwen1.5-1.8B, control signal output"&gt;
&lt;!-- input frames --&gt;
&lt;rect x="12" y="40" width="60" height="40" rx="3" fill="rgba(30,41,59,.5)" stroke="rgba(148,163,184,.3)" stroke-width="1"/&gt;
&lt;rect x="20" y="48" width="60" height="40" rx="3" fill="rgba(30,41,59,.65)" stroke="rgba(148,163,184,.38)" stroke-width="1"/&gt;
&lt;rect x="28" y="56" width="60" height="40" rx="3" fill="rgba(15,23,42,.9)" stroke="rgba(148,163,184,.5)" stroke-width="1.2"/&gt;
&lt;line x1="28" y1="70" x2="88" y2="70" stroke="rgba(148,163,184,.25)" stroke-width="1"/&gt;
&lt;line x1="44" y1="96" x2="54" y2="70" stroke="rgba(148,163,184,.4)" stroke-width="1"/&gt;
&lt;line x1="72" y1="96" x2="62" y2="70" stroke="rgba(148,163,184,.4)" stroke-width="1"/&gt;
&lt;rect x="64" y="60" width="11" height="9" rx="1.5" fill="#f97316" stroke="#fdba74" stroke-width=".8"/&gt;
&lt;text x="50" y="112" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;multi-view &amp;middot; multi-frame&lt;/text&gt;
&lt;text x="50" y="122" text-anchor="middle" font-size="7" fill="#fb923c"&gt;patched scene &amp;#948;*&lt;/text&gt;
&lt;!-- arrow -&gt; Qwen-VL --&gt;
&lt;line x1="92" y1="68" x2="108" y2="68" stroke="rgba(99,102,241,.6)" stroke-width="1.6"/&gt;
&lt;polygon points="108,64 116,68 108,72" fill="rgba(99,102,241,.7)"/&gt;
&lt;!-- Qwen-VL-7B + attack-surface halo --&gt;
&lt;rect x="116" y="32" width="168" height="76" rx="10" fill="none" stroke="rgba(249,115,22,.45)" stroke-width="1.2" stroke-dasharray="4,3"/&gt;
&lt;rect x="120" y="36" width="160" height="68" rx="8" fill="rgba(99,102,241,.12)" stroke="#6366f1" stroke-width="1.4"/&gt;
&lt;text x="196" y="58" text-anchor="middle" font-size="12" font-weight="bold" fill="#a5b4fc"&gt;Qwen-VL-7B&lt;/text&gt;
&lt;text x="252" y="57" text-anchor="middle" font-size="9"&gt;&amp;#128293;&lt;/text&gt;
&lt;text x="200" y="72" text-anchor="middle" font-size="8" fill="#64748b"&gt;CLIP-based ViT &amp;middot; scene VLM&lt;/text&gt;
&lt;text x="200" y="86" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;fine-tuned &amp;middot; 7.1K CARLA scenes&lt;/text&gt;
&lt;text x="200" y="121" text-anchor="middle" font-size="7.5" fill="#fb923c"&gt;CLIP manifold &amp;middot; shared attack surface&lt;/text&gt;
&lt;!-- arrow -&gt; scene description --&gt;
&lt;line x1="284" y1="68" x2="300" y2="68" stroke="rgba(99,102,241,.6)" stroke-width="1.6"/&gt;
&lt;polygon points="300,64 308,68 300,72" fill="rgba(99,102,241,.7)"/&gt;
&lt;!-- scene description --&gt;
&lt;rect x="308" y="40" width="150" height="58" rx="8" fill="rgba(15,23,42,.3)" stroke="rgba(99,102,241,.4)" stroke-width="1.2" stroke-dasharray="5,3"/&gt;
&lt;text x="383" y="57" text-anchor="middle" font-size="9" font-weight="bold" fill="#818cf8"&gt;scene description&lt;/text&gt;
&lt;text x="383" y="71" text-anchor="middle" font-size="7.5" font-style="italic" fill="#94a3b8"&gt;&amp;#8220;pedestrian crossing ahead,&lt;/text&gt;
&lt;text x="383" y="82" text-anchor="middle" font-size="7.5" font-style="italic" fill="#94a3b8"&gt;wet road, slow down&amp;#8221;&lt;/text&gt;
&lt;!-- arrow -&gt; scene encoder --&gt;
&lt;line x1="458" y1="68" x2="474" y2="68" stroke="rgba(99,102,241,.6)" stroke-width="1.6"/&gt;
&lt;polygon points="474,64 482,68 474,72" fill="rgba(99,102,241,.7)"/&gt;
&lt;!-- scene encoder --&gt;
&lt;rect x="482" y="40" width="164" height="58" rx="8" fill="rgba(99,102,241,.1)" stroke="#818cf8" stroke-width="1.3"/&gt;
&lt;text x="564" y="56" text-anchor="middle" font-size="11" font-weight="bold" fill="#a5b4fc"&gt;Scene Encoder&lt;/text&gt;
&lt;text x="564" y="69" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;contrastive scene token &amp;middot; 256-d&lt;/text&gt;
&lt;rect x="514" y="76" width="50" height="10" rx="2" fill="rgba(99,102,241,.55)"/&gt;
&lt;text x="539" y="84" text-anchor="middle" font-size="6" fill="#e0e7ff"&gt;ACT 128&lt;/text&gt;
&lt;rect x="564" y="76" width="50" height="10" rx="2" fill="rgba(139,92,246,.55)"/&gt;
&lt;text x="589" y="84" text-anchor="middle" font-size="6" fill="#ede9fe"&gt;ACC 128&lt;/text&gt;
&lt;!-- arrow -&gt; memory --&gt;
&lt;line x1="646" y1="68" x2="696" y2="68" stroke="rgba(139,92,246,.55)" stroke-width="1.6"/&gt;
&lt;polygon points="696,64 704,68 696,72" fill="rgba(139,92,246,.65)"/&gt;
&lt;text x="674" y="61" text-anchor="middle" font-size="7.5" fill="#a78bfa"&gt;store&lt;/text&gt;
&lt;!-- memory bank cylinder --&gt;
&lt;path d="M704,48 v44 a72,10 0 0 0 144,0 v-44" fill="rgba(139,92,246,.08)" stroke="rgba(139,92,246,.5)" stroke-width="1.3"/&gt;
&lt;ellipse cx="776" cy="48" rx="72" ry="10" fill="rgba(139,92,246,.15)" stroke="rgba(139,92,246,.5)" stroke-width="1.3"/&gt;
&lt;text x="776" y="72" text-anchor="middle" font-size="10.5" font-weight="bold" fill="#c4b5fd"&gt;Memory Bank&lt;/text&gt;
&lt;text x="776" y="85" text-anchor="middle" font-size="7" fill="#64748b"&gt;experience store&lt;/text&gt;
&lt;!-- retrieval: memory -&gt; Sys-I --&gt;
&lt;path d="M776,102 v48 h-191 v28" fill="none" stroke="rgba(139,92,246,.5)" stroke-width="1.5"/&gt;
&lt;polygon points="581,176 585,184 589,176" fill="rgba(139,92,246,.6)"/&gt;
&lt;text x="700" y="144" text-anchor="middle" font-size="7.5" fill="#a78bfa"&gt;top-k cosine retrieval&lt;/text&gt;
&lt;!-- reasoning input: scene desc -&gt; Sys-II --&gt;
&lt;path d="M383,98 v46 h-158 v34" fill="none" stroke="rgba(99,102,241,.45)" stroke-width="1.5"/&gt;
&lt;polygon points="221,176 225,184 229,176" fill="rgba(99,102,241,.55)"/&gt;
&lt;text x="300" y="138" text-anchor="middle" font-size="7.5" fill="#818cf8"&gt;reasoning input&lt;/text&gt;
&lt;!-- System-II --&gt;
&lt;rect x="120" y="184" width="210" height="82" rx="8" fill="rgba(139,92,246,.1)" stroke="#8b5cf6" stroke-width="1.4"/&gt;
&lt;rect x="132" y="192" width="112" height="14" rx="7" fill="rgba(139,92,246,.2)"/&gt;
&lt;text x="188" y="202" text-anchor="middle" font-size="6.5" font-weight="bold" fill="#c4b5fd"&gt;SYSTEM-II &amp;middot; ANALYTIC&lt;/text&gt;
&lt;text x="225" y="226" text-anchor="middle" font-size="13" font-weight="bold" fill="#c4b5fd"&gt;GPT-4o&lt;/text&gt;
&lt;text x="225" y="240" text-anchor="middle" font-size="8" fill="#64748b"&gt;analytical reasoning &amp;middot; reflection&lt;/text&gt;
&lt;text x="225" y="253" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;slow &amp;middot; deliberate&lt;/text&gt;
&lt;!-- distillation --&gt;
&lt;line x1="330" y1="225" x2="470" y2="225" stroke="#8b5cf6" stroke-width="2" stroke-dasharray="5,3"/&gt;
&lt;polygon points="470,220 480,225 470,230" fill="#8b5cf6"/&gt;
&lt;text x="405" y="216" text-anchor="middle" font-size="8" fill="#a78bfa"&gt;experience distillation&lt;/text&gt;
&lt;!-- System-I --&gt;
&lt;rect x="480" y="184" width="210" height="82" rx="8" fill="rgba(99,102,241,.1)" stroke="#6366f1" stroke-width="1.4"/&gt;
&lt;rect x="492" y="192" width="116" height="14" rx="7" fill="rgba(99,102,241,.2)"/&gt;
&lt;text x="550" y="202" text-anchor="middle" font-size="6.5" font-weight="bold" fill="#a5b4fc"&gt;SYSTEM-I &amp;middot; HEURISTIC&lt;/text&gt;
&lt;text x="585" y="226" text-anchor="middle" font-size="13" font-weight="bold" fill="#a5b4fc"&gt;Qwen1.5-1.8B&lt;/text&gt;
&lt;text x="585" y="240" text-anchor="middle" font-size="8" fill="#64748b"&gt;distilled from System-II&lt;/text&gt;
&lt;text x="585" y="253" text-anchor="middle" font-size="7.5" fill="#94a3b8"&gt;5&amp;#215; faster inference&lt;/text&gt;
&lt;!-- output --&gt;
&lt;line x1="690" y1="225" x2="744" y2="225" stroke="rgba(34,197,94,.55)" stroke-width="1.8"/&gt;
&lt;polygon points="744,221 752,225 744,229" fill="rgba(34,197,94,.65)"/&gt;
&lt;rect x="752" y="199" width="116" height="52" rx="8" fill="rgba(34,197,94,.08)" stroke="rgba(34,197,94,.45)" stroke-width="1.3"/&gt;
&lt;text x="810" y="221" text-anchor="middle" font-size="10.5" font-weight="bold" fill="#4ade80"&gt;control signal&lt;/text&gt;
&lt;text x="810" y="235" text-anchor="middle" font-size="7.5" fill="#64748b"&gt;driving decision&lt;/text&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;div style="padding:.45rem .75rem .55rem;border-top:1px solid rgba(99,102,241,.1);font-size:var(--pub-text-small);line-height:1.5;color:#64748b;"&gt;&lt;strong style="color:#a5b4fc;"&gt;(c) LeapVAD.&lt;/strong&gt; &lt;em&gt;A dual-process system: the fine-tuned Qwen-VL-7B scene VLM feeds an analytic GPT-4o reasoner (System-II) whose experience is distilled into a fast 1.8B heuristic driver (System-I), supported by top-k retrieval over 256-d contrastive scene tokens. Vision is grounded in the same CLIP manifold as Dolphins (TR 0.82&amp;ndash;0.91).&lt;/em&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="grid-column:1/-1;display:flex;flex-direction:column;align-items:center;padding:.2rem 0;"&gt;
&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(99,102,241,.55),rgba(168,85,247,.3));"&gt;&lt;/div&gt;
&lt;span style="font-size:var(--pub-text-small);color:rgba(168,85,247,.85);letter-spacing:.06em;padding:.15rem .5rem;white-space:normal;background:rgba(168,85,247,.06);border:1px solid rgba(168,85,247,.2);border-radius:.3rem;"&gt;Heterogeneous VLM outputs &amp;nbsp;&amp;rarr;&amp;nbsp; shared CLIP text embedding space&lt;/span&gt;
&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(168,85,247,.3),rgba(168,85,247,.55));"&gt;&lt;/div&gt;
&lt;svg width="10" height="6" viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg"&gt;&lt;polygon points="0,0 10,0 5,6" fill="rgba(168,85,247,.65)"/&gt;&lt;/svg&gt;
&lt;/div&gt;
&lt;div style="grid-column:1/-1;"&gt;
&lt;div class="adv-pipe-phase" style="grid-column:1/-1;border-radius:1rem;border:1px solid rgba(139,92,246,.3);background:rgba(139,92,246,.06);overflow:hidden;position:relative;"&gt;&lt;div style="position:absolute;top:.7rem;right:.7rem;font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff;border-radius:9999px;padding:.2rem .6rem;"&gt;&amp;#9733; Novel&lt;/div&gt;&lt;div style="padding:.7rem 1rem;border-bottom:1px solid rgba(139,92,246,.12);"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#a78bfa;margin-bottom:.15rem;"&gt;Phase 04 &amp;nbsp;&amp;middot;&amp;nbsp; CLIP Homogenization&lt;/div&gt;&lt;div style="font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;"&gt;Architecture-agnostic evaluation via shared embedding space&lt;/div&gt;&lt;/div&gt;&lt;div style="padding:.875rem 1rem;"&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;VLMs generate heterogeneous outputs across different vocabularies and instruction formats. The key methodological contribution is projecting all outputs through a &lt;strong style="color:#e2e8f0;"&gt;shared CLIP text embedding space&lt;/strong&gt;, enabling direct cross-architecture semantic comparison. CLIP-family vision encoders create a shared visual attack surface, explaining the high bidirectional transfer between Dolphins and LeapVAD (0.82&amp;ndash;0.91).&lt;/p&gt;&lt;div style="margin-top:.875rem;display:flex;justify-content:center;"&gt;&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" viewBox="0 0 596 277" style="display:block;--pub-diagram-width:37.25rem;" xmlns="http://www.w3.org/2000/svg"&gt;
&lt;!-- ── Section labels ──────────────────────────── --&gt;
&lt;text x="78.1" y="14.2" text-anchor="middle" font-size="9.0" font-weight="bold" fill="#475569" letter-spacing=".7"&gt;DIVERSE OUTPUTS&lt;/text&gt;
&lt;text x="237.1" y="14.2" text-anchor="middle" font-size="9.0" font-weight="bold" fill="#475569" letter-spacing=".7"&gt;PROJECTION&lt;/text&gt;
&lt;text x="454.4" y="14.2" text-anchor="middle" font-size="9.0" font-weight="bold" fill="#475569" letter-spacing=".7"&gt;SHARED SEMANTIC SPACE&lt;/text&gt;
&lt;!-- ── Dolphins output box ─────────────────────── --&gt;
&lt;text x="9.9" y="35.5" font-size="10.3" font-weight="bold" fill="#818cf8"&gt;Dolphins&lt;/text&gt;
&lt;rect x="7.1" y="39.8" width="146.3" height="42.6" rx="4.3" fill="rgba(99,102,241,.1)" stroke="rgba(99,102,241,.38)" stroke-width="2.0"/&gt;
&lt;text x="79.5" y="58.2" text-anchor="middle" font-size="9.0" fill="#a5b4fc"&gt;"Turn left at crossroad"&lt;/text&gt;
&lt;text x="79.5" y="73.8" text-anchor="middle" font-size="7.6" fill="#64748b"&gt;natural language (GCoT)&lt;/text&gt;
&lt;!-- ── OmniDrive output box ────────────────────── --&gt;
&lt;text x="9.9" y="113.6" font-size="10.3" font-weight="bold" fill="#94a3b8"&gt;OmniDrive&lt;/text&gt;
&lt;rect x="7.1" y="117.9" width="146.3" height="42.6" rx="4.3" fill="rgba(148,163,184,.07)" stroke="rgba(148,163,184,.32)" stroke-width="2.0"/&gt;
&lt;text x="79.5" y="136.3" text-anchor="middle" font-size="9.0" fill="#cbd5e1"&gt;"Ped@0.4m · brake·2.3m"&lt;/text&gt;
&lt;text x="79.5" y="151.9" text-anchor="middle" font-size="7.6" fill="#64748b"&gt;3D bbox + structured cmd&lt;/text&gt;
&lt;!-- ── LeapVAD output box ─────────────────────── --&gt;
&lt;text x="9.9" y="187.4" font-size="10.3" font-weight="bold" fill="#c4b5fd"&gt;LeapVAD&lt;/text&gt;
&lt;rect x="7.1" y="191.7" width="146.3" height="42.6" rx="4.3" fill="rgba(139,92,246,.1)" stroke="rgba(139,92,246,.38)" stroke-width="2.0"/&gt;
&lt;text x="79.5" y="210.2" text-anchor="middle" font-size="9.0" fill="#c4b5fd"&gt;"decel 2.5 m/s² · 8 tokens"&lt;/text&gt;
&lt;text x="79.5" y="225.8" text-anchor="middle" font-size="7.6" fill="#64748b"&gt;control signals + memory&lt;/text&gt;
&lt;!-- dashed "incomparable" separator --&gt;
&lt;line x1="157.6" y1="28.4" x2="157.6" y2="241.4" stroke="rgba(239,68,68,.22)" stroke-width="1.75" stroke-dasharray="2,3"/&gt;
&lt;!-- ── Arrows → CLIP Encoder ──────────────────── --&gt;
&lt;path d="M153.4,61.1 C175.2,61.1 175.2,113 184.6,113" fill="none" stroke="rgba(99,102,241,.5)" stroke-width="2.5"/&gt;
&lt;polygon points="178.6,109 184.6,113 178.6,117" fill="rgba(99,102,241,.6)"/&gt;
&lt;path d="M153.4,139.2 C175.2,139.2 175.2,134.9 184.6,134.9" fill="none" stroke="rgba(148,163,184,.5)" stroke-width="2.5"/&gt;
&lt;polygon points="178.6,130.9 184.6,134.9 178.6,138.9" fill="rgba(148,163,184,.6)"/&gt;
&lt;path d="M153.4,213 C175.2,213 175.2,157 184.6,157" fill="none" stroke="rgba(139,92,246,.5)" stroke-width="2.5"/&gt;
&lt;polygon points="178.6,153 184.6,157 178.6,161" fill="rgba(139,92,246,.6)"/&gt;
&lt;!-- ── CLIP Text Encoder box ───────────────────── --&gt;
&lt;rect x="184.6" y="99.4" width="125.0" height="71" rx="8.5" fill="rgba(192,132,252,.1)" stroke="rgba(192,132,252,.5)" stroke-width="2.5"/&gt;
&lt;text x="247.1" y="126.4" text-anchor="middle" font-size="12.4" font-weight="bold" fill="#c084fc"&gt;CLIP Text&lt;/text&gt;
&lt;text x="247.1" y="143.4" text-anchor="middle" font-size="12.4" font-weight="bold" fill="#c084fc"&gt;Encoder&lt;/text&gt;
&lt;text x="247.1" y="160.5" text-anchor="middle" font-size="7.6" fill="#9333ea"&gt;shared ℝ⁵¹² space&lt;/text&gt;
&lt;!-- ── Arrow CLIP → shared space ──────────────── --&gt;
&lt;line x1="309.6" y1="134.9" x2="329.4" y2="134.9" stroke="rgba(192,132,252,.65)" stroke-width="3.25"/&gt;
&lt;polygon points="325.2,129.2 335.1,134.9 325.2,140.6" fill="rgba(192,132,252,.75)"/&gt;
&lt;!-- ── Outer shared space ellipse ─────────────── --&gt;
&lt;ellipse cx="454.4" cy="137.7" rx="122.1" ry="120.7" fill="rgba(168,85,247,.04)" stroke="rgba(168,85,247,.28)" stroke-width="2.0" stroke-dasharray="5,3"/&gt;
&lt;!-- ── CLIP-family inner cluster ──────────────── --&gt;
&lt;ellipse cx="426" cy="113.6" rx="62.5" ry="54.0" fill="rgba(99,102,241,.07)" stroke="rgba(99,102,241,.28)" stroke-width="1.75" stroke-dasharray="3,2"/&gt;
&lt;text x="426" y="54.0" text-anchor="middle" font-size="9.7" font-weight="bold" fill="#6366f1"&gt;CLIP-family&lt;/text&gt;
&lt;!-- Dolphins dot --&gt;
&lt;circle cx="397.6" cy="96.6" r="15.6" fill="#6366f1" opacity=".88"/&gt;
&lt;text x="397.6" y="75.3" text-anchor="middle" font-size="9.0" fill="#a5b4fc"&gt;Dolphins&lt;/text&gt;
&lt;!-- LeapVAD dot --&gt;
&lt;circle cx="451.6" cy="127.8" r="15.6" fill="#8b5cf6" opacity=".88"/&gt;
&lt;text x="454.4" y="159.0" text-anchor="middle" font-size="9.0" fill="#c4b5fd"&gt;LeapVAD&lt;/text&gt;
&lt;!-- Bidirectional arrow Dolphins ↔ LeapVAD --&gt;
&lt;line x1="410.4" y1="102.2" x2="438.8" y2="117.9" stroke="#818cf8" stroke-width="3.88" stroke-linecap="round"/&gt;
&lt;polygon points="434.5,112.2 444.5,119.3 435.9,125.0" fill="#818cf8"/&gt;
&lt;polygon points="414.6,98.0 404.7,103.7 413.2,109.3" fill="#818cf8"/&gt;
&lt;text x="423.2" y="92.3" text-anchor="middle" font-size="8.3" font-weight="bold" fill="#818cf8"&gt;0.82–0.91&lt;/text&gt;
&lt;!-- OmniDrive dot (EVA-02-L cluster, right) --&gt;
&lt;circle cx="525.4" cy="163.3" r="15.6" fill="#64748b" opacity=".88"/&gt;
&lt;text x="525.4" y="144.8" text-anchor="middle" font-size="9.0" fill="#94a3b8"&gt;OmniDrive&lt;/text&gt;
&lt;text x="525.4" y="190.3" text-anchor="middle" font-size="7.6" fill="#64748b"&gt;EVA-02-L&lt;/text&gt;
&lt;!-- Dashed partial-transfer arrow OmniDrive → CLIP cluster --&gt;
&lt;line x1="511.2" y1="156.2" x2="468.6" y2="132.1" stroke="rgba(148,163,184,.5)" stroke-width="2.25" stroke-dasharray="3,2"/&gt;
&lt;polygon points="472.9,126.4 465.8,134.9 474.3,136.3" fill="rgba(148,163,184,.5)"/&gt;
&lt;text x="499.8" y="119.3" text-anchor="middle" font-size="8.3" fill="#64748b"&gt;0.42–0.57&lt;/text&gt;
&lt;text x="499.8" y="132.1" text-anchor="middle" font-size="7.6" fill="#64748b"&gt;(partial)&lt;/text&gt;
&lt;!-- Bottom label: cosine-similarity comparison --&gt;
&lt;rect x="338.0" y="248.5" width="232.9" height="21.3" rx="5.7" fill="rgba(168,85,247,.08)" stroke="rgba(168,85,247,.2)" stroke-width="1.12"/&gt;
&lt;text x="454.4" y="262.7" text-anchor="middle" font-size="9.0" fill="#c084fc"&gt;cosine similarity comparison&lt;/text&gt;
&lt;/svg&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style="padding:0 min(1.25rem,var(--pub-panel-padding)) .875rem;"&gt;&lt;div style="margin-top:.625rem;padding:.7rem .9rem;border-radius:.625rem;background:rgba(139,92,246,.07);border:1px solid rgba(139,92,246,.18);"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#a78bfa;margin-bottom:.3rem;"&gt;Why shared encoders create a shared attack surface&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);line-height:1.55;color:#94a3b8;"&gt;Dolphins (OpenFlamingo, Perceiver Resampler + cross-attention) and LeapVAD (Qwen-VL-7B) both ground vision in a &lt;strong style="color:#e2e8f0;"&gt;CLIP-aligned InfoNCE contrastive manifold&lt;/strong&gt;; patches that maximise cosine drift in this space transfer directly between them (0.82&amp;ndash;0.91). OmniDrive&amp;rsquo;s EVA-02-L uses &lt;strong style="color:#e2e8f0;"&gt;masked image reconstruction (MIM) that distills CLIP&lt;/strong&gt;, producing a partially distinct feature manifold; its Q-Former connector (Omni-Q variant) further decouples spatial features during language alignment, routing adversarial signal through a different pathway, explaining the lower but still substantial cross-cluster transfer.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="pub-grid" style="padding:0 min(1.25rem,var(--pub-panel-padding)) 1.1rem;display:grid;gap:.4rem;"&gt;&lt;div style="border-radius:.6rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.18);padding:.5rem .5rem;text-align:center;"&gt;&lt;div style="font-size:1rem;font-weight:800;color:#4ade80;font-family:monospace;line-height:1.2;"&gt;TR&lt;sub style="font-size:.75em;"&gt;ij&lt;/sub&gt;&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#64748b;line-height:1.3;margin-top:.2rem;"&gt;Transfer&lt;br&gt;rate&lt;/div&gt;&lt;/div&gt;&lt;div style="border-radius:.6rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.18);padding:.5rem .5rem;text-align:center;"&gt;&lt;div style="font-size:1rem;font-weight:800;color:#4ade80;font-family:monospace;line-height:1.2;"&gt;TS&lt;sub style="font-size:.75em;"&gt;i&lt;/sub&gt;&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#64748b;line-height:1.3;margin-top:.2rem;"&gt;Outgoing&lt;br&gt;generalisation&lt;/div&gt;&lt;/div&gt;&lt;div style="border-radius:.6rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.18);padding:.5rem .5rem;text-align:center;"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;color:#4ade80;font-family:monospace;line-height:1.2;"&gt;Frame&lt;br&gt;ASR&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#64748b;line-height:1.3;margin-top:.2rem;"&gt;Temporal&lt;br&gt;persistence&lt;/div&gt;&lt;/div&gt;&lt;div style="border-radius:.6rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.18);padding:.5rem .5rem;text-align:center;"&gt;&lt;div style="font-size:1rem;font-weight:800;color:#4ade80;font-family:monospace;line-height:1.2;"&gt;VS&lt;sub style="font-size:.75em;"&gt;j&lt;/sub&gt;&lt;/div&gt;&lt;div style="font-size:var(--pub-text-small);color:#64748b;line-height:1.3;margin-top:.2rem;"&gt;Incoming&lt;br&gt;susceptibility&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style="grid-column:1/-1;display:flex;flex-direction:column;align-items:center;padding:.2rem 0;"&gt;&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(139,92,246,.5),rgba(139,92,246,.3));"&gt;&lt;/div&gt;&lt;span style="font-size:var(--pub-text-small);color:rgba(34,197,94,.7);letter-spacing:.06em;padding:.15rem .5rem;white-space:normal;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);border-radius:.3rem;"&gt;CLIP embedding similarities &amp;nbsp;&amp;rarr;&amp;nbsp; transfer matrix&lt;/span&gt;&lt;div style="width:1.5px;height:1.1rem;background:linear-gradient(to bottom,rgba(34,197,94,.3),rgba(34,197,94,.55));"&gt;&lt;/div&gt;&lt;svg width="10" height="6" viewBox="0 0 10 6" xmlns="http://www.w3.org/2000/svg"&gt;&lt;polygon points="0,0 10,0 5,6" fill="rgba(34,197,94,.65)"/&gt;&lt;/svg&gt;&lt;/div&gt;
&lt;div class="adv-pipe-phase" style="grid-column:1/-1;border-radius:1.25rem;border:1px solid rgba(34,197,94,.2);overflow:hidden;"&gt;&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.15);background:linear-gradient(135deg,rgba(34,197,94,.08),rgba(22,163,74,.05));display:flex;align-items:center;gap:.75rem;"&gt;&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(34,197,94,.15);display:flex;align-items:center;justify-content:center;color:#4ade80;"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M15 10.5a3 3 0 11-6 0 3 3 0 016 0z"/&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1115 0z"/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#4ade80;margin-bottom:.15rem;"&gt;Phase 05 &amp;nbsp;&amp;middot;&amp;nbsp; Transfer Evaluation&lt;/div&gt;&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Two driving scenarios, each tested with patches from all three VLM architectures. Transfer rates show how well attacks generalise across unseen models.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding:1.25rem;display:flex;flex-direction:column;gap:1.25rem;"&gt;&lt;div style="border-radius:1rem;border:1px solid rgba(148,163,184,.15);overflow:hidden;"&gt;&lt;div style="padding:.875rem min(1.25rem,var(--pub-panel-padding));background:rgba(34,197,94,.06);border-bottom:1px solid rgba(34,197,94,.12);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#4ade80;"&gt;Architecture Vulnerability Ranking&lt;/div&gt;&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;margin-top:.15rem;"&gt;Dolphins: most vulnerable to incoming attacks &amp;nbsp;·&amp;nbsp; LeapVAD: most transferable patches &amp;nbsp;·&amp;nbsp; CLIP encoder drives strongest bidirectional transfer&lt;/div&gt;&lt;/div&gt;&lt;div class="pub-scroll" style="overflow-x:auto;padding:.25rem 0;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;&lt;table style="width:100%;border-collapse:collapse;font-size:var(--pub-text-body);"&gt;&lt;thead&gt;&lt;tr style="border-bottom:1px solid rgba(148,163,184,.15);"&gt;&lt;th style="padding:.6rem 1rem;font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;text-align:left;"&gt;Metric&lt;/th&gt;&lt;th style="padding:.6rem 1rem;font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;text-align:center;"&gt;Dolphins&lt;/th&gt;&lt;th style="padding:.6rem 1rem;font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;text-align:center;"&gt;OmniDrive&lt;/th&gt;&lt;th style="padding:.6rem 1rem;font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;text-align:center;"&gt;LeapVAD&lt;/th&gt;&lt;th style="padding:.6rem 1rem;font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#64748b;text-align:left;"&gt;Interpretation&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style="border-bottom:1px solid rgba(148,163,184,.06);background:rgba(148,163,184,.04);"&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;white-space:nowrap;"&gt;Self-Attack ASR&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;76.0%&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;&lt;strong style="color:#f87171;"&gt;84.4%&lt;/strong&gt;&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;71.7%&lt;/td&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-small);color:#94a3b8;"&gt;OmniDrive hardest to fool from outside, but optimised attacks on it succeed best&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom:1px solid rgba(148,163,184,.06);"&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;white-space:nowrap;"&gt;Vulnerability Score&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;&lt;strong style="color:#f87171;"&gt;0.82&lt;/strong&gt;&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;0.810&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;0.814&lt;/td&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-small);color:#94a3b8;"&gt;Dolphins most affected by patches from other architectures&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom:1px solid rgba(148,163,184,.06);background:rgba(148,163,184,.04);"&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;white-space:nowrap;"&gt;Transfer-Out Rate&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;0.792&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;0.772&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;&lt;strong style="color:#f87171;"&gt;0.882&lt;/strong&gt;&lt;/td&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-small);color:#94a3b8;"&gt;LeapVAD patches generalise best across unseen architectures&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom:1px solid rgba(148,163,184,.06);"&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;white-space:nowrap;"&gt;Universal Patch ASR&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;64.3%&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;&lt;strong style="color:#f87171;"&gt;69.8%&lt;/strong&gt;&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;63.5%&lt;/td&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-small);color:#94a3b8;"&gt;A single patch fools all three; OmniDrive most susceptible&lt;/td&gt;&lt;/tr&gt;&lt;tr style="border-bottom:1px solid rgba(148,163,184,.06);background:rgba(148,163,184,.04);"&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-body);font-weight:600;color:#e2e8f0;white-space:nowrap;"&gt;CLIP Enc. ASR&lt;div style="font-size:var(--pub-text-small);font-weight:400;color:#64748b;margin-top:.1rem;"&gt;encoder-pathway&lt;/div&gt;&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;79.2%&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;&lt;strong style="color:#f87171;"&gt;81.5%&lt;/strong&gt;&lt;/td&gt;&lt;td style="padding:.6rem 1rem;text-align:center;font-family:monospace;font-size:var(--pub-text-body);color:#cbd5e1;"&gt;76.8%&lt;/td&gt;&lt;td style="padding:.6rem 1rem;font-size:var(--pub-text-small);color:#94a3b8;"&gt;Attack success rate routed through the shared CLIP encoder pathway; confirms encoder is the primary vulnerability driver&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="paper-section-anchor" id="paper-impact" tabindex="-1" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(251,191,36,.2);background:linear-gradient(135deg,rgba(251,191,36,.05),rgba(245,158,11,.03));overflow:hidden;"&gt;&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.12);display:flex;align-items:center;gap:.75rem;"&gt;&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(251,191,36,.15);display:flex;align-items:center;justify-content:center;color:#fbbf24;"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#fbbf24;"&gt;Implications&lt;/div&gt;&lt;/div&gt;&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));display:flex;flex-direction:column;gap:.6rem;"&gt;&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Security&lt;/span&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Architectural diversity is not a sufficient defense.&lt;/strong&gt; Patches optimised for one model remain 73&amp;ndash;91% effective on others; an attacker with physical access to a roadside billboard needs no knowledge of which model the target vehicle runs.&lt;/p&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Design&lt;/span&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Shared CLIP encoders create a shared attack surface.&lt;/strong&gt; Deploying models with distinct vision encoder families (CLIP vs. non-CLIP) would structurally limit transferability; EVA-02-L&amp;rsquo;s MIM training already reduces but does not eliminate cross-cluster transfer.&lt;/p&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Defence&lt;/span&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Temporal filtering and ensemble voting are insufficient.&lt;/strong&gt; Attacks persist across 64&amp;ndash;79% of frames in the critical decision window, long enough to corrupt decisions before any frame-level filter or multi-model vote can compensate.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:flex-start;gap:.6rem;padding:.875rem min(1.1rem,var(--pub-panel-padding));border-radius:.75rem;background:rgba(99,102,241,.05);border:1px solid rgba(99,102,241,.15);margin-bottom:1rem;"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="#6366f1" stroke-width="2" style="flex-shrink:0;margin-top:.15rem;"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"/&gt;&lt;/svg&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Transfer rates evaluated via &lt;strong style="color:#6366f1;"&gt;TR&lt;sub&gt;ij&lt;/sub&gt; = ASR&lt;sub&gt;ij&lt;/sub&gt; / ASR&lt;sub&gt;ii&lt;/sub&gt;&lt;/strong&gt;, normalising cross-architecture success against same-model baseline. Diagonal entries (self-attacks) shown in gray. All experiments conducted in CARLA simulator with physically realizable patches. Scenarios: Crosswalk/Bus Stop and Highway/Billboard.&lt;/p&gt;&lt;/div&gt;&lt;script&gt;(function(){if(!("IntersectionObserver" in window))return;var io=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add("adv-visible");io.unobserve(e.target);}});},{threshold:0});document.querySelectorAll(".adv-scenario,.adv-pipe-phase").forEach(function(el){io.observe(el);});}());&lt;/script&gt;&lt;/div&gt;
&lt;/p&gt;</description></item><item><title>Small Language Models on the Edge for Real-World Agentic Systems in Industry</title><link>https://davidferna.com/publications/sacair-2025/</link><pubDate>Mon, 01 Dec 2025 00:00:00 +0000</pubDate><guid>https://davidferna.com/publications/sacair-2025/</guid><description>&lt;p&gt;&lt;style&gt;
/* ── Scroll-reveal: shared across intro / benchmark / planning / results ──
Hiding is gated behind .slm-js (set below only when IntersectionObserver
exists), so content stays visible without JS and under reduced motion. */
@keyframes slm-up {
from { opacity: 0; transform: translateY(18px) }
to { opacity: 1; transform: none }
}
@keyframes slm-grow { to { transform: scaleX(1) } }
@media screen and (prefers-reduced-motion: no-preference) {
.slm-js .slm-reveal { opacity: 0 }
.slm-js .slm-reveal.slm-visible { animation: slm-up .55s ease forwards }
.slm-js .slm-reveal.slm-d1.slm-visible { animation-delay: .1s }
.slm-js .slm-reveal.slm-d2.slm-visible { animation-delay: .25s }
.slm-js .slm-reveal.slm-d3.slm-visible { animation-delay: .4s }
/* bars grow from zero when their own section scrolls into view */
.slm-js .slm-bar { transform: scaleX(0); transform-origin: left center }
.slm-js .slm-visible .slm-bar { animation: slm-grow 1s cubic-bezier(.22,1,.36,1) forwards }
}
/* ── Deliberately wide figures remain usable on touch and keyboard ── */
.slm-scroll {
overscroll-behavior-inline: contain;
scrollbar-color: rgba(129,140,248,.45) rgba(15,23,42,.45);
scrollbar-width: thin;
-webkit-overflow-scrolling: touch;
}
.slm-scroll:focus-visible {
outline: 2px solid rgba(129,140,248,.75);
outline-offset: 3px;
}
.slm-scroll::-webkit-scrollbar { height: 6px }
.slm-scroll::-webkit-scrollbar-track {
background: rgba(15,23,42,.45);
border-radius: 999px;
}
.slm-scroll::-webkit-scrollbar-thumb {
background: rgba(129,140,248,.45);
border-radius: 999px;
}
&lt;/style&gt;
&lt;script&gt;if("IntersectionObserver" in window)document.documentElement.classList.add("slm-js")&lt;/script&gt;
&lt;div class="not-prose" style="margin:0;padding:0;"&gt;
&lt;div class="pub-grid" style="display:grid;gap:1rem;margin-bottom:1.5rem;"&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#ef4444;margin-bottom:.5rem;"&gt;01 &amp;nbsp;&amp;middot;&amp;nbsp; The Problem&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Large language models are hard to put to work inside a company: they cost a lot to run, they &lt;strong style="color:#e2e8f0;"&gt;send private data to the cloud&lt;/strong&gt;, and they stop working the moment the network does.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#818cf8;margin-bottom:.5rem;"&gt;02 &amp;nbsp;&amp;middot;&amp;nbsp; The Approach&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Run &lt;strong style="color:#e2e8f0;"&gt;small models under 7B parameters&lt;/strong&gt; on ordinary hardware, and make up for their smaller capacity with &lt;strong style="color:#e2e8f0;"&gt;agentic architectures&lt;/strong&gt; that plan, route, and check their own work.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#22c55e;margin-bottom:.5rem;"&gt;03 &amp;nbsp;&amp;middot;&amp;nbsp; The Finding&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;On commodity hardware, &lt;strong style="color:#e2e8f0;"&gt;Phi&amp;#8209;4&lt;/strong&gt; reaches C1&amp;#8209;level translation and a 0.883 summarization score, while local and in&amp;#8209;browser hosting answer &lt;strong style="color:#e2e8f0;"&gt;3&amp;ndash;4&amp;times; faster&lt;/strong&gt; than the cloud.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="paper-method" tabindex="-1" class="slm-reveal paper-section-anchor" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(168,85,247,.2);overflow:hidden;"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(168,85,247,.12);background:linear-gradient(135deg,rgba(168,85,247,.1),rgba(59,130,246,.06));display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(168,85,247,.18);display:flex;align-items:center;justify-content:center;color:#c084fc;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 6.042A8.967 8.967 0 006 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 016 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 016-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0018 18a8.967 8.967 0 00-6 2.292m0-14.25v14.25"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#c084fc;margin-bottom:.1rem;"&gt;Contribution 1 &amp;middot; A Bias-Resistant Benchmark&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Grading a small model is subjective, so two rival graders must agree. Role-play makes them careful; consensus curbs single-judge bias.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ multi-agent grading pipeline ═══ --&gt;
&lt;div style="padding:.9rem 1rem .6rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;
&lt;div class="slm-scroll pub-scroll" tabindex="0" role="region" aria-label="Scrollable multi-agent benchmarking diagram" style="overflow-x:auto;"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 900 470" style="display:block;--pub-diagram-width:56.25rem;" xmlns="http://www.w3.org/2000/svg" font-family="system-ui,-apple-system,sans-serif" role="img" aria-label="Role-based multi-agent benchmarking framework: an exam set is handed to a Proctor agent, which sends a translation exercise to each small language model cast as a student and collects its answer. The exercise and answer are passed to two independent grader agents, Mnr. Goddard powered by GPT-4 and Mev. Vorster powered by Claude, who discuss the work and reach a consensus grade on the CEFR scale. The agreed grade and review return to the Proctor, which records a structured benchmark result of student, languages, CEFR grade, and review summary."&gt;
&lt;defs&gt;
&lt;marker id="slmHeadSlate" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" refX="7" refY="3.4" orient="auto"&gt;&lt;path d="M0,0 L8,3.4 L0,6.8 Z" fill="#64748b"/&gt;&lt;/marker&gt;
&lt;marker id="slmHeadPurple" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" refX="7" refY="3.4" orient="auto"&gt;&lt;path d="M0,0 L8,3.4 L0,6.8 Z" fill="#a855f7"/&gt;&lt;/marker&gt;
&lt;marker id="slmHeadGreen" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" refX="7" refY="3.4" orient="auto"&gt;&lt;path d="M0,0 L8,3.4 L0,6.8 Z" fill="#22c55e"/&gt;&lt;/marker&gt;
&lt;marker id="slmHeadGreenStart" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" refX="1" refY="3.4" orient="auto"&gt;&lt;path d="M8,0 L0,3.4 L8,6.8 Z" fill="#22c55e"/&gt;&lt;/marker&gt;
&lt;marker id="slmHeadAmber" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" refX="7.5" refY="3.6" orient="auto"&gt;&lt;path d="M0,0 L8.5,3.6 L0,7.2 Z" fill="#f59e0b"/&gt;&lt;/marker&gt;
&lt;/defs&gt;
&lt;!-- outer container --&gt;
&lt;rect x="6" y="6" width="888" height="458" rx="18" fill="rgba(168,85,247,.03)" stroke="rgba(168,85,247,.22)" stroke-width="1.2"/&gt;
&lt;!-- ═ Exam set (top) ═ --&gt;
&lt;g&gt;
&lt;rect x="420" y="16" width="30" height="21" rx="4" fill="rgba(59,130,246,.18)" stroke="#3b82f6" stroke-width="1.1"/&gt;
&lt;rect x="424" y="20" width="30" height="21" rx="4" fill="rgba(59,130,246,.28)" stroke="#3b82f6" stroke-width="1.1"/&gt;
&lt;rect x="428" y="24" width="30" height="21" rx="4" fill="rgba(59,130,246,.42)" stroke="#60a5fa" stroke-width="1.1"/&gt;
&lt;text x="470" y="38" font-size="10.5" font-weight="700" fill="#93c5fd" text-anchor="start"&gt;Exam set&lt;/text&gt;
&lt;text x="470" y="50" font-size="8" fill="#94a3b8" text-anchor="start"&gt;English &amp;#8594; Afrikaans&lt;/text&gt;
&lt;/g&gt;
&lt;!-- ① Exams → Proctor --&gt;
&lt;line x1="443" y1="46" x2="443" y2="175" stroke="#64748b" stroke-width="1.6" marker-end="url(#slmHeadSlate)"/&gt;
&lt;circle cx="443" cy="120" r="9" fill="rgba(30,41,59,.95)" stroke="#94a3b8" stroke-width="1.2"/&gt;
&lt;text x="443" y="123.5" font-size="9" font-weight="800" fill="#cbd5e1" text-anchor="middle"&gt;1&lt;/text&gt;
&lt;!-- ═ Proctor (hub) ═ --&gt;
&lt;rect x="352" y="178" width="184" height="132" rx="14" fill="rgba(168,85,247,.12)" stroke="#a855f7" stroke-width="1.5"/&gt;
&lt;text x="444" y="212" font-size="13" font-weight="800" fill="#c084fc" text-anchor="middle"&gt;Proctor&lt;/text&gt;
&lt;text x="444" y="230" font-size="9.5" fill="#d8b4fe" text-anchor="middle"&gt;LLM agent&lt;/text&gt;
&lt;text x="444" y="256" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;sets exercises &amp;middot; routes answers&lt;/text&gt;
&lt;text x="444" y="269" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;hides grades from students&lt;/text&gt;
&lt;text x="444" y="290" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;records final results&lt;/text&gt;
&lt;!-- ═ SLM students panel (left) ═ --&gt;
&lt;rect x="24" y="120" width="150" height="316" rx="12" fill="rgba(148,163,184,.07)" stroke="rgba(148,163,184,.3)" stroke-width="1.2"/&gt;
&lt;text x="99" y="141" font-size="11" font-weight="800" fill="#cbd5e1" text-anchor="middle"&gt;SLM &amp;ldquo;students&amp;rdquo;&lt;/text&gt;
&lt;g font-size="9" font-family="ui-monospace,monospace" fill="#e2e8f0" text-anchor="middle"&gt;
&lt;rect x="36" y="153" width="126" height="24" rx="6" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.3)"/&gt;&lt;text x="99" y="169"&gt;stablelm&lt;/text&gt;
&lt;rect x="36" y="183" width="126" height="24" rx="6" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.3)"/&gt;&lt;text x="99" y="199"&gt;tower-instruct&lt;/text&gt;
&lt;rect x="36" y="213" width="126" height="24" rx="6" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.3)"/&gt;&lt;text x="99" y="229"&gt;llama&amp;#8202;3.2&lt;/text&gt;
&lt;rect x="36" y="243" width="126" height="24" rx="6" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.3)"/&gt;&lt;text x="99" y="259"&gt;falcon3&lt;/text&gt;
&lt;rect x="36" y="273" width="126" height="24" rx="6" fill="rgba(168,85,247,.16)" stroke="rgba(168,85,247,.5)"/&gt;&lt;text x="99" y="289" fill="#e9d5ff" font-weight="700"&gt;phi-4&lt;/text&gt;
&lt;rect x="36" y="303" width="126" height="24" rx="6" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.3)"/&gt;&lt;text x="99" y="319"&gt;madlad-400&lt;/text&gt;
&lt;rect x="36" y="333" width="126" height="24" rx="6" fill="rgba(59,130,246,.1)" stroke="rgba(59,130,246,.3)"/&gt;&lt;text x="99" y="349"&gt;vulavula&lt;/text&gt;
&lt;/g&gt;
&lt;text x="99" y="378" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;7 open models &amp;middot; &amp;lt; 7B params&lt;/text&gt;
&lt;text x="99" y="392" font-size="8" fill="#64748b" text-anchor="middle"&gt;graded blind to the outcome&lt;/text&gt;
&lt;!-- ② Proctor → SLM (exercise) --&gt;
&lt;line x1="352" y1="224" x2="178" y2="224" stroke="#a855f7" stroke-width="1.7" marker-end="url(#slmHeadPurple)"/&gt;
&lt;circle cx="265" cy="224" r="9" fill="rgba(88,28,135,.9)" stroke="#a855f7" stroke-width="1.2"/&gt;
&lt;text x="265" y="227.5" font-size="9" font-weight="800" fill="#e9d5ff" text-anchor="middle"&gt;2&lt;/text&gt;
&lt;text x="265" y="212" font-size="8.5" fill="#c4b5fd" text-anchor="middle"&gt;exercise&lt;/text&gt;
&lt;!-- ③ SLM → Proctor (answer) --&gt;
&lt;line x1="178" y1="262" x2="350" y2="262" stroke="#64748b" stroke-width="1.6" marker-end="url(#slmHeadSlate)"/&gt;
&lt;circle cx="265" cy="262" r="9" fill="rgba(30,41,59,.95)" stroke="#94a3b8" stroke-width="1.2"/&gt;
&lt;text x="265" y="265.5" font-size="9" font-weight="800" fill="#cbd5e1" text-anchor="middle"&gt;3&lt;/text&gt;
&lt;text x="265" y="278" font-size="8.5" fill="#94a3b8" text-anchor="middle"&gt;translation&lt;/text&gt;
&lt;!-- ④ Proctor → Grader #1 (exercise + answer) --&gt;
&lt;line x1="536" y1="212" x2="694" y2="152" stroke="#a855f7" stroke-width="1.7" marker-end="url(#slmHeadPurple)"/&gt;
&lt;circle cx="615" cy="182" r="9" fill="rgba(88,28,135,.9)" stroke="#a855f7" stroke-width="1.2"/&gt;
&lt;text x="615" y="185.5" font-size="9" font-weight="800" fill="#e9d5ff" text-anchor="middle"&gt;4&lt;/text&gt;
&lt;text x="600" y="205" font-size="8" fill="#c4b5fd" text-anchor="middle"&gt;exercise + answer&lt;/text&gt;
&lt;!-- ═ Grader #1 (top right) ═ --&gt;
&lt;rect x="698" y="92" width="186" height="118" rx="13" fill="rgba(34,197,94,.09)" stroke="#22c55e" stroke-width="1.4"/&gt;
&lt;text x="791" y="120" font-size="12" font-weight="800" fill="#4ade80" text-anchor="middle"&gt;Grader #1&lt;/text&gt;
&lt;text x="791" y="140" font-size="10.5" font-weight="700" fill="#86efac" text-anchor="middle"&gt;Mnr. Goddard&lt;/text&gt;
&lt;text x="791" y="157" font-size="9.5" font-family="ui-monospace,monospace" fill="#e2e8f0" text-anchor="middle"&gt;GPT-4&lt;/text&gt;
&lt;text x="791" y="180" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;Africaans instructor role&lt;/text&gt;
&lt;text x="791" y="193" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;grades on the CEFR scale&lt;/text&gt;
&lt;!-- ⑤ Grader #1 ↔ Grader #2 (discussion / consensus) --&gt;
&lt;line x1="791" y1="212" x2="791" y2="298" stroke="#22c55e" stroke-width="1.7" stroke-dasharray="6 4" marker-start="url(#slmHeadGreenStart)" marker-end="url(#slmHeadGreen)"/&gt;
&lt;circle cx="791" cy="238" r="9" fill="rgba(20,83,45,.9)" stroke="#22c55e" stroke-width="1.3"/&gt;
&lt;text x="791" y="241.5" font-size="9" font-weight="800" fill="#86efac" text-anchor="middle"&gt;5&lt;/text&gt;
&lt;rect x="748" y="262" width="86" height="17" rx="5" fill="rgba(11,16,32,.92)"/&gt;
&lt;text x="791" y="274" font-size="8.5" font-weight="700" fill="#4ade80" text-anchor="middle"&gt;discuss &amp;#8594; agree&lt;/text&gt;
&lt;!-- ═ Grader #2 (bottom right) ═ --&gt;
&lt;rect x="698" y="300" width="186" height="118" rx="13" fill="rgba(34,197,94,.09)" stroke="#22c55e" stroke-width="1.4"/&gt;
&lt;text x="791" y="328" font-size="12" font-weight="800" fill="#4ade80" text-anchor="middle"&gt;Grader #2&lt;/text&gt;
&lt;text x="791" y="348" font-size="10.5" font-weight="700" fill="#86efac" text-anchor="middle"&gt;Mev. Vorster&lt;/text&gt;
&lt;text x="791" y="365" font-size="9.5" font-family="ui-monospace,monospace" fill="#e2e8f0" text-anchor="middle"&gt;Claude&lt;/text&gt;
&lt;text x="791" y="388" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;independent second grader&lt;/text&gt;
&lt;text x="791" y="401" font-size="8" fill="#94a3b8" text-anchor="middle"&gt;a different model, on purpose&lt;/text&gt;
&lt;!-- ⑥ Grader #2 → Proctor (grade + review) --&gt;
&lt;line x1="696" y1="350" x2="538" y2="276" stroke="#22c55e" stroke-width="1.7" marker-end="url(#slmHeadGreen)"/&gt;
&lt;circle cx="617" cy="313" r="9" fill="rgba(20,83,45,.9)" stroke="#22c55e" stroke-width="1.2"/&gt;
&lt;text x="617" y="316.5" font-size="9" font-weight="800" fill="#86efac" text-anchor="middle"&gt;6&lt;/text&gt;
&lt;text x="628" y="336" font-size="8" fill="#86efac" text-anchor="middle"&gt;grade + review&lt;/text&gt;
&lt;!-- ⑦ Proctor → Benchmark result --&gt;
&lt;line x1="444" y1="310" x2="444" y2="354" stroke="#f59e0b" stroke-width="1.7" marker-end="url(#slmHeadAmber)"/&gt;
&lt;circle cx="444" cy="332" r="9" fill="rgba(120,53,15,.9)" stroke="#f59e0b" stroke-width="1.2"/&gt;
&lt;text x="444" y="335.5" font-size="9" font-weight="800" fill="#fbbf24" text-anchor="middle"&gt;7&lt;/text&gt;
&lt;!-- ═ Benchmark result (bottom) ═ --&gt;
&lt;rect x="340" y="356" width="208" height="96" rx="12" fill="rgba(245,158,11,.08)" stroke="#f59e0b" stroke-width="1.3"/&gt;
&lt;text x="444" y="376" font-size="10.5" font-weight="800" fill="#fbbf24" text-anchor="middle"&gt;Benchmark result&lt;/text&gt;
&lt;g font-size="8.5" font-family="ui-monospace,monospace" text-anchor="start"&gt;
&lt;text x="356" y="394" fill="#94a3b8"&gt;student:&lt;/text&gt;&lt;text x="418" y="394" fill="#e2e8f0"&gt;vulavula&lt;/text&gt;
&lt;text x="356" y="408" fill="#94a3b8"&gt;target:&lt;/text&gt;&lt;text x="418" y="408" fill="#e2e8f0"&gt;Afrikaans&lt;/text&gt;
&lt;text x="356" y="422" fill="#94a3b8"&gt;grade:&lt;/text&gt;&lt;text x="418" y="422" fill="#4ade80" font-weight="700"&gt;B1 &amp;nbsp;(CEFR)&lt;/text&gt;
&lt;text x="356" y="436" fill="#94a3b8"&gt;review:&lt;/text&gt;&lt;text x="418" y="436" fill="#cbd5e1"&gt;agreed summary&lt;/text&gt;
&lt;/g&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;p style="margin:.4rem .25rem 0;font-size:var(--pub-text-body);line-height:1.65;color:#64748b;text-align:center;"&gt;Each open model is examined as a language-learning student, then graded by two frontier models playing rival instructors who must reach a single CEFR verdict.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ═══ the loop in seven steps ═══ --&gt;
&lt;div style="padding:.9rem min(1.25rem,var(--pub-panel-padding));"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#c084fc;margin-bottom:.7rem;"&gt;The exam loop, step by step&lt;/div&gt;
&lt;div class="pub-grid" style="display:grid;gap:.5rem;"&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(148,163,184,.22);background:rgba(148,163,184,.04);padding:.7rem .85rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(148,163,184,.2);color:#cbd5e1;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;1&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Set the exam&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The Proctor agent draws a translation exercise, English to Afrikaans, from a fixed exam set.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(168,85,247,.22);background:rgba(168,85,247,.04);padding:.7rem .85rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(168,85,247,.18);color:#d8b4fe;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;2&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Student answers&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Each SLM, cast as a student, returns a translation with no idea it is being scored.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(148,163,184,.22);background:rgba(148,163,184,.04);padding:.7rem .85rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(148,163,184,.2);color:#cbd5e1;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;3&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Collect the answer&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The Proctor takes the answer back and keeps the grade hidden from the student.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(168,85,247,.22);background:rgba(168,85,247,.04);padding:.7rem .85rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(168,85,247,.18);color:#d8b4fe;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;4&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Hand to graders&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The exercise and answer go to two grader agents, each a different frontier model.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(34,197,94,.22);background:rgba(34,197,94,.04);padding:.7rem .85rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(34,197,94,.18);color:#4ade80;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;5&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Discuss to consensus&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Goddard (GPT-4) and Vorster (Claude) debate the work and agree one CEFR grade.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(34,197,94,.22);background:rgba(34,197,94,.04);padding:.7rem .85rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(34,197,94,.18);color:#4ade80;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;6&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Return the verdict&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The agreed grade and written review flow back to the Proctor.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(245,158,11,.22);background:rgba(245,158,11,.04);padding:.7rem .85rem;margin-top:.5rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.4rem;margin-bottom:.3rem;"&gt;&lt;span style="flex-shrink:0;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(245,158,11,.18);color:#fbbf24;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;7&lt;/span&gt;&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Record the result&lt;/span&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The Proctor logs a structured record: student, language pair, agreed CEFR grade, and a review summary, ready to compare across all seven models.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="slm-reveal" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(59,130,246,.2);overflow:hidden;"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(59,130,246,.12);background:linear-gradient(135deg,rgba(59,130,246,.1),rgba(99,102,241,.06));display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(59,130,246,.18);display:flex;align-items:center;justify-content:center;color:#60a5fa;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 17.25v1.007a3 3 0 01-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0115 18.257V17.25m6-12V15a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 15V5.25m18 0A2.25 2.25 0 0018.75 3H5.25A2.25 2.25 0 003 5.25m18 0V12a2.25 2.25 0 01-2.25 2.25H5.25A2.25 2.25 0 013 12V5.25"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#60a5fa;margin-bottom:.1rem;"&gt;Contribution 2 &amp;middot; Planning a Small Model Can Follow&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Asked to plan in one shot, a small model rambles. Split the job into three narrow steps and it stays on track.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ request → plan transformation ═══ --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding)) .6rem;border-bottom:1px solid rgba(59,130,246,.08);"&gt;
&lt;div style="display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;font-size:var(--pub-text-small);color:#94a3b8;"&gt;
&lt;span style="border-radius:.5rem;border:1px solid rgba(148,163,184,.3);background:rgba(148,163,184,.06);padding:.35rem .7rem;color:#cbd5e1;"&gt;a messy user request&lt;/span&gt;
&lt;span style="color:#3b82f6;font-weight:800;"&gt;&amp;#8594;&lt;/span&gt;
&lt;span style="border-radius:.5rem;border:1px solid rgba(59,130,246,.35);background:rgba(59,130,246,.08);padding:.35rem .7rem;color:#93c5fd;"&gt;three-phase pipeline&lt;/span&gt;
&lt;span style="color:#3b82f6;font-weight:800;"&gt;&amp;#8594;&lt;/span&gt;
&lt;span style="border-radius:.5rem;border:1px solid rgba(34,197,94,.35);background:rgba(34,197,94,.08);padding:.35rem .7rem;color:#4ade80;"&gt;a valid, executable plan&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ the three phases ═══ --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding)) 1.2rem;"&gt;
&lt;div class="pub-grid" style="display:grid;gap:.9rem;"&gt;
&lt;!-- Phase 1 --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(59,130,246,.22);background:rgba(59,130,246,.04);overflow:hidden;"&gt;
&lt;div style="padding:.6rem .9rem;border-bottom:1px solid rgba(59,130,246,.12);display:flex;align-items:center;gap:.5rem;"&gt;
&lt;span style="flex-shrink:0;width:1.3rem;height:1.3rem;border-radius:.4rem;background:rgba(59,130,246,.18);color:#93c5fd;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;1&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Subtask identification&lt;/span&gt;
&lt;/div&gt;
&lt;div style="padding:.8rem .9rem;"&gt;
&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" width="100%" height="52" viewBox="0 0 200 52" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="One request splits into three subtasks." style="margin-bottom:.5rem;--pub-diagram-width:12.5rem;"&gt;
&lt;rect x="6" y="19" width="52" height="16" rx="4" fill="rgba(148,163,184,.15)" stroke="rgba(148,163,184,.4)"/&gt;&lt;text x="32" y="30.5" font-size="8" fill="#cbd5e1" text-anchor="middle" font-family="system-ui"&gt;request&lt;/text&gt;
&lt;path d="M58 27 H84" stroke="#3b82f6" stroke-width="1.3" fill="none"/&gt;
&lt;path d="M84 27 L84 8 L120 8 M84 27 H120 M84 27 L84 46 L120 46" stroke="#3b82f6" stroke-width="1.3" fill="none"/&gt;
&lt;rect x="120" y="1" width="72" height="14" rx="4" fill="rgba(59,130,246,.12)" stroke="rgba(59,130,246,.4)"/&gt;&lt;text x="156" y="11" font-size="7.5" fill="#93c5fd" text-anchor="middle" font-family="ui-monospace,monospace"&gt;subtask a&lt;/text&gt;
&lt;rect x="120" y="20" width="72" height="14" rx="4" fill="rgba(59,130,246,.12)" stroke="rgba(59,130,246,.4)"/&gt;&lt;text x="156" y="30" font-size="7.5" fill="#93c5fd" text-anchor="middle" font-family="ui-monospace,monospace"&gt;subtask b&lt;/text&gt;
&lt;rect x="120" y="39" width="72" height="14" rx="4" fill="rgba(59,130,246,.12)" stroke="rgba(59,130,246,.4)"/&gt;&lt;text x="156" y="49" font-size="7.5" fill="#93c5fd" text-anchor="middle" font-family="ui-monospace,monospace"&gt;subtask c&lt;/text&gt;
&lt;/svg&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Break the request into small, single-purpose steps, so each one is simple enough for a small model to get right.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Phase 2 --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(99,102,241,.22);background:rgba(99,102,241,.04);overflow:hidden;"&gt;
&lt;div style="padding:.6rem .9rem;border-bottom:1px solid rgba(99,102,241,.12);display:flex;align-items:center;gap:.5rem;"&gt;
&lt;span style="flex-shrink:0;width:1.3rem;height:1.3rem;border-radius:.4rem;background:rgba(99,102,241,.18);color:#a5b4fc;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;2&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Dependency reasoning&lt;/span&gt;
&lt;/div&gt;
&lt;div style="padding:.8rem .9rem;"&gt;
&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" width="100%" height="52" viewBox="0 0 200 52" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Subtasks arranged into a small dependency graph." style="margin-bottom:.5rem;--pub-diagram-width:12.5rem;"&gt;
&lt;defs&gt;&lt;marker id="slmPlanHead" markerWidth="7" markerHeight="7" refX="5" refY="2.4" orient="auto"&gt;&lt;path d="M0,0 L5,2.4 L0,4.8 Z" fill="#818cf8"/&gt;&lt;/marker&gt;&lt;/defs&gt;
&lt;rect x="8" y="19" width="46" height="15" rx="4" fill="rgba(99,102,241,.14)" stroke="rgba(99,102,241,.45)"/&gt;&lt;text x="31" y="29.5" font-size="7.5" fill="#c7d2fe" text-anchor="middle" font-family="ui-monospace,monospace"&gt;a&lt;/text&gt;
&lt;rect x="140" y="3" width="46" height="15" rx="4" fill="rgba(99,102,241,.14)" stroke="rgba(99,102,241,.45)"/&gt;&lt;text x="163" y="13.5" font-size="7.5" fill="#c7d2fe" text-anchor="middle" font-family="ui-monospace,monospace"&gt;b&lt;/text&gt;
&lt;rect x="140" y="35" width="46" height="15" rx="4" fill="rgba(99,102,241,.14)" stroke="rgba(99,102,241,.45)"/&gt;&lt;text x="163" y="45.5" font-size="7.5" fill="#c7d2fe" text-anchor="middle" font-family="ui-monospace,monospace"&gt;c&lt;/text&gt;
&lt;path d="M54 24 L138 11" stroke="#818cf8" stroke-width="1.3" fill="none" marker-end="url(#slmPlanHead)"/&gt;
&lt;path d="M54 28 L138 42" stroke="#818cf8" stroke-width="1.3" fill="none" marker-end="url(#slmPlanHead)"/&gt;
&lt;/svg&gt;&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Work out the order: which steps can run now and which must wait for another step&amp;rsquo;s output first.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Phase 3 --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(34,197,94,.22);background:rgba(34,197,94,.04);overflow:hidden;"&gt;
&lt;div style="padding:.6rem .9rem;border-bottom:1px solid rgba(34,197,94,.12);display:flex;align-items:center;gap:.5rem;"&gt;
&lt;span style="flex-shrink:0;width:1.3rem;height:1.3rem;border-radius:.4rem;background:rgba(34,197,94,.18);color:#4ade80;font-size:var(--pub-text-label);font-weight:800;display:flex;align-items:center;justify-content:center;"&gt;3&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Schema-constrained output&lt;/span&gt;
&lt;/div&gt;
&lt;div style="padding:.8rem .9rem;"&gt;
&lt;div class="pub-scroll" style="margin-bottom:.5rem;border-radius:.5rem;background:rgba(15,23,42,.55);border:1px solid rgba(34,197,94,.25);padding:.45rem .6rem;font-family:ui-monospace,monospace;font-size:var(--pub-text-small);line-height:1.5;color:#cbd5e1;overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;div style="white-space:nowrap;"&gt;&lt;span style="color:#64748b;"&gt;[&lt;/span&gt;&lt;/div&gt;
&lt;div style="white-space:nowrap;"&gt;&amp;nbsp;&amp;nbsp;{ &lt;span style="color:#4ade80;"&gt;"step"&lt;/span&gt;:1, &lt;span style="color:#4ade80;"&gt;"needs"&lt;/span&gt;:[] },&lt;/div&gt;
&lt;div style="white-space:nowrap;"&gt;&amp;nbsp;&amp;nbsp;{ &lt;span style="color:#4ade80;"&gt;"step"&lt;/span&gt;:2, &lt;span style="color:#4ade80;"&gt;"needs"&lt;/span&gt;:[1] }&lt;/div&gt;
&lt;div style="white-space:nowrap;"&gt;&lt;span style="color:#64748b;"&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Emit the plan as JSON locked to a fixed schema, so it always parses and can be run without hand-fixing.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:.85rem .1rem 0;font-size:var(--pub-text-body);line-height:1.65;color:#64748b;"&gt;Splitting reasoning from formatting is the key move: the model thinks in phases 1 and 2, then only has to fill in a rigid structure in phase 3, which is exactly where small models tend to slip.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="paper-results" tabindex="-1" class="slm-reveal paper-section-anchor" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(34,197,94,.2);overflow:hidden;"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.12);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(59,130,246,.05));display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(34,197,94,.18);display:flex;align-items:center;justify-content:center;color:#4ade80;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#4ade80;margin-bottom:.1rem;"&gt;What The Small Models Actually Did&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Phi-4 led the field, matching advanced-level language work while running on ordinary hardware.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ headline stat band ═══ --&gt;
&lt;div style="padding:1.25rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(148,163,184,.08);"&gt;
&lt;div class="pub-grid" style="display:grid;gap:.9rem;"&gt;
&lt;div style="text-align:center;padding:.5rem;"&gt;
&lt;div style="font-size:1.9rem;font-weight:800;line-height:1;color:#4ade80;"&gt;C1&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.35rem;line-height:1.35;"&gt;Phi-4 translation, on the CEFR scale (advanced)&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.5rem;"&gt;
&lt;div style="font-size:1.9rem;font-weight:800;line-height:1;color:#4ade80;"&gt;0.883&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.35rem;line-height:1.35;"&gt;Phi-4 summarization, G-Eval score&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.5rem;"&gt;
&lt;div style="font-size:1.9rem;font-weight:800;line-height:1;color:#60a5fa;"&gt;3&amp;ndash;4&amp;times;&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.35rem;line-height:1.35;"&gt;faster to answer than a cloud service&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.5rem;"&gt;
&lt;div style="font-size:1.9rem;font-weight:800;line-height:1;color:#c084fc;"&gt;7&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.35rem;line-height:1.35;"&gt;open models under 7B params, benchmarked&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ two capabilities ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(148,163,184,.08);"&gt;
&lt;div class="pub-grid" style="display:grid;gap:.9rem;"&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(34,197,94,.2);background:rgba(34,197,94,.04);padding:.9rem min(1.1rem,var(--pub-panel-padding));"&gt;
&lt;div style="display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.4rem;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Translation&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-heading);font-family:ui-monospace,monospace;color:#4ade80;font-weight:700;"&gt;C1 &amp;middot; CEFR&lt;/span&gt;
&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;English to Afrikaans, graded by the two rival examiners. Phi-4 reached &lt;strong style="color:#e2e8f0;"&gt;C1&lt;/strong&gt;, the advanced tier a proficient human speaker sits at.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(34,197,94,.2);background:rgba(34,197,94,.04);padding:.9rem min(1.1rem,var(--pub-panel-padding));"&gt;
&lt;div style="display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.4rem;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;Summarization&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-heading);font-family:ui-monospace,monospace;color:#4ade80;font-weight:700;"&gt;0.883 &amp;middot; G-Eval&lt;/span&gt;
&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Scored with &lt;strong style="color:#e2e8f0;"&gt;G-Eval&lt;/strong&gt;, an LLM-graded quality measure on a 0 to 1 scale. Phi-4&amp;rsquo;s &lt;strong style="color:#e2e8f0;"&gt;0.883&lt;/strong&gt; is close-to-frontier work from a sub-7B model.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ latency: edge vs cloud ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(148,163,184,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#60a5fa;margin-bottom:.7rem;"&gt;Latency &amp;middot; running on the device vs. calling the cloud&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.55rem;"&gt;
&lt;!-- cloud bar --&gt;
&lt;div style="display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:8.5rem;font-size:var(--pub-text-small);color:#94a3b8;text-align:right;"&gt;Cloud API call&lt;/span&gt;
&lt;div style="flex:1;height:1.5rem;border-radius:.4rem;background:rgba(148,163,184,.08);overflow:hidden;"&gt;
&lt;div class="slm-bar" style="height:100%;width:100%;border-radius:.4rem;background:linear-gradient(90deg,rgba(148,163,184,.35),rgba(148,163,184,.2));"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style="flex-shrink:0;width:5.5rem;font-size:var(--pub-text-small);color:#cbd5e1;font-family:ui-monospace,monospace;"&gt;baseline&lt;/span&gt;
&lt;/div&gt;
&lt;!-- edge bar --&gt;
&lt;div style="display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:8.5rem;font-size:var(--pub-text-small);color:#e2e8f0;text-align:right;font-weight:600;"&gt;On-device&lt;br&gt;&lt;span style="font-size:var(--pub-text-small);color:#94a3b8;font-weight:400;"&gt;local &amp;amp; in-browser&lt;/span&gt;&lt;/span&gt;
&lt;div style="flex:1;height:1.5rem;border-radius:.4rem;background:rgba(148,163,184,.08);overflow:hidden;"&gt;
&lt;div class="slm-bar" style="height:100%;width:28%;border-radius:.4rem;background:linear-gradient(90deg,#3b82f6,#60a5fa);"&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;span style="flex-shrink:0;width:5.5rem;font-size:var(--pub-text-heading);color:#60a5fa;font-family:ui-monospace,monospace;font-weight:700;"&gt;3&amp;ndash;4&amp;times; faster&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:.75rem .1rem 0;font-size:var(--pub-text-body);line-height:1.65;color:#64748b;"&gt;Hosted with &lt;strong style="color:#94a3b8;"&gt;WebLLM&lt;/strong&gt; in the browser or run locally, the models answer 3 to 4 times faster than a round trip to a cloud API, with no per-call fee and no queue.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ═══ where it runs ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#4ade80;margin-bottom:.7rem;"&gt;Where this unlocks deployment&lt;/div&gt;
&lt;div class="pub-grid" style="display:grid;gap:.6rem;"&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(148,163,184,.2);background:rgba(148,163,184,.04);padding:.75rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.25rem;"&gt;Privacy-sensitive&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Prompts and documents never leave the machine, so regulated data stays in-house.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(148,163,184,.2);background:rgba(148,163,184,.04);padding:.75rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.25rem;"&gt;Bandwidth-constrained&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;No large payloads to the cloud on every call, so it works over weak or metered links.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(148,163,184,.2);background:rgba(148,163,184,.04);padding:.75rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.25rem;"&gt;Air-gapped&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Runs with no internet at all, for plants and sites that are offline by design.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Why it matters ═══ --&gt;
&lt;div id="paper-impact" tabindex="-1" class="slm-reveal paper-section-anchor" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(245,158,11,.22);background:linear-gradient(135deg,rgba(245,158,11,.06),rgba(168,85,247,.04));overflow:hidden;"&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(245,158,11,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(245,158,11,.18);display:flex;align-items:center;justify-content:center;color:#fbbf24;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 18v-5.25m0 0a6.01 6.01 0 001.5-.189m-1.5.189a6.01 6.01 0 01-1.5-.189m3.75 7.478a12.06 12.06 0 01-4.5 0m3.75 2.383a14.406 14.406 0 01-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 10-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#fbbf24;"&gt;Why It Matters&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:1.25rem min(1.5rem,var(--pub-panel-padding));display:grid;gap:1rem;"&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.4rem;"&gt;Data stays home&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Because the model runs on the device, sensitive data never crosses the network. That opens up privacy-bound and fully offline settings the cloud can&amp;rsquo;t serve.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.4rem;"&gt;Scaffolding beats size&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Agentic structure, decomposed planning and multi-agent grading, lets a sub-7B model do work that usually assumes a much larger cloud model.&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.4rem;"&gt;Judging you can trust&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Two rival graders that must agree is a reusable recipe for scoring open-ended output without leaning on a single, biased judge.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Methodology note ═══ --&gt;
&lt;div class="slm-reveal" style="border-radius:1rem;border:1px solid rgba(148,163,184,.18);background:rgba(148,163,184,.03);padding:1rem min(1.25rem,var(--pub-panel-padding));"&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="#64748b" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"/&gt;&lt;/svg&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64748b;"&gt;About this page&lt;/span&gt;
&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#64748b;"&gt;The diagrams above redraw the paper&amp;rsquo;s benchmarking and planning framework in this site&amp;rsquo;s style; the exam-loop figure follows the appendix&amp;rsquo;s evaluation walkthrough. Seven open models under 7B parameters were graded on translation and summarization by two frontier examiners (GPT-4 and Claude) on the CEFR scale, with Phi-4 the standout. Full method, prompts, and results are in the paper and the linked appendix repository.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ═══ scroll-reveal observer ═══ --&gt;
&lt;script&gt;
(function () {
if (!("IntersectionObserver" in window)) return;
var reduce = window.matchMedia &amp;&amp; window.matchMedia("(prefers-reduced-motion: reduce)").matches;
if (reduce) return;
var els = document.querySelectorAll(".slm-reveal");
var io = new IntersectionObserver(function (entries) {
entries.forEach(function (e) {
if (e.isIntersecting) { e.target.classList.add("slm-visible"); io.unobserve(e.target); }
});
}, { threshold: 0, rootMargin: "0px 0px -8% 0px" });
els.forEach(function (el, i) {
el.classList.add("slm-d" + ((i % 3) + 1));
io.observe(el);
});
})();
&lt;/script&gt;
&lt;/p&gt;</description></item><item><title>WIP: From Detection to Explanation: Using LLMs for Adversarial Scenario Analysis in Vehicles</title><link>https://davidferna.com/publications/vehiclesec-2025/</link><pubDate>Fri, 01 Aug 2025 00:00:00 +0000</pubDate><guid>https://davidferna.com/publications/vehiclesec-2025/</guid><description>&lt;p&gt;&lt;style&gt;
/* ── Scroll-reveal: shared across problem / framework / results ──
Hiding is gated behind .dx-js (set below only when IntersectionObserver
exists), so content stays visible without JS and under reduced motion. */
@keyframes dx-up {
from { opacity: 0; transform: translateY(18px) }
to { opacity: 1; transform: none }
}
@keyframes dx-grow { to { transform: scaleX(1) } }
@media screen and (prefers-reduced-motion: no-preference) {
.dx-js .dx-reveal { opacity: 0 }
.dx-js .dx-reveal.dx-visible { animation: dx-up .55s ease forwards }
.dx-js .dx-reveal.dx-d1.dx-visible { animation-delay: .1s }
.dx-js .dx-reveal.dx-d2.dx-visible { animation-delay: .25s }
.dx-js .dx-reveal.dx-d3.dx-visible { animation-delay: .4s }
/* bars grow from zero when their own section scrolls into view */
.dx-js .dx-bar { transform: scaleX(0); transform-origin: left center }
.dx-js .dx-visible .dx-bar { animation: dx-grow 1s cubic-bezier(.22,1,.36,1) forwards }
}
&lt;/style&gt;
&lt;script&gt;if("IntersectionObserver" in window)document.documentElement.classList.add("dx-js")&lt;/script&gt;
&lt;div class="not-prose" style="margin:0;padding:0;"&gt;
&lt;div class="pub-grid" style="display:grid;gap:1rem;margin-bottom:1.5rem;"&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#ef4444;margin-bottom:.5rem;"&gt;01 &amp;nbsp;&amp;middot;&amp;nbsp; The Gap&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The deep networks in a self-driving car can flag &lt;strong style="color:#e2e8f0;"&gt;that&lt;/strong&gt; a scene looks wrong, but not &lt;strong style="color:#e2e8f0;"&gt;why&lt;/strong&gt;, and they cannot tell a harmless sensor glitch from a deliberate roadside attack.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#818cf8;margin-bottom:.5rem;"&gt;02 &amp;nbsp;&amp;middot;&amp;nbsp; The Approach&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Encode each scene in a compact &lt;strong style="color:#e2e8f0;"&gt;domain-specific language&lt;/strong&gt; and let an LLM reason step by step, checking it against the &lt;strong style="color:#e2e8f0;"&gt;MUTCD&lt;/strong&gt; traffic rule book. No labeled training data.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#22c55e;margin-bottom:.5rem;"&gt;03 &amp;nbsp;&amp;middot;&amp;nbsp; The Finding&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Gemini spots inconsistencies with &lt;strong style="color:#e2e8f0;"&gt;92.5%&lt;/strong&gt; accuracy and, unlike the open models, explains each call by &lt;strong style="color:#e2e8f0;"&gt;citing the exact regulation&lt;/strong&gt; it breaks.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="dx-reveal" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(239,68,68,.2);overflow:hidden;background:linear-gradient(135deg,rgba(239,68,68,.05),rgba(244,63,94,.03));"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(239,68,68,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(239,68,68,.15);display:flex;align-items:center;justify-content:center;color:#f87171;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#f87171;margin-bottom:.1rem;"&gt;From Detection to Explanation&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;A perception model can tell you a scene looks wrong. It cannot tell you why, or whether someone made it that way.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Detect vs Explain ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(239,68,68,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#f87171;margin-bottom:.3rem;"&gt;Why Detection Alone Is Not Enough&lt;/div&gt;
&lt;p style="margin:0 0 .9rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Conventional deep neural networks answer a yes/no question and stop there. For safety review and security forensics, that answer is a dead end: it points at nothing you can fix, audit, or defend against.&lt;/p&gt;
&lt;div class="pub-flow-grid" style="gap:1rem;align-items:center;"&gt;
&lt;!-- what a DNN gives --&gt;
&lt;div style="border-radius:.9rem;border:1px solid rgba(248,113,113,.28);background:rgba(248,113,113,.05);overflow:hidden;"&gt;
&lt;div style="padding:.5rem .85rem;background:rgba(248,113,113,.1);border-bottom:1px solid rgba(248,113,113,.18);font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#f87171;"&gt;What a DNN Gives You&lt;/div&gt;
&lt;div style="padding:.75rem .85rem;font-family:ui-monospace,monospace;font-size:var(--pub-text-body);color:#e2e8f0;line-height:1.7;"&gt;
&lt;div&gt;anomaly &amp;nbsp;=&amp;nbsp; &lt;span style="color:#f87171;"&gt;true&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;score &amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp; &lt;span style="color:#fbbf24;"&gt;0.87&lt;/span&gt;&lt;/div&gt;
&lt;div style="color:#64748b;font-size:var(--pub-text-small);margin-top:.35rem;"&gt;// which module? why? attack or glitch?&lt;/div&gt;
&lt;div style="color:#64748b;font-size:var(--pub-text-small);"&gt;// no answer&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- arrow --&gt;
&lt;div style="display:flex;flex-direction:column;align-items:center;color:#64748b;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="26" height="26" fill="none" viewBox="0 0 24 24" stroke="#818cf8" stroke-width="1.6"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"/&gt;&lt;/svg&gt;
&lt;span style="font-size:var(--pub-text-small);color:#64748b;margin-top:.2rem;text-align:center;"&gt;the gap&lt;br&gt;this paper&lt;br&gt;closes&lt;/span&gt;
&lt;/div&gt;
&lt;!-- what is needed --&gt;
&lt;div style="border-radius:.9rem;border:1px solid rgba(34,197,94,.28);background:rgba(34,197,94,.05);overflow:hidden;"&gt;
&lt;div style="padding:.5rem .85rem;background:rgba(34,197,94,.1);border-bottom:1px solid rgba(34,197,94,.18);font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#4ade80;"&gt;What Safety &amp;amp; Security Need&lt;/div&gt;
&lt;div style="padding:.75rem .85rem;font-size:var(--pub-text-small);color:#94a3b8;line-height:1.5;display:flex;flex-direction:column;gap:.3rem;"&gt;
&lt;div&gt;&lt;span style="color:#4ade80;"&gt;&amp;#10003;&lt;/span&gt; &lt;strong style="color:#e2e8f0;"&gt;Why&lt;/strong&gt; the scene is inconsistent&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#4ade80;"&gt;&amp;#10003;&lt;/span&gt; The exact &lt;strong style="color:#e2e8f0;"&gt;rule&lt;/strong&gt; it violates&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#4ade80;"&gt;&amp;#10003;&lt;/span&gt; Benign glitch &lt;strong style="color:#e2e8f0;"&gt;vs.&lt;/strong&gt; deliberate attack&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#4ade80;"&gt;&amp;#10003;&lt;/span&gt; A human-readable &lt;strong style="color:#e2e8f0;"&gt;audit trail&lt;/strong&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Benign or adversarial? ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(239,68,68,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#f87171;margin-bottom:.3rem;"&gt;The Hard Part: Glitch or Attack?&lt;/div&gt;
&lt;p style="margin:0 0 .9rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Both scenes below are a regulatory sign on a clear, sunny road. They look alike to a classifier. Only reasoning against the &lt;strong style="color:#e2e8f0;"&gt;rule book&lt;/strong&gt; separates a correct sign from one that should never be there.&lt;/p&gt;
&lt;div class="pub-grid" style="display:grid;gap:.9rem;"&gt;
&lt;!-- adversarial --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(239,68,68,.3);background:rgba(239,68,68,.04);overflow:hidden;"&gt;
&lt;div style="padding:.6rem .9rem;background:rgba(239,68,68,.1);border-bottom:1px solid rgba(239,68,68,.18);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;STOP sign on a 65 mph highway&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#f87171;background:rgba(239,68,68,.15);border:1px solid rgba(239,68,68,.3);border-radius:.35rem;padding:.12rem .45rem;"&gt;Anomalous&lt;/span&gt;
&lt;/div&gt;
&lt;div style="padding:.75rem .9rem;"&gt;
&lt;p style="margin:0 0 .55rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;An &lt;span style="font-family:ui-monospace,monospace;color:#cbd5e1;"&gt;R1-1 Stop Sign&lt;/span&gt; sits on the shoulder of an open highway, in the high-speed travel area.&lt;/p&gt;
&lt;div style="border-left:3px solid #ef4444;background:rgba(15,23,42,.4);border-radius:0 .5rem .5rem 0;padding:.5rem .7rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#f87171;margin-bottom:.2rem;"&gt;Verdict &amp;middot; violates the rule book&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;"&gt;Stop signs belong at intersections and ramps, not mid-highway. &lt;span style="font-family:ui-monospace,monospace;color:#fca5a5;"&gt;MUTCD 2B.04, 2B.05&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- benign --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(34,197,94,.3);background:rgba(34,197,94,.04);overflow:hidden;"&gt;
&lt;div style="padding:.6rem .9rem;background:rgba(34,197,94,.1);border-bottom:1px solid rgba(34,197,94,.18);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem;"&gt;
&lt;span style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;"&gt;YIELD sign at a roundabout&lt;/span&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#4ade80;background:rgba(34,197,94,.15);border:1px solid rgba(34,197,94,.3);border-radius:.35rem;padding:.12rem .45rem;"&gt;Benign&lt;/span&gt;
&lt;/div&gt;
&lt;div style="padding:.75rem .9rem;"&gt;
&lt;p style="margin:0 0 .55rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;An &lt;span style="font-family:ui-monospace,monospace;color:#cbd5e1;"&gt;R1-4 Yield Sign&lt;/span&gt; tells drivers to yield to circulating traffic on approach to a roundabout.&lt;/p&gt;
&lt;div style="border-left:3px solid #22c55e;background:rgba(15,23,42,.4);border-radius:0 .5rem .5rem 0;padding:.5rem .7rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#4ade80;margin-bottom:.2rem;"&gt;Verdict &amp;middot; fully compliant&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;"&gt;Exactly the right control for a roundabout entry. &lt;span style="font-family:ui-monospace,monospace;color:#86efac;"&gt;MUTCD 2B.33, R4-03&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Method comparison ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#f87171;margin-bottom:.3rem;"&gt;What Existing Methods Miss&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Prior approaches flag anomalies but stop short of a grounded, human-readable reason, and most need a pile of labeled examples first. Zero-shot LLM reasoning is built to do all four.&lt;/p&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;table style="width:100%;min-width:460px;border-collapse:collapse;font-size:var(--pub-text-small);"&gt;
&lt;thead&gt;
&lt;tr style="color:#94a3b8;"&gt;
&lt;th style="text-align:left;padding:.4rem .5rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;Approach&lt;/th&gt;
&lt;th style="padding:.4rem .3rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;Detect&lt;/th&gt;
&lt;th style="padding:.4rem .3rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;Explain&lt;/th&gt;
&lt;th style="padding:.4rem .3rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;Cite rule&lt;/th&gt;
&lt;th style="padding:.4rem .3rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;No labels&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody style="color:#cbd5e1;"&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;Statistical / threshold detectors&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#4ade80;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#64748b;"&gt;&amp;#10007;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#64748b;"&gt;&amp;#10007;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#4ade80;"&gt;&amp;#10003;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;Supervised DNN classifiers&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#4ade80;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#64748b;"&gt;&amp;#10007;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#64748b;"&gt;&amp;#10007;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#64748b;"&gt;&amp;#10007;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;Hand-written rule engines&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#4ade80;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#fbbf24;"&gt;&amp;#9680;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#4ade80;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .3rem;border-bottom:1px solid rgba(148,163,184,.08);color:#fbbf24;"&gt;&amp;#9680;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="background:rgba(34,197,94,.07);"&gt;
&lt;td style="text-align:left;padding:.5rem;font-weight:700;color:#e2e8f0;border-radius:.4rem 0 0 .4rem;"&gt;&amp;#9733; LLM zero-shot reasoning (ours)&lt;/td&gt;
&lt;td style="text-align:center;padding:.5rem .3rem;color:#4ade80;font-weight:700;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.5rem .3rem;color:#4ade80;font-weight:700;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.5rem .3rem;color:#4ade80;font-weight:700;"&gt;&amp;#10003;&lt;/td&gt;
&lt;td style="text-align:center;padding:.5rem .3rem;color:#4ade80;font-weight:700;border-radius:0 .4rem .4rem 0;"&gt;&amp;#10003;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div style="display:flex;gap:1rem;flex-wrap:wrap;margin-top:.55rem;font-size:var(--pub-text-small);color:#64748b;"&gt;
&lt;span&gt;&lt;span style="color:#4ade80;"&gt;&amp;#10003;&lt;/span&gt; full&lt;/span&gt;
&lt;span&gt;&lt;span style="color:#fbbf24;"&gt;&amp;#9680;&lt;/span&gt; partial / brittle&lt;/span&gt;
&lt;span&gt;&lt;span style="color:#64748b;"&gt;&amp;#10007;&lt;/span&gt; none&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="paper-method" tabindex="-1" class="paper-section-anchor dx-reveal" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(99,102,241,.2);overflow:hidden;"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(99,102,241,.12);background:linear-gradient(135deg,rgba(99,102,241,.1),rgba(34,197,94,.06));display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(99,102,241,.18);display:flex;align-items:center;justify-content:center;color:#818cf8;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9.75 3.104v5.714a2.25 2.25 0 01-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 014.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0112 15a9.065 9.065 0 00-6.23-.693L5 14.5m14.8.8l1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0112 21a48.25 48.25 0 01-8.135-.687c-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#818cf8;margin-bottom:.1rem;"&gt;The Framework&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Turn each scene into structured text, reason over it against the rule book, and grade both the call and the explanation.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Overview figure: AutoSec-X → DSL → CoT reasoning → evaluation ═══ --&gt;
&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding)) .8rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 940 220" style="display:block;--pub-diagram-width:58.75rem;" xmlns="http://www.w3.org/2000/svg" font-family="system-ui,-apple-system,sans-serif" role="img" aria-label="Framework overview: GPT-4 generates the MUTCD-grounded AutoSec-X dataset, each scenario is encoded in a domain-specific language, a large language model reasons over it with zero-shot chain-of-thought, and outputs are graded on both detection accuracy and explanation quality"&gt;
&lt;!-- Stage 1: AutoSec-X generation --&gt;
&lt;rect x="6" y="30" width="212" height="160" rx="14" fill="rgba(59,130,246,.06)" stroke="rgba(59,130,246,.4)" stroke-width="1.2"/&gt;
&lt;text x="112" y="54" font-size="13" font-weight="800" fill="#60a5fa" text-anchor="middle"&gt;AutoSec-X&lt;/text&gt;
&lt;text x="112" y="70" font-size="9" fill="#93c5fd" text-anchor="middle"&gt;MUTCD-grounded generation&lt;/text&gt;
&lt;rect x="26" y="84" width="172" height="30" rx="8" fill="rgba(59,130,246,.12)" stroke="rgba(59,130,246,.32)"/&gt;
&lt;text x="112" y="103" font-size="10" fill="#bfdbfe" text-anchor="middle"&gt;GPT-4 &amp;#43; MUTCD rules&lt;/text&gt;
&lt;rect x="26" y="120" width="172" height="30" rx="8" fill="rgba(59,130,246,.12)" stroke="rgba(59,130,246,.32)"/&gt;
&lt;text x="112" y="139" font-size="10" fill="#bfdbfe" text-anchor="middle"&gt;40 driving scenarios&lt;/text&gt;
&lt;text x="112" y="172" font-size="9.5" font-style="italic" fill="#60a5fa" text-anchor="middle"&gt;20 anomalous &amp;middot; 20 benign&lt;/text&gt;
&lt;!-- arrow 1-&gt;DSL --&gt;
&lt;line x1="218" y1="110" x2="250" y2="110" stroke="#3b82f6" stroke-width="2.6"/&gt;
&lt;polygon points="248,105 260,110 248,115" fill="#3b82f6"/&gt;
&lt;!-- DSL --&gt;
&lt;rect x="262" y="76" width="96" height="68" rx="12" fill="rgba(245,158,11,.13)" stroke="rgba(245,158,11,.55)" stroke-width="1.3"/&gt;
&lt;text x="310" y="104" font-size="16" font-weight="800" fill="#fbbf24" text-anchor="middle"&gt;DSL&lt;/text&gt;
&lt;text x="310" y="120" font-size="8.5" fill="#fcd34d" text-anchor="middle"&gt;Structured&lt;/text&gt;
&lt;text x="310" y="131" font-size="8.5" fill="#fcd34d" text-anchor="middle"&gt;scene encoding&lt;/text&gt;
&lt;!-- arrow DSL-&gt;reasoning --&gt;
&lt;line x1="358" y1="110" x2="390" y2="110" stroke="#f59e0b" stroke-width="2.6"/&gt;
&lt;polygon points="388,105 400,110 388,115" fill="#f59e0b"/&gt;
&lt;!-- Stage 3: reasoning --&gt;
&lt;rect x="402" y="30" width="316" height="160" rx="14" fill="rgba(99,102,241,.06)" stroke="rgba(99,102,241,.4)" stroke-width="1.2"/&gt;
&lt;text x="560" y="54" font-size="13" font-weight="800" fill="#818cf8" text-anchor="middle"&gt;Zero-Shot Chain-of-Thought Reasoning&lt;/text&gt;
&lt;text x="560" y="70" font-size="9" fill="#a5b4fc" text-anchor="middle"&gt;no labeled data &amp;middot; MUTCD as knowledge base&lt;/text&gt;
&lt;g&gt;
&lt;rect x="418" y="84" width="66" height="66" rx="9" fill="rgba(99,102,241,.12)" stroke="rgba(99,102,241,.3)"/&gt;
&lt;text x="451" y="113" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;Parse&lt;/text&gt;
&lt;text x="451" y="125" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;scene&lt;/text&gt;
&lt;rect x="490" y="84" width="66" height="66" rx="9" fill="rgba(99,102,241,.12)" stroke="rgba(99,102,241,.3)"/&gt;
&lt;text x="523" y="107" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;Recall&lt;/text&gt;
&lt;text x="523" y="119" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;MUTCD&lt;/text&gt;
&lt;text x="523" y="131" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;rule&lt;/text&gt;
&lt;rect x="562" y="84" width="66" height="66" rx="9" fill="rgba(99,102,241,.12)" stroke="rgba(99,102,241,.3)"/&gt;
&lt;text x="595" y="113" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;Compare&lt;/text&gt;
&lt;text x="595" y="125" font-size="9" fill="#c7d2fe" text-anchor="middle"&gt;&amp;amp; judge&lt;/text&gt;
&lt;rect x="634" y="84" width="70" height="66" rx="9" fill="rgba(34,197,94,.12)" stroke="rgba(34,197,94,.32)"/&gt;
&lt;text x="669" y="107" font-size="9" fill="#bbf7d0" text-anchor="middle"&gt;Verdict&lt;/text&gt;
&lt;text x="669" y="119" font-size="9" fill="#bbf7d0" text-anchor="middle"&gt;&amp;#43; cited&lt;/text&gt;
&lt;text x="669" y="131" font-size="9" fill="#bbf7d0" text-anchor="middle"&gt;section&lt;/text&gt;
&lt;line x1="484" y1="117" x2="490" y2="117" stroke="rgba(148,163,184,.5)" stroke-width="1.4"/&gt;
&lt;line x1="556" y1="117" x2="562" y2="117" stroke="rgba(148,163,184,.5)" stroke-width="1.4"/&gt;
&lt;line x1="628" y1="117" x2="634" y2="117" stroke="rgba(148,163,184,.5)" stroke-width="1.4"/&gt;
&lt;/g&gt;
&lt;text x="560" y="172" font-size="9.5" font-style="italic" fill="#818cf8" text-anchor="middle"&gt;9 LLMs benchmarked as swappable engines&lt;/text&gt;
&lt;!-- arrow reasoning-&gt;eval --&gt;
&lt;line x1="718" y1="110" x2="750" y2="110" stroke="#22c55e" stroke-width="2.6"/&gt;
&lt;polygon points="748,105 760,110 748,115" fill="#22c55e"/&gt;
&lt;!-- Stage 4: evaluation --&gt;
&lt;rect x="762" y="30" width="172" height="160" rx="14" fill="rgba(34,197,94,.06)" stroke="rgba(34,197,94,.4)" stroke-width="1.2"/&gt;
&lt;text x="848" y="54" font-size="12.5" font-weight="800" fill="#4ade80" text-anchor="middle"&gt;Dual Evaluation&lt;/text&gt;
&lt;rect x="780" y="72" width="136" height="46" rx="8" fill="rgba(34,197,94,.1)" stroke="rgba(34,197,94,.3)"/&gt;
&lt;text x="848" y="90" font-size="9.5" font-weight="700" fill="#bbf7d0" text-anchor="middle"&gt;Detection accuracy&lt;/text&gt;
&lt;text x="848" y="105" font-size="8" fill="#86efac" text-anchor="middle"&gt;anomalous vs. benign&lt;/text&gt;
&lt;rect x="780" y="124" width="136" height="52" rx="8" fill="rgba(34,197,94,.1)" stroke="rgba(34,197,94,.3)"/&gt;
&lt;text x="848" y="142" font-size="9.5" font-weight="700" fill="#bbf7d0" text-anchor="middle"&gt;Explanation quality&lt;/text&gt;
&lt;text x="848" y="157" font-size="8" fill="#86efac" text-anchor="middle"&gt;ROUGE &amp;middot; BLEU &amp;middot; SBERT&lt;/text&gt;
&lt;text x="848" y="169" font-size="8" fill="#86efac" text-anchor="middle"&gt;vs. expert answer&lt;/text&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ AutoSec-X dataset ═══ --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding)) .4rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#60a5fa;margin-bottom:.15rem;"&gt;AutoSec-X &amp;middot; The Benchmark&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;GPT-4 drafts 40 driving scenarios anchored in the U.S. traffic-control manual, half with a genuine regulatory violation and half fully compliant. Each carries an expert-style ground-truth explanation that names the relevant MUTCD section, so a model is graded not just on the verdict, but on whether it reasons for the right reason.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:0 min(1.5rem,var(--pub-panel-padding)) 1rem;display:grid;gap:.6rem;"&gt;
&lt;div style="text-align:center;padding:.6rem .4rem;border-radius:.7rem;background:rgba(59,130,246,.05);border:1px solid rgba(59,130,246,.18);"&gt;
&lt;div style="font-size:1.25rem;font-weight:800;font-family:ui-monospace,monospace;color:#60a5fa;line-height:1;"&gt;40&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.25rem;line-height:1.3;"&gt;MUTCD-grounded&lt;br&gt;scenarios&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .4rem;border-radius:.7rem;background:rgba(239,68,68,.05);border:1px solid rgba(239,68,68,.18);"&gt;
&lt;div style="font-size:1.25rem;font-weight:800;font-family:ui-monospace,monospace;color:#f87171;line-height:1;"&gt;20&amp;nbsp;/&amp;nbsp;20&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.25rem;line-height:1.3;"&gt;anomalous vs.&lt;br&gt;benign, balanced&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .4rem;border-radius:.7rem;background:rgba(168,85,247,.05);border:1px solid rgba(168,85,247,.18);"&gt;
&lt;div style="font-size:1.25rem;font-weight:800;font-family:ui-monospace,monospace;color:#c084fc;line-height:1;"&gt;31&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.25rem;line-height:1.3;"&gt;distinct road&lt;br&gt;types &amp;amp; layouts&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .4rem;border-radius:.7rem;background:rgba(34,197,94,.05);border:1px solid rgba(34,197,94,.18);"&gt;
&lt;div style="font-size:1.25rem;font-weight:800;font-family:ui-monospace,monospace;color:#4ade80;line-height:1;"&gt;0&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.25rem;line-height:1.3;"&gt;labeled examples&lt;br&gt;needed (zero-shot)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ DSL schema + worked example ═══ --&gt;
&lt;div style="padding:.4rem min(1.5rem,var(--pub-panel-padding)) 1rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fbbf24;margin-bottom:.15rem;"&gt;The Domain-Specific Language&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Raw sensor data is distilled into eight human-readable descriptors. This compact, text-only encoding is what the LLM reasons over: small enough to fit any context window, explicit enough to check against a written rule.&lt;/p&gt;
&lt;div class="pub-grid" style="display:grid;gap:.9rem;align-items:start;"&gt;
&lt;!-- schema --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(245,158,11,.22);background:rgba(245,158,11,.04);overflow:hidden;"&gt;
&lt;div style="padding:.55rem .9rem;border-bottom:1px solid rgba(245,158,11,.15);font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fbbf24;"&gt;Scene descriptors&lt;/div&gt;
&lt;div class="pub-grid" style="padding:.7rem .9rem;display:grid;gap:.35rem .7rem;font-size:var(--pub-text-small);"&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;RoadType&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;highway, roundabout, school zone&amp;hellip;&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;Speed&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;posted / travel speed (mph)&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;LaneMarkings&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;e.g. broken white, double yellow&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;TrafficSigns&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;MUTCD sign codes present&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;TrafficControlDevices&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;signals, beacons, markers&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;TimeOfDay&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;lighting context&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;Weather&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;clear, fog, rain, mist&amp;hellip;&lt;/span&gt;
&lt;span style="font-family:ui-monospace,monospace;color:#fcd34d;"&gt;Description&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;one-line natural-language summary&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- worked example --&gt;
&lt;div style="border-radius:1rem;border:1px solid rgba(148,163,184,.2);background:rgba(15,23,42,.4);overflow:hidden;"&gt;
&lt;div style="padding:.55rem .9rem;border-bottom:1px solid rgba(148,163,184,.14);font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#cbd5e1;"&gt;Encoded scenario &amp;middot; #1&lt;/div&gt;
&lt;div class="pub-scroll" style="padding:.7rem .9rem;font-family:ui-monospace,'Cascadia Code',monospace;font-size:var(--pub-text-small);line-height:1.65;color:#e2e8f0;overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;div&gt;&lt;span style="color:#7dd3fc;"&gt;RoadType&lt;/span&gt;: &lt;span style="color:#fca5a5;"&gt;"Highway"&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#7dd3fc;"&gt;Speed&lt;/span&gt;: &lt;span style="color:#fbbf24;"&gt;65&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#7dd3fc;"&gt;LaneMarkings&lt;/span&gt;: &lt;span style="color:#a5b4fc;"&gt;["Broken white line"]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#7dd3fc;"&gt;TrafficSigns&lt;/span&gt;: &lt;span style="color:#a5b4fc;"&gt;["R1-1: Stop Sign"]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style="color:#7dd3fc;"&gt;Weather&lt;/span&gt;: &lt;span style="color:#fca5a5;"&gt;"Sunny"&lt;/span&gt;&lt;/div&gt;
&lt;div style="color:#64748b;white-space:normal;"&gt;&amp;hellip; stop sign in a 65&amp;#8202;mph travel lane&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:.5rem .9rem;border-top:1px solid rgba(148,163,184,.14);background:rgba(239,68,68,.06);"&gt;
&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#f87171;"&gt;&amp;#9654; Ground truth: &lt;/span&gt;&lt;span style="font-size:var(--pub-text-small);color:#cbd5e1;"&gt;Inconsistency, &lt;span style="font-family:ui-monospace,monospace;color:#fca5a5;"&gt;MUTCD 2B.04, 2B.05&lt;/span&gt;&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Zero-shot CoT reasoning steps ═══ --&gt;
&lt;div style="padding:.4rem min(1.5rem,var(--pub-panel-padding)) 1rem;border-top:1px solid rgba(99,102,241,.1);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#818cf8;margin:.5rem 0 .15rem;"&gt;How the Reasoning Works&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;A single zero-shot chain-of-thought prompt walks the model through four steps. The MUTCD is the external authority; benign variation stays inside the rules, a manipulation steps outside them.&lt;/p&gt;
&lt;div class="pub-grid" style="display:grid;gap:.6rem;"&gt;
&lt;div style="border-radius:.85rem;border:1px solid rgba(99,102,241,.22);background:rgba(99,102,241,.04);padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;font-family:ui-monospace,monospace;color:#818cf8;margin-bottom:.25rem;"&gt;01&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.2rem;"&gt;Parse the scene&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Read the DSL fields and lay out what is actually present on the road.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.85rem;border:1px solid rgba(168,85,247,.22);background:rgba(168,85,247,.04);padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;font-family:ui-monospace,monospace;color:#c084fc;margin-bottom:.25rem;"&gt;02&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.2rem;"&gt;Recall the rule&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Retrieve the MUTCD guidance that governs this sign, marking, or context.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.85rem;border:1px solid rgba(59,130,246,.22);background:rgba(59,130,246,.04);padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;font-family:ui-monospace,monospace;color:#60a5fa;margin-bottom:.25rem;"&gt;03&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.2rem;"&gt;Compare &amp;amp; judge&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Check the scene against the rule and decide: within bounds, or a violation?&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.85rem;border:1px solid rgba(34,197,94,.22);background:rgba(34,197,94,.04);padding:.7rem .8rem;"&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:800;font-family:ui-monospace,monospace;color:#4ade80;margin-bottom:.25rem;"&gt;04&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;color:#e2e8f0;margin-bottom:.2rem;"&gt;Explain &amp;amp; cite&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;State the verdict with a written rationale and the exact MUTCD section.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id="paper-results" tabindex="-1" class="paper-section-anchor dx-reveal" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(34,197,94,.2);overflow:hidden;background:linear-gradient(135deg,rgba(34,197,94,.05),rgba(99,102,241,.03));"&gt;
&lt;!-- header --&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(34,197,94,.15);display:flex;align-items:center;justify-content:center;color:#4ade80;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#4ade80;margin-bottom:.1rem;"&gt;Results&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;Nine LLMs, one benchmark. Detecting the problem turns out to be the easy half.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- headline stat band --&gt;
&lt;div class="pub-grid" style="padding:1rem min(1.25rem,var(--pub-panel-padding));display:grid;gap:.75rem;border-bottom:1px solid rgba(34,197,94,.1);"&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#4ade80;line-height:1;"&gt;92.5&lt;span style="font-size:var(--pub-text-body);"&gt;%&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;best detection&lt;br&gt;accuracy (Gemini)&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#818cf8;line-height:1;"&gt;0.69&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;top explanation&lt;br&gt;similarity (SBERT)&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(59,130,246,.06);border:1px solid rgba(59,130,246,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#60a5fa;line-height:1;"&gt;9&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;LLMs benchmarked&lt;br&gt;across 4 families&lt;/div&gt;
&lt;/div&gt;
&lt;div style="text-align:center;padding:.6rem .5rem;border-radius:.75rem;background:rgba(168,85,247,.06);border:1px solid rgba(168,85,247,.18);"&gt;
&lt;div style="font-size:1.5rem;font-weight:800;font-family:ui-monospace,monospace;color:#c084fc;line-height:1;"&gt;0&lt;/div&gt;
&lt;div style="font-size:var(--pub-text-small);color:#94a3b8;margin-top:.3rem;line-height:1.3;"&gt;labeled training&lt;br&gt;examples used&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ A · Detection accuracy ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.08);"&gt;
&lt;div style="display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:.5rem;margin-bottom:.7rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#4ade80;"&gt;A &amp;middot; Detection Accuracy (40 scenarios)&lt;/div&gt;
&lt;div style="display:flex;gap:.8rem;flex-wrap:wrap;font-size:var(--pub-text-small);"&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;color:#93c5fd;"&gt;&lt;span style="width:.7rem;height:.7rem;border-radius:2px;background:#3b82f6;"&gt;&lt;/span&gt;Gemini&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;color:#5eead4;"&gt;&lt;span style="width:.7rem;height:.7rem;border-radius:2px;background:#2dd4bf;"&gt;&lt;/span&gt;Llama&amp;nbsp;3.2&lt;/span&gt;
&lt;span style="display:inline-flex;align-items:center;gap:.3rem;color:#d8b4fe;"&gt;&lt;span style="width:.7rem;height:.7rem;border-radius:2px;background:#a855f7;"&gt;&lt;/span&gt;Qwen&amp;nbsp;2.5&lt;/span&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style="display:flex;flex-direction:column;gap:.4rem;position:relative;"&gt;
&lt;!-- rows --&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;gemini-1.5-flash&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:92.5%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;92.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;gemini-2.0-flash-exp&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:87.5%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;87.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;gemini-1.5-pro&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:87.5%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;87.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;Llama-3.2-8B&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:87.5%;background:linear-gradient(90deg,#0d9488,#2dd4bf);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#5eead4;text-align:right;"&gt;87.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;gemini-1.5-flash-8b&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:82.5%;background:linear-gradient(90deg,#2563eb,#3b82f6);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;82.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;Qwen2.5-7B&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:82.5%;background:linear-gradient(90deg,#7e22ce,#a855f7);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#d8b4fe;text-align:right;"&gt;82.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;Qwen2.5-14B&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:82.5%;background:linear-gradient(90deg,#7e22ce,#a855f7);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#d8b4fe;text-align:right;"&gt;82.5&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#94a3b8;flex-shrink:0;"&gt;Llama-3.2-1B&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:55%;background:linear-gradient(90deg,#0d9488,#2dd4bf);border-radius:.3rem;opacity:.75;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#5eead4;text-align:right;"&gt;55.0&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#94a3b8;flex-shrink:0;"&gt;Llama-3.2-3B&lt;/span&gt;&lt;div style="flex:1;height:.9rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div class="dx-bar" style="height:100%;width:50%;background:linear-gradient(90deg,#0d9488,#2dd4bf);border-radius:.3rem;opacity:.75;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#5eead4;text-align:right;"&gt;50.0&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:.7rem 0 0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;On the binary anomalous-vs-benign call, the field bunches up: four models (including the open &lt;strong style="color:#5eead4;"&gt;Llama-3.2-8B&lt;/strong&gt;) reach &lt;strong style="color:#cbd5e1;"&gt;87.5%&lt;/strong&gt; or better. Only the 1B and 3B models fall to coin-flip territory (50% on this balanced set). Detection, it turns out, is not where the models separate.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ═══ B · The detection–explanation gap ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#4ade80;margin-bottom:.3rem;"&gt;B &amp;middot; The Detection&amp;ndash;Explanation Gap&lt;/div&gt;
&lt;p style="margin:0 0 .6rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Plotting &lt;em&gt;getting the call right&lt;/em&gt; against &lt;em&gt;explaining it well&lt;/em&gt; (semantic match to the expert answer) splits the field. Only the &lt;strong style="color:#93c5fd;"&gt;Gemini&lt;/strong&gt; family lands in the top-right corner: right answer &lt;em&gt;and&lt;/em&gt; a grounded reason. Qwen detects just as well yet its explanations barely resemble the rule-based ground truth.&lt;/p&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;svg class="pub-diagram" viewBox="0 0 660 300" style="display:block;--pub-diagram-width:41.25rem;" xmlns="http://www.w3.org/2000/svg" font-family="system-ui,-apple-system,sans-serif" role="img" aria-label="Scatter plot of detection accuracy against explanation similarity. The Gemini family clusters in the top-right, high on both axes. Qwen 2.5 models detect at 82.5 percent but score only 0.28 on explanation similarity. Small Llama models are weak at detection."&gt;
&lt;!-- quadrant shading --&gt;
&lt;rect x="441" y="40" width="159" height="120" fill="rgba(34,197,94,.05)"/&gt;
&lt;rect x="441" y="160" width="159" height="100" fill="rgba(239,68,68,.05)"/&gt;
&lt;text x="520" y="115" text-anchor="middle" font-size="8.5" fill="rgba(74,222,128,.75)" font-style="italic"&gt;detect AND explain&lt;/text&gt;
&lt;text x="520" y="205" text-anchor="middle" font-size="8.5" fill="rgba(248,113,113,.7)" font-style="italic"&gt;detect, can&amp;#8217;t explain&lt;/text&gt;
&lt;!-- gridlines --&gt;
&lt;g stroke="rgba(148,163,184,.13)" stroke-width="1"&gt;
&lt;line x1="123" y1="40" x2="123" y2="260"/&gt;&lt;line x1="229" y1="40" x2="229" y2="260"/&gt;&lt;line x1="335" y1="40" x2="335" y2="260"/&gt;&lt;line x1="441" y1="40" x2="441" y2="260"/&gt;&lt;line x1="547" y1="40" x2="547" y2="260"/&gt;
&lt;line x1="70" y1="49" x2="600" y2="49"/&gt;&lt;line x1="70" y1="96" x2="600" y2="96"/&gt;&lt;line x1="70" y1="143" x2="600" y2="143"/&gt;&lt;line x1="70" y1="190" x2="600" y2="190"/&gt;&lt;line x1="70" y1="237" x2="600" y2="237"/&gt;
&lt;/g&gt;
&lt;!-- axes --&gt;
&lt;line x1="70" y1="40" x2="70" y2="260" stroke="rgba(148,163,184,.4)" stroke-width="1.2"/&gt;
&lt;line x1="70" y1="260" x2="600" y2="260" stroke="rgba(148,163,184,.4)" stroke-width="1.2"/&gt;
&lt;!-- x labels --&gt;
&lt;g font-size="9" fill="#94a3b8" font-family="monospace" text-anchor="middle"&gt;
&lt;text x="123" y="274"&gt;50&lt;/text&gt;&lt;text x="229" y="274"&gt;60&lt;/text&gt;&lt;text x="335" y="274"&gt;70&lt;/text&gt;&lt;text x="441" y="274"&gt;80&lt;/text&gt;&lt;text x="547" y="274"&gt;90&lt;/text&gt;
&lt;/g&gt;
&lt;text x="335" y="292" font-size="9.5" fill="#94a3b8" font-family="monospace" text-anchor="middle"&gt;Detection accuracy (%)&lt;/text&gt;
&lt;!-- y labels --&gt;
&lt;g font-size="9" fill="#94a3b8" font-family="monospace" text-anchor="end"&gt;
&lt;text x="63" y="240"&gt;0.30&lt;/text&gt;&lt;text x="63" y="193"&gt;0.40&lt;/text&gt;&lt;text x="63" y="146"&gt;0.50&lt;/text&gt;&lt;text x="63" y="99"&gt;0.60&lt;/text&gt;&lt;text x="63" y="52"&gt;0.70&lt;/text&gt;
&lt;/g&gt;
&lt;text x="20" y="150" font-size="9.5" fill="#94a3b8" font-family="monospace" transform="rotate(-90 20 150)" text-anchor="middle"&gt;Explanation similarity (SBERT)&lt;/text&gt;
&lt;!-- Gemini cluster highlight --&gt;
&lt;ellipse cx="520" cy="59" rx="82" ry="26" fill="none" stroke="rgba(59,130,246,.5)" stroke-width="1.3" stroke-dasharray="4,3"/&gt;
&lt;text x="520" y="26" text-anchor="middle" font-size="9.5" font-weight="700" fill="#60a5fa"&gt;Gemini family&lt;/text&gt;
&lt;line x1="520" y1="29" x2="520" y2="34" stroke="rgba(96,165,250,.5)" stroke-width="1"/&gt;
&lt;!-- Gemini points (blue) --&gt;
&lt;g fill="#3b82f6" stroke="#93c5fd" stroke-width="1"&gt;
&lt;circle cx="574" cy="59" r="5"/&gt;&lt;circle cx="512" cy="54" r="5"/&gt;&lt;circle cx="528" cy="61" r="5"/&gt;&lt;circle cx="468" cy="63" r="5"/&gt;
&lt;/g&gt;
&lt;!-- Llama-3.2-8B (teal) --&gt;
&lt;circle cx="520" cy="154" r="5" fill="#2dd4bf" stroke="#5eead4" stroke-width="1"/&gt;
&lt;text x="520" y="172" text-anchor="middle" font-size="8.5" fill="#5eead4"&gt;Llama-3.2-8B&lt;/text&gt;
&lt;!-- Llama-1B / 3B (teal, faded) --&gt;
&lt;circle cx="176" cy="88" r="5" fill="#2dd4bf" stroke="#5eead4" stroke-width="1" opacity=".8"/&gt;
&lt;text x="176" y="80" text-anchor="middle" font-size="8.5" fill="#5eead4"&gt;Llama-3.2-1B&lt;/text&gt;
&lt;circle cx="123" cy="129" r="5" fill="#2dd4bf" stroke="#5eead4" stroke-width="1" opacity=".8"/&gt;
&lt;text x="130" y="147" text-anchor="middle" font-size="8.5" fill="#5eead4"&gt;Llama-3.2-3B&lt;/text&gt;
&lt;!-- Qwen 7B/14B (purple, overlapping) --&gt;
&lt;circle cx="462" cy="246" r="5" fill="#a855f7" stroke="#d8b4fe" stroke-width="1"/&gt;
&lt;circle cx="476" cy="240" r="5" fill="#a855f7" stroke="#d8b4fe" stroke-width="1"/&gt;
&lt;text x="469" y="228" text-anchor="middle" font-size="8.5" fill="#d8b4fe"&gt;Qwen2.5 7B / 14B&lt;/text&gt;
&lt;/svg&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ C · Full results table ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.08);"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#4ade80;margin-bottom:.7rem;"&gt;C &amp;middot; Detection and Explanation, Side by Side&lt;/div&gt;
&lt;div class="pub-scroll" style="overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;
&lt;table style="width:100%;min-width:520px;border-collapse:collapse;font-size:var(--pub-text-small);"&gt;
&lt;thead&gt;
&lt;tr style="color:#94a3b8;"&gt;
&lt;th style="text-align:left;padding:.45rem .5rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;Model&lt;/th&gt;
&lt;th style="padding:.45rem .4rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;Detect&amp;nbsp;%&lt;/th&gt;
&lt;th style="padding:.45rem .4rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;SBERT&lt;/th&gt;
&lt;th style="padding:.45rem .4rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;ROUGE-1&lt;/th&gt;
&lt;th style="padding:.45rem .4rem;font-weight:600;border-bottom:1px solid rgba(148,163,184,.2);"&gt;BERTScore&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody style="color:#cbd5e1;font-family:ui-monospace,monospace;"&gt;
&lt;tr style="background:rgba(34,197,94,.07);"&gt;
&lt;td style="text-align:left;padding:.45rem .5rem;font-family:system-ui,sans-serif;font-weight:700;color:#e2e8f0;border-radius:.4rem 0 0 .4rem;"&gt;&amp;#9733; gemini-1.5-flash&lt;/td&gt;
&lt;td style="text-align:center;padding:.45rem .4rem;color:#4ade80;font-weight:700;"&gt;92.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.45rem .4rem;"&gt;0.68&lt;/td&gt;
&lt;td style="text-align:center;padding:.45rem .4rem;"&gt;0.34&lt;/td&gt;
&lt;td style="text-align:center;padding:.45rem .4rem;border-radius:0 .4rem .4rem 0;"&gt;0.88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);"&gt;gemini-1.5-pro&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;87.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#86efac;"&gt;0.69&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.33&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);"&gt;gemini-2.0-flash-exp&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;87.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.68&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.32&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);"&gt;gemini-1.5-flash-8b&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;82.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.67&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.31&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.88&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);"&gt;Llama-3.2-8B&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;87.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#fca5a5;"&gt;0.48&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#fca5a5;"&gt;0.14&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);"&gt;Qwen2.5-7B&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;82.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#fca5a5;"&gt;0.28&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.15&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);"&gt;Qwen2.5-14B&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;82.5&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#fca5a5;"&gt;0.28&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.14&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);"&gt;0.81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;border-bottom:1px solid rgba(148,163,184,.08);color:#94a3b8;"&gt;Llama-3.2-1B&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#94a3b8;"&gt;55.0&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#94a3b8;"&gt;0.62&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#94a3b8;"&gt;0.22&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;border-bottom:1px solid rgba(148,163,184,.08);color:#94a3b8;"&gt;0.84&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="text-align:left;padding:.4rem .5rem;font-family:system-ui,sans-serif;color:#94a3b8;"&gt;Llama-3.2-3B&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;color:#94a3b8;"&gt;50.0&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;color:#94a3b8;"&gt;0.53&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;color:#94a3b8;"&gt;0.18&lt;/td&gt;
&lt;td style="text-align:center;padding:.4rem .4rem;color:#94a3b8;"&gt;0.83&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p style="margin:.6rem 0 0;font-size:var(--pub-text-body);line-height:1.65;color:#64748b;"&gt;SBERT = sentence-embedding cosine similarity to the expert explanation; ROUGE-1 and BERTScore measure word- and meaning-level overlap. &lt;span style="color:#fca5a5;"&gt;Red&lt;/span&gt; marks models that detect well but explain poorly.&lt;/p&gt;
&lt;/div&gt;
&lt;!-- ═══ D · Latency reality check ═══ --&gt;
&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#4ade80;margin-bottom:.3rem;"&gt;D &amp;middot; The Practical Cost&lt;/div&gt;
&lt;p style="margin:0 0 .8rem;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The strongest reasoners are cloud-hosted and answer in under a second. Running a small model locally for privacy trades that away fast. Median time per scenario:&lt;/p&gt;
&lt;div style="display:flex;flex-direction:column;gap:.4rem;"&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;gemini-1.5-flash&lt;/span&gt;&lt;div style="flex:1;height:.8rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div style="height:100%;width:0.5%;min-width:3px;background:#3b82f6;border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#93c5fd;text-align:right;"&gt;0.8&amp;thinsp;s&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;Qwen2.5-14B&lt;/span&gt;&lt;div style="flex:1;height:.8rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div style="height:100%;width:2%;min-width:5px;background:#a855f7;border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#d8b4fe;text-align:right;"&gt;3.4&amp;thinsp;s&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;Llama-3.2-1B&lt;/span&gt;&lt;div style="flex:1;height:.8rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div style="height:100%;width:24%;background:#2dd4bf;border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#5eead4;text-align:right;"&gt;41&amp;thinsp;s&lt;/span&gt;&lt;/div&gt;
&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span class="pub-chart-label" style="font-size:var(--pub-text-small);color:#cbd5e1;flex-shrink:0;"&gt;Llama-3.2-3B&lt;/span&gt;&lt;div style="flex:1;height:.8rem;border-radius:.3rem;background:rgba(148,163,184,.1);overflow:hidden;"&gt;&lt;div style="height:100%;width:100%;background:linear-gradient(90deg,#0d9488,#2dd4bf);border-radius:.3rem;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;span class="pub-chart-value" style="font-size:var(--pub-text-small);font-family:ui-monospace,monospace;color:#5eead4;text-align:right;"&gt;168&amp;thinsp;s&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p style="margin:.7rem 0 0;font-size:var(--pub-text-body);line-height:1.65;color:#64748b;"&gt;Local Llama times reflect commodity hardware without GPU acceleration; bars are on a shared linear scale, so the sub-second cloud models are barely visible next to a three-minute local run.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ What this establishes ═══ --&gt;
&lt;div class="paper-section-anchor" id="paper-impact" tabindex="-1" style="margin-bottom:1.25rem;border-radius:1.25rem;border:1px solid rgba(34,197,94,.2);overflow:hidden;background:linear-gradient(135deg,rgba(34,197,94,.05),rgba(59,130,246,.03));"&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(34,197,94,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(34,197,94,.15);display:flex;align-items:center;justify-content:center;color:#4ade80;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#4ade80;"&gt;What This Establishes&lt;/div&gt;
&lt;/div&gt;
&lt;div class="pub-grid" style="padding:1rem min(1.5rem,var(--pub-panel-padding));display:grid;gap:.75rem;"&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(34,197,94,.18);background:rgba(34,197,94,.04);padding:.8rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#4ade80;margin-bottom:.3rem;"&gt;01 &amp;middot; Detection is the easy half&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Open models match Gemini on the yes/no call: several hit &lt;strong style="color:#e2e8f0;"&gt;87.5%&lt;/strong&gt;. The models separate only when asked &lt;strong style="color:#e2e8f0;"&gt;why&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(34,197,94,.18);background:rgba(34,197,94,.04);padding:.8rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#4ade80;margin-bottom:.3rem;"&gt;02 &amp;middot; Grounding beats fluency&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Gemini does not just answer: it names the &lt;strong style="color:#e2e8f0;"&gt;MUTCD&lt;/strong&gt; section, turning a verdict into an auditable rationale a reviewer can check.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="border-radius:.8rem;border:1px solid rgba(34,197,94,.18);background:rgba(34,197,94,.04);padding:.8rem .9rem;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#4ade80;margin-bottom:.3rem;"&gt;03 &amp;middot; No labels required&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Zero-shot chain-of-thought reaches &lt;strong style="color:#e2e8f0;"&gt;92.5%&lt;/strong&gt; with no labeled examples, so the approach ports to new rules and scenarios cheaply.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Limitations &amp; next steps ═══ --&gt;
&lt;div style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(251,191,36,.2);background:linear-gradient(135deg,rgba(251,191,36,.05),rgba(245,158,11,.03));overflow:hidden;"&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(251,191,36,.12);display:flex;align-items:center;gap:.75rem;"&gt;
&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(251,191,36,.15);display:flex;align-items:center;justify-content:center;color:#fbbf24;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 6v6h4.5m4.5 0a9 9 0 11-18 0 9 9 0 0118 0z"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#fbbf24;"&gt;Work in Progress &amp;middot; Honest Limits &amp;amp; Next Steps&lt;/div&gt;
&lt;/div&gt;
&lt;div style="padding:1rem min(1.5rem,var(--pub-panel-padding));display:flex;flex-direction:column;gap:.6rem;"&gt;
&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Small set&lt;/span&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;AutoSec-X is 40 scenarios: a signal, not a verdict.&lt;/strong&gt; The numbers show a clear direction, but scaling the benchmark up is the immediate next step before drawing firm conclusions.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Text-only&lt;/span&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;The DSL assumes the scene is already parsed.&lt;/strong&gt; Reasoning happens over structured text, not raw pixels; feeding multimodal inputs to the model directly is explicit future work.&lt;/p&gt;
&lt;/div&gt;
&lt;div style="display:flex;align-items:baseline;gap:.6rem;"&gt;
&lt;span style="flex-shrink:0;font-size:var(--pub-text-label);font-weight:800;color:#fbbf24;letter-spacing:.06em;text-transform:uppercase;padding:.1rem .4rem;background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.25);border-radius:.3rem;"&gt;Synthetic&lt;/span&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Scenarios are GPT-4-generated and MUTCD-grounded.&lt;/strong&gt; They are internally consistent and rule-anchored, but real-world sensor logs remain the harder test still to come.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- ═══ Where it goes next: forward link ═══ --&gt;
&lt;div style="margin-bottom:1.5rem;border-radius:1rem;border:1px solid rgba(59,130,246,.22);background:linear-gradient(135deg,rgba(59,130,246,.06),rgba(34,197,94,.03));padding:1rem min(1.25rem,var(--pub-panel-padding));display:flex;align-items:center;gap:1rem;flex-wrap:wrap;"&gt;
&lt;span style="flex-shrink:0;width:2.25rem;height:2.25rem;border-radius:.7rem;background:rgba(59,130,246,.15);display:flex;align-items:center;justify-content:center;color:#60a5fa;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.7"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5L21 12m0 0l-7.5 7.5M21 12H3"/&gt;&lt;/svg&gt;
&lt;/span&gt;
&lt;div style="flex:1;min-width:220px;"&gt;
&lt;div style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#60a5fa;margin-bottom:.2rem;"&gt;Where this line of work leads&lt;/div&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;This work-in-progress seeded the direction that matured into &lt;a href="https://davidferna.com/publications/mirage-to-clear/" style="color:#93c5fd;font-weight:600;text-decoration:none;border-bottom:1px solid rgba(147,197,253,.4);"&gt;From Mirage to CLEAR&lt;/a&gt;, which scales MUTCD-grounded LLM reasoning to module-level fault attribution on tens of thousands of real scenes.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- methodology note --&gt;
&lt;div style="display:flex;align-items:flex-start;gap:.6rem;padding:.875rem min(1.1rem,var(--pub-panel-padding));border-radius:.75rem;background:rgba(34,197,94,.05);border:1px solid rgba(34,197,94,.15);margin-bottom:1rem;"&gt;
&lt;svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="#22c55e" stroke-width="2" style="flex-shrink:0;margin-top:.15rem;"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"/&gt;&lt;/svg&gt;
&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;The framework was benchmarked across &lt;strong style="color:#22c55e;"&gt;9 LLMs&lt;/strong&gt; spanning the Gemini, Llama&amp;nbsp;3.2, and Qwen&amp;nbsp;2.5 families over the &lt;strong style="color:#22c55e;"&gt;40-scenario AutoSec-X&lt;/strong&gt; set, each queried with a single zero-shot chain-of-thought prompt. Detection is scored as accuracy on the balanced anomalous-vs-benign task; explanations are scored against expert ground-truth answers with &lt;strong style="color:#22c55e;"&gt;ROUGE, BLEU, SBERT cosine, and BERTScore&lt;/strong&gt;. The diagrams above rebuild the paper&amp;rsquo;s framework and results; exact tables are in the PDF.&lt;/p&gt;
&lt;/div&gt;
&lt;script&gt;(function(){if(!("IntersectionObserver" in window))return;var io=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add("dx-visible");io.unobserve(e.target);}});},{threshold:0});document.querySelectorAll(".dx-reveal").forEach(function(el){io.observe(el);});}());&lt;/script&gt;
&lt;/p&gt;</description></item><item><title>Avoiding the Crash: A Vision-Language Model Evaluation of Critical Traffic Scenarios</title><link>https://davidferna.com/publications/avoiding-the-crash/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://davidferna.com/publications/avoiding-the-crash/</guid><description>&lt;style&gt;@keyframes vlm-card-up{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}/* Cards stay visible if the reveal script is unavailable. */@media screen and (prefers-reduced-motion:no-preference){.vlm-scenario.vlm-visible .vlm-card:nth-child(1){animation:vlm-card-up .5s .1s ease forwards}.vlm-scenario.vlm-visible .vlm-card:nth-child(2){animation:vlm-card-up .5s .25s ease forwards}.vlm-scenario.vlm-visible .vlm-card:nth-child(3){animation:vlm-card-up .5s .4s ease forwards}.vlm-scenario.vlm-visible .vlm-card:nth-child(4){animation:vlm-card-up .5s .55s ease forwards}}@media screen and (prefers-reduced-motion:reduce){.vlm-scenario.vlm-visible .vlm-card{opacity:1;transform:none;transition:opacity .2s ease}}&lt;/style&gt;&lt;div class="not-prose" style="margin:0;padding:0;"&gt;&lt;div class="pub-grid" style="display:grid;gap:1rem;margin-bottom:1.5rem;"&gt;&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(239,68,68,.06);border:1px solid rgba(239,68,68,.2);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#ef4444;margin-bottom:.5rem;"&gt;01 &amp;nbsp;·&amp;nbsp; The Problem&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;AV systems rely on DNNs that require constant retraining. When outdated, they fail to recognize novel crash scenarios, causing preventable accidents.&lt;/p&gt;&lt;/div&gt;&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(99,102,241,.06);border:1px solid rgba(99,102,241,.2);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#6366f1;margin-bottom:.5rem;"&gt;02 &amp;nbsp;·&amp;nbsp; The Approach&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Real-world dashcam crash footage is decomposed frame-by-frame. LLaVA-7B and MoE-LLaVA predict the safest driving action at each frame: &lt;strong style="color:#e2e8f0;"&gt;brake, accelerate, or turn&lt;/strong&gt;.&lt;/p&gt;&lt;/div&gt;&lt;div style="padding:1.1rem min(1.25rem,var(--pub-panel-padding));border-radius:1rem;background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);"&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#22c55e;margin-bottom:.5rem;"&gt;03 &amp;nbsp;·&amp;nbsp; The Metric: CPE&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;&lt;strong style="color:#e2e8f0;"&gt;Crash Prevention Efficiency&lt;/strong&gt; scores how early and how precisely a model detects the threat, measured against the point of no return (t&lt;sub&gt;PNR&lt;/sub&gt;) and crash point (t&lt;sub&gt;x&lt;/sub&gt;).&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="paper-section-anchor" id="paper-scenarios" tabindex="-1" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(99,102,241,.2);overflow:hidden;"&gt;&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(99,102,241,.15);background:linear-gradient(135deg,rgba(99,102,241,.08),rgba(168,85,247,.05));display:flex;align-items:center;gap:.75rem;"&gt;&lt;span style="flex-shrink:0;width:2rem;height:2rem;border-radius:.625rem;background:rgba(99,102,241,.15);display:flex;align-items:center;justify-content:center;color:#818cf8;"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.8"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M3.75 13.5l10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75z"/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;div&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#818cf8;margin-bottom:.15rem;"&gt;Frame-by-Frame VLM Analysis&lt;/div&gt;&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;MoE-LLaVA's real-time decision-making across two critical crash scenarios, from safe driving to the moment of impact.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="padding:1.25rem;display:flex;flex-direction:column;gap:1.25rem;"&gt;&lt;div class="vlm-scenario" style="margin-bottom:2rem;border-radius:1.25rem;border:1px solid rgba(59,130,246,.25);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06);"&gt;&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(99,102,241,.06));border-bottom:1px solid rgba(59,130,246,.15);"&gt;&lt;div style="display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;background:#3b82f6;color:#fff;padding:.22rem .65rem;border-radius:9999px;"&gt;Q1&lt;/span&gt;&lt;span style="font-size:1.2rem;font-weight:600;"&gt;Can VLMs Overcome Human Drivers?&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:.35rem;font-size:var(--pub-text-body);color:#94a3b8;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;"&gt;&lt;span&gt;Red Light Violation&lt;/span&gt;&lt;span style="opacity:.4;"&gt;·&lt;/span&gt;&lt;span&gt;Dashcam · victim vehicle POV&lt;/span&gt;&lt;span style="opacity:.4;"&gt;·&lt;/span&gt;&lt;span&gt;&lt;span style="background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.3);border-radius:.4rem;padding:.15rem .55rem;font-weight:600;white-space:normal;"&gt;VLMs detected threat &lt;strong&gt;1.33 s earlier&lt;/strong&gt; than humans&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="position:relative;overflow:hidden;"&gt;&lt;video class="vlm-video" autoplay muted loop playsinline style="width:100%;display:block;aspect-ratio:16/9;object-fit:cover;background:#000;"&gt;&lt;source src="https://davidferna.com/files/publications/rlv-crash.mp4" type="video/mp4"&gt;&lt;/video&gt;&lt;div style="position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.85),transparent);padding:.8rem min(1.5rem,var(--pub-panel-padding)) .65rem;"&gt;&lt;div style="height:5px;background:rgba(255,255,255,.15);border-radius:3px;overflow:hidden;margin-bottom:.5rem;"&gt;&lt;div class="vlm-video-progress" style="height:100%;width:0%;background:linear-gradient(to right,#22c55e,#fbbf24,#f97316,#ef4444);transition:width .1s linear;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display:flex;justify-content:space-between;font-size:var(--pub-text-small);color:rgba(255,255,255,.85);font-family:monospace;font-weight:600;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span&gt;t₀ · Start&lt;/span&gt;&lt;span&gt;t&lt;sub&gt;R&lt;/sub&gt; · Detection&lt;/span&gt;&lt;span&gt;t&lt;sub&gt;PNR&lt;/sub&gt; · No Return&lt;/span&gt;&lt;span&gt;t&lt;sub&gt;x&lt;/sub&gt; · Crash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="pub-scroll" style="padding:1.25rem min(1.5rem,var(--pub-panel-padding));overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;&lt;div class="pub-grid" style="display:grid;gap:1rem;"&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(34,197,94,.28);background:rgba(34,197,94,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(34,197,94,.1);border-bottom:1px solid rgba(34,197,94,.18);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#15803d;text-transform:uppercase;letter-spacing:.04em;"&gt;Safe Zone&lt;/span&gt;&lt;/div&gt;&lt;img src="rlv-t0.jpg" alt="Start of video, approaching intersection at 8 mph" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#22c55e;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"You are driving at 8 mph approaching a four-way intersection."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(234,179,8,.3);background:rgba(234,179,8,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(234,179,8,.12);border-bottom:1px solid rgba(234,179,8,.22);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#a16207;text-transform:uppercase;letter-spacing:.04em;"&gt;VLM Detects Threat&lt;/span&gt;&lt;/div&gt;&lt;img src="rlv-detect.jpg" alt="Detection, car approaching crosswalk" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#eab308;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"A car is approaching a crosswalk – exercise caution at the intersection."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(249,115,22,.3);background:rgba(249,115,22,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(249,115,22,.12);border-bottom:1px solid rgba(249,115,22,.22);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#c2410c;text-transform:uppercase;letter-spacing:.04em;"&gt;Point of No Return&lt;/span&gt;&lt;/div&gt;&lt;img src="rlv-pnr.jpg" alt="Point of no return, red-light violator in intersection" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#f97316;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"Slow down – maintain a safe distance from the white car in front of you."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(239,68,68,.3);background:rgba(239,68,68,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(239,68,68,.12);border-bottom:1px solid rgba(239,68,68,.22);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#b91c1c;text-transform:uppercase;letter-spacing:.04em;"&gt;Crash Point&lt;/span&gt;&lt;/div&gt;&lt;img src="rlv-crash.jpg" alt="Crash, collision occurring" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#ef4444;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"You should slow down immediately – the situation ahead is critical."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-scenario" style="margin-bottom:1rem;border-radius:1.25rem;border:1px solid rgba(168,85,247,.25);overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06);"&gt;&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));background:linear-gradient(135deg,rgba(168,85,247,.08),rgba(99,102,241,.06));border-bottom:1px solid rgba(168,85,247,.15);"&gt;&lt;div style="display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:800;letter-spacing:.1em;text-transform:uppercase;background:#a855f7;color:#fff;padding:.22rem .65rem;border-radius:9999px;"&gt;Q2&lt;/span&gt;&lt;span style="font-size:1.2rem;font-weight:600;"&gt;Can VLMs Overcome DNN-Based AV Systems?&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:.35rem;font-size:var(--pub-text-body);color:#94a3b8;display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;"&gt;&lt;span&gt;Flipped Truck · Highway at Night&lt;/span&gt;&lt;span style="opacity:.4;"&gt;·&lt;/span&gt;&lt;span&gt;Tesla dashcam footage&lt;/span&gt;&lt;span style="opacity:.4;"&gt;·&lt;/span&gt;&lt;span&gt;&lt;span style="background:rgba(34,197,94,.15);color:#22c55e;border:1px solid rgba(34,197,94,.3);border-radius:.4rem;padding:.15rem .55rem;font-weight:600;white-space:normal;"&gt;VLMs detected hazard &lt;strong&gt;before braking initiated&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="position:relative;overflow:hidden;"&gt;&lt;video class="vlm-video" autoplay muted loop playsinline style="width:100%;display:block;aspect-ratio:16/9;object-fit:cover;background:#000;"&gt;&lt;source src="https://davidferna.com/files/publications/av-crash.mp4" type="video/mp4"&gt;&lt;/video&gt;&lt;div style="position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.85),transparent);padding:.8rem min(1.5rem,var(--pub-panel-padding)) .65rem;"&gt;&lt;div style="height:5px;background:rgba(255,255,255,.15);border-radius:3px;overflow:hidden;margin-bottom:.5rem;"&gt;&lt;div class="vlm-video-progress" style="height:100%;width:0%;background:linear-gradient(to right,#22c55e,#fbbf24,#f97316,#ef4444);transition:width .1s linear;"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display:flex;justify-content:space-between;font-size:var(--pub-text-small);color:rgba(255,255,255,.85);font-family:monospace;font-weight:600;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span&gt;t₀ · Start&lt;/span&gt;&lt;span&gt;t&lt;sub&gt;R&lt;/sub&gt; · Detection&lt;/span&gt;&lt;span&gt;t&lt;sub&gt;PNR&lt;/sub&gt; · No Return&lt;/span&gt;&lt;span&gt;t&lt;sub&gt;x&lt;/sub&gt; · Crash&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="pub-scroll" style="padding:1.25rem min(1.5rem,var(--pub-panel-padding));overflow-x:auto;" tabindex="0" role="region" aria-label="Scrollable figure or equation"&gt;&lt;div class="pub-grid" style="display:grid;gap:1rem;"&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(34,197,94,.28);background:rgba(34,197,94,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(34,197,94,.1);border-bottom:1px solid rgba(34,197,94,.18);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#15803d;text-transform:uppercase;letter-spacing:.04em;"&gt;Safe Zone&lt;/span&gt;&lt;/div&gt;&lt;img src="av-t0.jpg" alt="Start of video, dark highway at night, 57 mph" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#22c55e;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"You are driving at 57 mph on a dark highway at night – maintain safe following distance."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(234,179,8,.3);background:rgba(234,179,8,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(234,179,8,.12);border-bottom:1px solid rgba(234,179,8,.22);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#a16207;text-transform:uppercase;letter-spacing:.04em;"&gt;VLM Detects Threat&lt;/span&gt;&lt;/div&gt;&lt;img src="av-detect.jpg" alt="Detection, obstacle visible on highway" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#eab308;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"Be aware of potential obstacles or traffic conditions ahead on the highway."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(249,115,22,.3);background:rgba(249,115,22,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(249,115,22,.12);border-bottom:1px solid rgba(249,115,22,.22);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#c2410c;text-transform:uppercase;letter-spacing:.04em;"&gt;Point of No Return&lt;/span&gt;&lt;/div&gt;&lt;img src="av-pnr.jpg" alt="Point of no return, flipped truck blocking highway" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#f97316;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"There is a truck on the road in a precarious position – slow down to avoid a collision."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="vlm-card" style="border-radius:.875rem;overflow:hidden;border:1px solid rgba(239,68,68,.3);background:rgba(239,68,68,.04);"&gt;&lt;div style="padding:.45rem .75rem;background:rgba(239,68,68,.12);border-bottom:1px solid rgba(239,68,68,.22);text-align:center;"&gt;&lt;span style="font-size:var(--pub-text-label);font-weight:700;color:#b91c1c;text-transform:uppercase;letter-spacing:.04em;"&gt;Crash Point&lt;/span&gt;&lt;/div&gt;&lt;img src="av-crash.jpg" alt="Crash, Tesla collides with flipped truck" loading="lazy" style="width:100%;height:auto;display:block;aspect-ratio:4/3;object-fit:cover;"&gt;&lt;div style="padding:.65rem .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:#ef4444;margin-bottom:.3rem;"&gt;MoE-LLaVA&lt;/div&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#cbd5e1;font-style:italic;"&gt;"Brake immediately – there is an obstruction across the full width of the road."&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:flex-start;gap:.6rem;padding:.875rem min(1.1rem,var(--pub-panel-padding));border-radius:.75rem;background:rgba(99,102,241,.05);border:1px solid rgba(99,102,241,.15);margin-top:1rem;"&gt;&lt;svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" fill="none" viewBox="0 0 24 24" stroke="#6366f1" stroke-width="2" style="flex-shrink:0;margin-top:.15rem;"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z"/&gt;&lt;/svg&gt;&lt;p style="margin:0;font-size:var(--pub-text-body);line-height:1.65;color:#94a3b8;"&gt;Timeline zones reflect each scenario's &lt;strong style="color:#6366f1;"&gt;Crash Prevention Efficiency (CPE)&lt;/strong&gt; intervals: the window between VLM detection (t&lt;sub&gt;R&lt;/sub&gt;), the point of no return (t&lt;sub&gt;PNR&lt;/sub&gt;), and impact (t&lt;sub&gt;x&lt;/sub&gt;). Frames extracted from real-world dashcam footage used in the study.&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="paper-section-anchor" id="paper-results" tabindex="-1" style="margin-bottom:1.5rem;border-radius:1.25rem;border:1px solid rgba(99,102,241,.25);overflow:hidden;background:linear-gradient(135deg,rgba(99,102,241,.06),rgba(168,85,247,.04));"&gt;&lt;div style="padding:1.1rem min(1.5rem,var(--pub-panel-padding));border-bottom:1px solid rgba(99,102,241,.15);display:flex;align-items:center;gap:.75rem;"&gt;&lt;div style="flex-shrink:0;width:2rem;height:2rem;border-radius:.5rem;background:rgba(99,102,241,.15);display:flex;align-items:center;justify-content:center;color:#818cf8;font-size:1.1rem;font-weight:700;"&gt;∫&lt;/div&gt;&lt;div&gt;&lt;div style="font-size:var(--pub-text-heading);font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:#818cf8;margin-bottom:.1rem;"&gt;Crash Prevention Efficiency (CPE)&lt;/div&gt;&lt;div style="font-size:var(--pub-text-body);color:#94a3b8;"&gt;A novel metric measuring how early and precisely a model acts relative to the Point of No Return (t&lt;sub&gt;b&lt;/sub&gt;).&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="pub-grid" style="padding:1.25rem min(1.5rem,var(--pub-panel-padding));display:grid;gap:1.5rem;"&gt;&lt;div&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;margin-bottom:.85rem;"&gt;Formula&lt;/div&gt;&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Crash Prevention Efficiency equation" style="display:flex;align-items:center;gap:.5rem;white-space:nowrap;"&gt;&lt;span style="font-family:monospace;font-size:var(--pub-text-body);color:#a5b4fc;font-weight:600;flex-shrink:0;white-space:normal;"&gt;CPE =&lt;/span&gt;&lt;div style="position:relative;width:14px;flex-shrink:0;align-self:stretch;"&gt;&lt;div style="position:absolute;left:10px;top:0;bottom:0;width:2px;background:#6366f1;border-radius:1px;"&gt;&lt;/div&gt;&lt;div style="position:absolute;left:10px;top:0;width:6px;height:2px;background:#6366f1;"&gt;&lt;/div&gt;&lt;div style="position:absolute;left:10px;bottom:0;width:6px;height:2px;background:#6366f1;"&gt;&lt;/div&gt;&lt;div style="position:absolute;left:2px;top:50%;width:8px;height:2px;background:#6366f1;transform:translateY(-50%);"&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="display:flex;flex-direction:column;gap:.65rem;"&gt;&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span style="font-family:monospace;font-size:var(--pub-text-body);white-space:normal;color:#e2e8f0;"&gt;e&lt;sup style="font-size:.75em;"&gt;&amp;#8722;&amp;#945;(t&lt;sub&gt;b&lt;/sub&gt;&amp;#8722;t&lt;sub&gt;c&lt;/sub&gt;)&lt;/sup&gt;&lt;/span&gt;&lt;span style="margin-left:auto;font-size:var(--pub-text-label);background:rgba(34,197,94,.12);color:#22c55e;border:1px solid rgba(34,197,94,.3);border-radius:.35rem;padding:.12rem .5rem;font-weight:700;letter-spacing:.04em;white-space:normal;"&gt;EARLY &amp;nbsp;&amp;nbsp; if&amp;nbsp; t&lt;sub&gt;c&lt;/sub&gt; &amp;lt; t&lt;sub&gt;b&lt;/sub&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span style="font-family:monospace;font-size:var(--pub-text-body);color:#e2e8f0;"&gt;1&lt;/span&gt;&lt;span style="margin-left:auto;font-size:var(--pub-text-label);background:rgba(234,179,8,.12);color:#fbbf24;border:1px solid rgba(234,179,8,.3);border-radius:.35rem;padding:.12rem .5rem;font-weight:700;letter-spacing:.04em;white-space:normal;"&gt;ON-TIME &amp;nbsp;&amp;nbsp; if&amp;nbsp; t&lt;sub&gt;c&lt;/sub&gt; = t&lt;sub&gt;b&lt;/sub&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:center;gap:.5rem;"&gt;&lt;span style="font-family:monospace;font-size:var(--pub-text-body);white-space:normal;color:#e2e8f0;"&gt;&amp;#8722;e&lt;sup style="font-size:.75em;"&gt;&amp;#8722;&amp;#946;(t&lt;sub&gt;c&lt;/sub&gt;&amp;#8722;t&lt;sub&gt;b&lt;/sub&gt;)&lt;/sup&gt;&lt;/span&gt;&lt;span style="margin-left:auto;font-size:var(--pub-text-label);background:rgba(239,68,68,.12);color:#f87171;border:1px solid rgba(239,68,68,.3);border-radius:.35rem;padding:.12rem .5rem;font-weight:700;letter-spacing:.04em;white-space:normal;"&gt;LATE &amp;nbsp;&amp;nbsp; if&amp;nbsp; t&lt;sub&gt;c&lt;/sub&gt; &amp;gt; t&lt;sub&gt;b&lt;/sub&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;margin-bottom:.85rem;"&gt;Variables&lt;/div&gt;&lt;div class="pub-definitions" style="display:grid;gap:.45rem .55rem;font-size:var(--pub-text-body);align-items:baseline;"&gt;&lt;span style="font-family:monospace;color:#a5b4fc;white-space:normal;"&gt;t&lt;sub&gt;b&lt;/sub&gt;&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;= d/v, Point of No Return time&lt;/span&gt;&lt;span style="font-family:monospace;color:#a5b4fc;white-space:normal;"&gt;t&lt;sub&gt;c&lt;/sub&gt;&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;= t&lt;sub&gt;d&lt;/sub&gt; + t&lt;sub&gt;r&lt;/sub&gt;, Detection + reaction time&lt;/span&gt;&lt;span style="font-family:monospace;color:#a5b4fc;"&gt;&amp;#945;&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;Scaling factor for early actions&lt;/span&gt;&lt;span style="font-family:monospace;color:#a5b4fc;"&gt;&amp;#946;&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;Scaling factor for late actions; &amp;#946; &amp;gt; &amp;#945;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-top:1px solid rgba(99,102,241,.12);padding:1rem min(1.5rem,var(--pub-panel-padding)) .75rem;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;margin-bottom:.5rem;"&gt;CPE vs. Detection Timing&lt;/div&gt;&lt;div class="pub-scroll" tabindex="0" role="region" aria-label="Diagram (scroll horizontally to see more)"&gt;&lt;svg class="pub-diagram" width="100%" viewBox="0 0 640 260" style="overflow:visible;--pub-diagram-width:40rem;" xmlns="http://www.w3.org/2000/svg"&gt;&lt;defs&gt;&lt;linearGradient id="egr" x1="0" y1="0" x2="1" y2="0"&gt;&lt;stop offset="0%" stop-color="#dc2626" stop-opacity=".85"/&gt;&lt;stop offset="40%" stop-color="#f97316" stop-opacity=".9"/&gt;&lt;stop offset="72%" stop-color="#fbbf24"/&gt;&lt;stop offset="100%" stop-color="#22c55e"/&gt;&lt;/linearGradient&gt;&lt;linearGradient id="lgr" x1="0" y1="0" x2="1" y2="0"&gt;&lt;stop offset="0%" stop-color="#22c55e"/&gt;&lt;stop offset="28%" stop-color="#fbbf24"/&gt;&lt;stop offset="60%" stop-color="#f97316" stop-opacity=".9"/&gt;&lt;stop offset="100%" stop-color="#dc2626" stop-opacity=".85"/&gt;&lt;/linearGradient&gt;&lt;marker id="axAr" markerWidth="7" markerHeight="5" refX="6" refY="2.5" orient="auto"&gt;&lt;path d="M0,0 L7,2.5 L0,5 Z" fill="rgba(148,163,184,.5)"/&gt;&lt;/marker&gt;&lt;marker id="axAu" markerWidth="5" markerHeight="7" refX="2.5" refY="0" orient="auto"&gt;&lt;path d="M0,7 L2.5,0 L5,7 Z" fill="rgba(148,163,184,.5)"/&gt;&lt;/marker&gt;&lt;/defs&gt;&lt;line x1="55" y1="140" x2="615" y2="140" stroke="rgba(148,163,184,.45)" stroke-width="1.5" marker-end="url(#axAr)"/&gt;&lt;line x1="65" y1="252" x2="65" y2="12" stroke="rgba(148,163,184,.45)" stroke-width="1.5" marker-end="url(#axAu)"/&gt;&lt;line x1="65" y1="42" x2="328" y2="42" stroke="rgba(148,163,184,.25)" stroke-width="1" stroke-dasharray="5,4"/&gt;&lt;line x1="320" y1="42" x2="320" y2="140" stroke="rgba(148,163,184,.22)" stroke-width="1" stroke-dasharray="4,4"/&gt;&lt;path d="M 60 236 C 215 236, 298 42, 320 42" stroke="url(#egr)" stroke-width="3" fill="none" stroke-linecap="round"/&gt;&lt;path d="M 320 42 C 342 42, 425 236, 580 236" stroke="url(#lgr)" stroke-width="3" fill="none" stroke-linecap="round"/&gt;&lt;circle cx="320" cy="42" r="5.5" fill="#22c55e" stroke="rgba(255,255,255,.3)" stroke-width="1"/&gt;&lt;line x1="290" y1="82" x2="290" y2="140" stroke="rgba(129,140,248,.4)" stroke-width="1" stroke-dasharray="3,3"/&gt;&lt;circle cx="290" cy="82" r="5.5" fill="#6366f1" stroke="rgba(255,255,255,.4)" stroke-width="1.2"/&gt;&lt;text x="210" y="66" font-size="10" fill="#a5b4fc" text-anchor="middle" font-family="sans-serif"&gt;LLaVA-7B&lt;/text&gt;&lt;text x="210" y="77" font-size="8.5" fill="rgba(165,180,252,.7)" text-anchor="middle" font-family="monospace"&gt;CPE&amp;#8776;0.60&lt;/text&gt;&lt;line x1="232" y1="71" x2="283" y2="80" stroke="rgba(129,140,248,.4)" stroke-width="1"/&gt;&lt;circle cx="302" cy="76" r="5.5" fill="#a855f7" stroke="rgba(255,255,255,.4)" stroke-width="1.2"/&gt;&lt;text x="420" y="36" font-size="10" fill="#c084fc" text-anchor="middle" font-family="sans-serif"&gt;MoE-LLaVA&lt;/text&gt;&lt;text x="420" y="47" font-size="8.5" fill="rgba(192,132,252,.7)" text-anchor="middle" font-family="monospace"&gt;CPE&amp;#8776;0.63&lt;/text&gt;&lt;line x1="388" y1="41" x2="309" y2="73" stroke="rgba(192,132,252,.4)" stroke-width="1"/&gt;&lt;circle cx="433" cy="148" r="5.5" fill="#ef4444" stroke="rgba(255,255,255,.4)" stroke-width="1.2"/&gt;&lt;line x1="433" y1="140" x2="433" y2="148" stroke="rgba(239,68,68,.45)" stroke-width="1" stroke-dasharray="3,3"/&gt;&lt;line x1="65" y1="148" x2="427" y2="148" stroke="rgba(239,68,68,.3)" stroke-width="1" stroke-dasharray="3,3"/&gt;&lt;line x1="444" y1="152" x2="508" y2="168" stroke="rgba(239,68,68,.35)" stroke-width="1"/&gt;&lt;text x="512" y="172" font-size="10" fill="#f87171" text-anchor="start" font-family="sans-serif"&gt;AV Systems&lt;/text&gt;&lt;text x="512" y="183" font-size="8.5" fill="rgba(248,113,113,.7)" text-anchor="start" font-family="monospace"&gt;CPE&amp;#8776;&amp;#8722;0.07&lt;/text&gt;&lt;text x="59" y="152" font-size="8" fill="rgba(248,113,113,.65)" text-anchor="end" font-family="monospace"&gt;&amp;#8722;.07&lt;/text&gt;&lt;text x="58" y="45" font-size="9.5" fill="rgba(148,163,184,.75)" text-anchor="end" font-family="monospace"&gt;1&lt;/text&gt;&lt;text x="58" y="143" font-size="9.5" fill="rgba(148,163,184,.75)" text-anchor="end" font-family="monospace"&gt;0&lt;/text&gt;&lt;text x="58" y="240" font-size="9.5" fill="rgba(148,163,184,.75)" text-anchor="end" font-family="monospace"&gt;&amp;#8722;1&lt;/text&gt;&lt;text x="40" y="17" font-size="11" fill="rgba(148,163,184,.75)" text-anchor="middle" font-family="monospace"&gt;CPE&lt;/text&gt;&lt;text x="600" y="112" font-size="10.5" fill="rgba(148,163,184,.75)" text-anchor="end" font-family="monospace"&gt;Time(t)&lt;/text&gt;&lt;text x="320" y="157" font-size="9" fill="rgba(148,163,184,.6)" text-anchor="middle" font-family="monospace"&gt;t&amp;#8336; = t&amp;#7495;&lt;/text&gt;&lt;text x="185" y="130" font-size="11" fill="rgba(34,197,94,.6)" text-anchor="middle" font-family="sans-serif" font-style="italic"&gt;Early Action&lt;/text&gt;&lt;text x="470" y="130" font-size="11" fill="rgba(239,68,68,.6)" text-anchor="middle" font-family="sans-serif" font-style="italic"&gt;Late Action&lt;/text&gt;&lt;/svg&gt;&lt;/div&gt;&lt;div style="margin-top:.75rem;padding:.5rem .75rem;border-radius:.625rem;background:rgba(99,102,241,.07);border:1px solid rgba(99,102,241,.15);"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:#818cf8;margin-bottom:.3rem;"&gt;Score &amp;amp; Interpretation&lt;/div&gt;&lt;div style="height:6px;border-radius:3px;background:linear-gradient(to right,#dc2626,#f97316,#fbbf24,#22c55e,#fbbf24,#f97316,#dc2626);"&gt;&lt;/div&gt;&lt;div style="display:flex;justify-content:space-between;font-size:var(--pub-text-small);font-family:monospace;color:#94a3b8;margin-top:.3rem;flex-wrap:wrap;gap:.5rem;"&gt;&lt;span&gt;&amp;#8722;1 &amp;nbsp;very early&lt;/span&gt;&lt;span&gt;+1 &amp;nbsp;ideal&lt;/span&gt;&lt;span&gt;&amp;#8722;1 &amp;nbsp;very late&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="border-top:1px solid rgba(99,102,241,.12);padding:.75rem min(1.5rem,var(--pub-panel-padding));display:flex;gap:1.25rem;flex-wrap:wrap;align-items:center;"&gt;&lt;div style="font-size:var(--pub-text-label);font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:#94a3b8;flex-shrink:0;"&gt;Results highlight&lt;/div&gt;&lt;div style="display:flex;gap:.875rem;flex-wrap:wrap;align-items:center;"&gt;&lt;div style="display:flex;align-items:center;gap:.4rem;font-size:var(--pub-text-body);"&gt;&lt;span style="width:.5rem;height:.5rem;border-radius:50%;background:#818cf8;display:inline-block;flex-shrink:0;"&gt;&lt;/span&gt;&lt;span style="color:#a5b4fc;font-weight:600;"&gt;LLaVA-7B&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;avg CPE&lt;/span&gt;&lt;span style="color:#e2e8f0;font-weight:700;font-family:monospace;"&gt;0.42&amp;ndash;0.82&lt;/span&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:center;gap:.4rem;font-size:var(--pub-text-body);"&gt;&lt;span style="width:.5rem;height:.5rem;border-radius:50%;background:#c084fc;display:inline-block;flex-shrink:0;"&gt;&lt;/span&gt;&lt;span style="color:#c084fc;font-weight:600;"&gt;MoE-LLaVA&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;avg CPE&lt;/span&gt;&lt;span style="color:#e2e8f0;font-weight:700;font-family:monospace;"&gt;0.40&amp;ndash;0.85&lt;/span&gt;&lt;/div&gt;&lt;div style="display:flex;align-items:center;gap:.4rem;font-size:var(--pub-text-body);"&gt;&lt;span style="width:.5rem;height:.5rem;border-radius:50%;background:#ef4444;display:inline-block;flex-shrink:0;"&gt;&lt;/span&gt;&lt;span style="color:#f87171;font-weight:600;"&gt;AV Systems&lt;/span&gt;&lt;span style="color:#94a3b8;"&gt;avg CPE&lt;/span&gt;&lt;span style="color:#e2e8f0;font-weight:700;font-family:monospace;"&gt;&amp;#8722;0.13 to &amp;#8722;0.002&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script&gt;(function(){if('IntersectionObserver' in window){var io=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add('vlm-visible');io.unobserve(e.target);}});},{threshold:0});document.querySelectorAll('.vlm-scenario').forEach(function(el){io.observe(el);});}document.querySelectorAll('.vlm-scenario').forEach(function(scenario){var video=scenario.querySelector('.vlm-video');var bar=scenario.querySelector('.vlm-video-progress');if(!video||!bar)return;video.addEventListener('timeupdate',function(){if(video.duration){bar.style.width=(video.currentTime/video.duration*100)+'%';}});});}());&lt;/script&gt;</description></item><item><title>David vs. Goliath: A Comparative Study of Different-Sized LLMs for Code Generation in the Domain of Automotive Scenario Generation</title><link>https://davidferna.com/publications/david-vs-goliath/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://davidferna.com/publications/david-vs-goliath/</guid><description/></item></channel></rss>