<!-- SOLID CITY · part 3770 -->
*100),src=sources(),ex=exchanges(),blocks=activeBlockers();document.getElementById('navOpen').textContent=active+' active';
    var cards=[['1','ACTIVE PROJECT','Harbor Shuttle Board','highlight'],[done+'/'+tasks.length,'TASKS COMPLETE',pct+'% from recorded states',''],[src.length,'SOURCE REFERENCES','Attached to result events',''],[ex.length,'AI ↔ AI EXCHANGES','Recorded in task histories','highlight'],[blocks.length,'OPEN BLOCKERS','Human gates remain visible',''],[done,'COMPLETED WORK','Tasks with completion events','']];
    document.getElementById('statCards').innerHTML=cards.map(function(c){return'<div class="stat '+c[3]+'"><div class="number">'+c[0]+'</div><div class="label">'+c[1]+'</div><div class="note">'+c[2]+'</div></div>'}).join('');
    document.getElementById('progressSummary').textContent=pct+'% complete · '+done+' task'+(done===1?'':'s')+' with recorded completion events';
    document.getElementById('ownershipStats').innerHTML=tasks.map(function(t){return'<div class="stats-row"><div><strong>'+esc(t.title)+'</strong><p>'+esc(ownerName(t.owner))+' · '+esc(t.state)+' · '+t.events.length+' recorded events</p><div class="progress-track"><div class="progress-fill" style="width:'+(t.state==='done'?100:t.state==='review'?80:t.state==='in-progress'?55:t.state==='claimed'?25:5)+'%"></div></div></div><button class="link-btn" data-nav-task="'+t.id+'">Open</button></div>'}).join('');
    document.getElementById('sourceStats').innerHTML=src.length?src.map(function(x){return'<div class="stats-row"><div><strong>'+esc(x.source)+'</strong><p>'+esc(x.event.actor)+' · '+esc(x.event.message)+'</p></div><button class="link-btn" data-nav-task="'+x.task.id+'">Open</button></div>'}).join(''):'<div class="empty">No source references recorded.</div>';
    document.getElementById('exchangeStats').innerHTML=ex.length?ex.map(function(x){return'<div class="stats-row"><div><strong>'+esc(x.event.actor)+'</strong><p>'+esc(x.event.message)+'</p></div><button class="link-btn" data-nav-task="'+x.task.id+'">Open</button></div>'}).join(''):'<div class="empty">No AI-to-AI exchanges recorded.</div>';
    var completion=blocks.map(function(x){return'<div class="stats-row"><div><strong>BLOCKER · '+esc(x.task.title)+'</strong><p>'+esc(x.event.message)+'</p></div><button class="link-btn" data-nav-task="'+x.task.id+'">Open</button></div>'}).join('')+tasks.filter(function(t){return t.state==='done'}).map(function(t){return'<div class="stats-row"><div><strong>DONE · '+esc(t.title)+'</strong><p>Completion is backed by '+t.events.filter(function(e){return e.type==='complete'||e.type==='approval'}).length+' completion/approval event.</p></div><button class="link-btn" data-nav-task="'+t.id+'">Open</button></div>'}).join('');
    document.getElementById('completionStats').innerHTML=completion||'<div class="empty">No blockers or completed work.</div>'
  }
  function taskDrawer(t){selectedTask=t.id;document.getElementById('drawerTitle').textContent=t.title;var st=document.getElementById('drawerState');st.textContent=t.state;st.className='state '+stateClass(t.state);
    var canEdit=t.owner==='king', actions='';
    if(t.owner!=='king'&&t.state!=='done')actions+='<button class="btn primary" data-action="takeover">Take over as The King</button>';
    if(canEdit)actions+='<button class="btn primary" data-action="save">Save human edit</button>';
    if(canEdit&&t.previousOwner)actions+='<button class="btn" data-action="return">Return to '+esc(ownerName(t.previousOwner))+'</button>';
    if(t.state==='review')actions+='<button class="btn gold" data-action="approve">Approve result</button><button class="btn danger" data-action="changes">Request changes</button>';
    if(t.id==='t5'&&t.state!=='done')actions+='<button class="btn gold" data-action="publish">Approve planned board</button>';
    var hist=t.events.slice().reverse().map(function(e){return'<div class="history-item"><p><strong>'+esc(e.actor)+'</strong> · '+esc(e.message)+'</p><div class="history-meta">'+e.time+' · '+e.type.toUpperCase()+(e.source?' · SOURCE: '+esc(e.source):'')+'</div></div>'}).join('');
    document.getElementById('drawerBody').innerHTML='<p class="muted">'+esc(t.description)+'</p><div class="task-facts"><div class="fact"><label>OWNER</label><strong>'+esc(ownerName(t.owner))+'</strong></div><div class="fact"><label>STATE</label><strong>'+esc(t.state)+'</strong></div><div class="fact"><label>WORK VERSION</label><strong>'+t.events.filter(function(e){return e.type==='edit'}).length+' human edits</strong></div><div class="fact"><label>EVENTS</label><strong>'+t.events.length+' recorded</strong></div></div><label class="mono small">ACTUAL WORK</label><textarea id="workEditor" class="work-data" '+(canEdit?'':'readonly')+'>'+esc(t.work)+'</textarea><div class="drawer-actions">'+actions+'</div><div class="info-form"><input id="infoNeed" placeholder="Information needed" aria-label="Information needed"><input id="infoSource" placeholder="Named source"