let DATA; const $=q=>document.querySelector(q); async function boot(){ DATA=await (await fetch('./demo-data.json')).json(); $('#metrics').innerHTML=DATA.metrics.map(([l,v])=>`
${v}${l}
`).join(''); const s=DATA.scenario; $('#question').textContent=s.question; $('#conditions').innerHTML=Object.entries(s.conditions).map(([k,v])=>`
${k}${v}
`).join(''); draw('#retrieval',DATA.retrieval,['Dense baseline','Section-aware','Hybrid RRF — selected','Reranker ablation']); draw('#agent',DATA.agent,['Analytical tools','Agentic investigation','Agentic + verifier — final']); } function draw(sel,items,labels){ $(sel).innerHTML=items.map(([v,s],i)=>`
${v} · ${s}%${labels[i]}
`).join(''); } function runDemo(){ $('#placeholder').style.display='none'; $('#result').classList.remove('active'); $('#loading').classList.add('active'); const stages=['Retrieving historical incidents...','Running bounded analytics...','Assessing evidence sufficiency...','Generating ranked hypotheses...','Verifying claims and citations...']; let i=0; $('#loading-status').textContent=stages[0]; const timer=setInterval(()=>{i++;if(i`
${t}
`).join(''); $('#evidence').innerHTML=s.evidence.map(([c,t,x])=>`
${c}

${x}

`).join(''); $('#analytics').innerHTML=s.analytics.map(([n,v,d])=>`
${n}${d}
${v}
`).join(''); $('#result').classList.add('active'); } document.addEventListener('DOMContentLoaded',boot);