/* SZL Living Anatomy — Evidence Bay. * Clean-room, SZL-native industrial evidence surface. Zero CDN and read-only. * Transport, evidence, verification, and authority remain separate dimensions. */ (function (root) { 'use strict'; var API = '/api/anatomy/v1'; var state = { manifest:null, capabilities:null, evidence:null, tab:'overview', busy:false }; var previousFocus = null; function esc(value) { return String(value == null ? '' : value).replace(/[&<>"']/g, function (c) { return {'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]; }); } function fetchJSON(url, opts, timeout) { var ctl = typeof AbortController !== 'undefined' ? new AbortController() : null; var timer = ctl ? setTimeout(function(){ ctl.abort(); }, timeout || 10000) : null; opts = opts || {}; opts.cache = 'no-store'; if (ctl) opts.signal = ctl.signal; return fetch(url, opts).then(function (r) { if (timer) clearTimeout(timer); return r.json().then(function (data) { return {ok:r.ok,status:r.status,data:data}; }); }).catch(function (error) { if (timer) clearTimeout(timer); return {ok:false,status:0,data:null,error:String(error && error.message || error)}; }); } var css = [ '#fa-launch{position:fixed;z-index:197;right:18px;top:50%;transform:translateY(-50%);width:132px;text-align:left;background:rgba(7,11,16,.94);color:#dce8ea;border:1px solid rgba(101,169,174,.38);border-right:2px solid #63d4cf;box-shadow:0 18px 50px rgba(0,0,0,.42);padding:10px 12px;cursor:pointer;font-family:var(--font-m,monospace);text-transform:uppercase;letter-spacing:.10em;backdrop-filter:blur(14px)}', '#fa-launch:hover,#fa-launch:focus-visible{border-color:#63d4cf;color:#fff;outline:none;box-shadow:0 0 0 2px rgba(99,212,207,.18),0 18px 50px rgba(0,0,0,.55)}', '#fa-launch .fa-l1{display:flex;align-items:center;gap:8px;font-size:9px;font-weight:800}#fa-launch .fa-l2{display:block;margin-top:5px;color:#829195;font-size:8px;letter-spacing:.06em;text-transform:none}', '.fa-signal{width:7px;height:7px;border-radius:1px;background:#63d4cf;box-shadow:0 0 12px rgba(99,212,207,.7)}', '#fa-scrim{position:fixed;z-index:198;inset:0;background:rgba(0,0,0,.52);opacity:0;pointer-events:none;transition:opacity .2s ease}#fa-scrim.open{opacity:1;pointer-events:auto}', '#fa-panel{position:fixed;z-index:199;right:0;top:0;height:100%;width:min(570px,100vw);display:flex;flex-direction:column;background:linear-gradient(180deg,#0b1015 0%,#070b0f 100%);color:#dce5e6;border-left:1px solid #273237;box-shadow:-30px 0 90px rgba(0,0,0,.62);transform:translateX(102%);transition:transform .24s cubic-bezier(.2,.8,.2,1);font-family:var(--font-d,system-ui);pointer-events:auto}#fa-panel.open{transform:translateX(0)}', 'body.fa-open #ux-tabbar,body.fa-open #ux-more-menu,body.fa-open #dissect-fab{opacity:0!important;pointer-events:none!important}', '.fa-top{padding:18px 20px 14px;border-bottom:1px solid #273237;background:#0d1318}.fa-kicker{display:flex;align-items:center;gap:8px;color:#78d9d4;font:800 9px/1 var(--font-m,monospace);letter-spacing:.20em;text-transform:uppercase}.fa-kicker:before{content:"";width:18px;height:1px;background:#78d9d4}', '.fa-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-top:10px}.fa-title{margin:0;font-size:25px;line-height:1.05;font-weight:620;letter-spacing:-.025em;color:#f2f7f7}.fa-subtitle{margin:7px 0 0;color:#8e9da0;font:11px/1.5 var(--font-m,monospace);max-width:46ch}', '.fa-close{flex:0 0 auto;width:34px;height:34px;color:#aebbbd;background:#11191e;border:1px solid #334047;cursor:pointer;font-size:18px}.fa-close:hover,.fa-close:focus-visible{color:#fff;border-color:#78d9d4;outline:none}', '.fa-rail{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid #273237;background:#080d11}.fa-dim{padding:10px 11px;border-right:1px solid #20292e;min-width:0}.fa-dim:last-child{border-right:0}.fa-dim-label{display:block;color:#647277;font:8px/1.2 var(--font-m,monospace);letter-spacing:.12em;text-transform:uppercase}.fa-dim-value{display:block;margin-top:5px;color:#c7d2d4;font:800 9px/1.2 var(--font-m,monospace);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}', '.fa-dim-value.live,.fa-dim-value.computed,.fa-dim-value.reachable,.fa-dim-value.available{color:#78d9d4}.fa-dim-value.mixed,.fa-dim-value.structural_only,.fa-dim-value.snapshot,.fa-dim-value.modeled{color:#e1bd71}.fa-dim-value.unavailable,.fa-dim-value.failed,.fa-dim-value.unreachable,.fa-dim-value.missing{color:#e37d8f}', '.fa-tabs{display:flex;padding:0 20px;border-bottom:1px solid #273237;background:#0b1015;overflow:auto}.fa-tab{appearance:none;border:0;border-bottom:2px solid transparent;background:transparent;color:#718086;padding:12px 11px 10px;font:800 9px/1 var(--font-m,monospace);letter-spacing:.12em;text-transform:uppercase;cursor:pointer;white-space:nowrap}.fa-tab:hover{color:#cad5d7}.fa-tab.active{color:#78d9d4;border-bottom-color:#78d9d4}.fa-tab:focus-visible{outline:1px solid #78d9d4;outline-offset:-3px}', '.fa-body{flex:1;overflow:auto;padding:20px 20px 90px;scrollbar-color:#334047 #0b1015}.fa-section{margin:0 0 24px}.fa-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 11px}.fa-section h3{margin:0;color:#aebbbd;font:800 9px/1.2 var(--font-m,monospace);letter-spacing:.15em;text-transform:uppercase}.fa-rule{height:1px;flex:1;background:#273237}', '.fa-lede{margin:0;color:#d6dfe0;font-size:15px;line-height:1.55;letter-spacing:-.005em}.fa-callout{border-left:2px solid #78d9d4;background:#0d1519;padding:12px 13px;margin-top:14px;color:#9daaad;font:11px/1.55 var(--font-m,monospace)}', '.fa-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.fa-stat{background:#0d1318;border:1px solid #273237;padding:12px;min-height:88px}.fa-stat .k{color:#6f7e82;font:8px/1.2 var(--font-m,monospace);letter-spacing:.12em;text-transform:uppercase}.fa-stat .v{margin-top:9px;color:#edf3f3;font:800 12px/1.2 var(--font-m,monospace)}.fa-stat p{margin:8px 0 0;color:#79888c;font-size:10px;line-height:1.4}', '.fa-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.fa-btn,.fa-link{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 11px;border:1px solid #35444a;background:#10181d;color:#bdc9cb;text-decoration:none;cursor:pointer;font:800 9px/1 var(--font-m,monospace);letter-spacing:.08em;text-transform:uppercase}.fa-btn.primary{border-color:#2b8c8a;background:#12302f;color:#9ff1ec}.fa-btn:hover,.fa-link:hover,.fa-btn:focus-visible,.fa-link:focus-visible{border-color:#78d9d4;color:#fff;outline:none}.fa-btn:disabled{opacity:.45;cursor:wait}', '.fa-cap{border:1px solid #273237;background:#0b1115;margin:0 0 9px}.fa-cap summary{list-style:none;display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:10px;padding:12px 13px;cursor:pointer}.fa-cap summary::-webkit-details-marker{display:none}.fa-cap summary:hover{background:#0f171c}.fa-num{color:#536267;font:800 9px/1 var(--font-m,monospace)}.fa-cap-name{color:#e4ebec;font-size:13px;font-weight:650}.fa-cap-id{display:block;margin-top:3px;color:#617075;font:8px/1.2 var(--font-m,monospace)}', '.fa-badge{display:inline-block;border:1px solid #3c4a4f;color:#8e9c9f;padding:3px 6px;font:800 8px/1 var(--font-m,monospace);letter-spacing:.06em;text-transform:uppercase}.fa-badge.live,.fa-badge.computed,.fa-badge.available,.fa-badge.pass{border-color:#286d6b;color:#78d9d4;background:rgba(40,109,107,.13)}.fa-badge.snapshot,.fa-badge.mixed,.fa-badge.modeled,.fa-badge.structural-only,.fa-badge.structural_only,.fa-badge.unavailable,.fa-badge.read_only{border-color:#685937;color:#e1bd71;background:rgba(104,89,55,.12)}.fa-badge.fail,.fa-badge.failed,.fa-badge.missing,.fa-badge.unreachable{border-color:#663640;color:#e37d8f;background:rgba(102,54,64,.12)}', '.fa-cap-body{border-top:1px solid #273237;padding:13px}.fa-field{display:grid;grid-template-columns:86px 1fr;gap:12px;padding:8px 0;border-bottom:1px solid #1e272b}.fa-field:last-child{border-bottom:0}.fa-field dt{color:#657378;font:800 8px/1.4 var(--font-m,monospace);letter-spacing:.12em;text-transform:uppercase}.fa-field dd{margin:0;color:#aebabc;font-size:11px;line-height:1.52;min-width:0}.fa-field ul,.fa-field ol{margin:0;padding-left:17px}.fa-field li+li{margin-top:5px}', '.fa-code{display:block;margin-top:5px;padding:8px;background:#070b0e;border:1px solid #202b30;color:#8ed6d2;font:9px/1.5 var(--font-m,monospace);word-break:break-all}.fa-refs{display:flex;flex-wrap:wrap;gap:5px;margin-top:7px}.fa-ref{color:#8ec6c4;text-decoration:none;border-bottom:1px solid #31504f;font:9px/1.4 var(--font-m,monospace)}.fa-ref:hover{color:#fff;border-color:#78d9d4}', '.fa-dep{display:grid;grid-template-columns:1fr auto;gap:10px;padding:12px 0;border-bottom:1px solid #20292e}.fa-dep:last-child{border-bottom:0}.fa-dep-name{color:#d8e1e2;font-size:12px;font-weight:650}.fa-dep-purpose{display:block;margin-top:4px;color:#718084;font-size:10px;line-height:1.4}.fa-dep-meta{display:block;margin-top:5px;color:#4f6065;font:8px/1.3 var(--font-m,monospace);word-break:break-all}.fa-dep-state{text-align:right;min-width:88px}.fa-http{display:block;margin-top:5px;color:#66757a;font:8px/1 var(--font-m,monospace)}', '.fa-output{margin-top:12px;background:#070b0e;border:1px solid #273237;padding:11px;color:#9caaad;font:10px/1.55 var(--font-m,monospace);word-break:break-word}.fa-output.good{border-color:#286d6b;color:#9be2de}.fa-output.bad{border-color:#663640;color:#e3a0ab}', '.fa-endpoint{padding:12px 0;border-bottom:1px solid #20292e}.fa-endpoint:last-child{border-bottom:0}.fa-endpoint a{color:#c8d5d6;text-decoration:none;font:700 10px/1.4 var(--font-m,monospace)}.fa-endpoint a:hover{color:#78d9d4}.fa-endpoint p{margin:5px 0 0;color:#6f7d81;font-size:10px;line-height:1.45}', '.fa-loading{padding:28px 0;color:#6e7b7f;font:10px/1.5 var(--font-m,monospace);text-transform:uppercase;letter-spacing:.12em}.fa-loading:before{content:"";display:inline-block;width:7px;height:7px;margin-right:9px;background:#e1bd71;animation:fa-pulse .9s ease-in-out infinite}@keyframes fa-pulse{50%{opacity:.25}}', '@media(max-width:760px){#fa-launch{right:8px;top:auto;bottom:76px;transform:none;width:auto;padding:9px 11px}#fa-launch .fa-l2{display:none}#fa-panel{width:100vw}.fa-grid{grid-template-columns:1fr}.fa-body{padding:16px 15px 100px}.fa-top{padding:16px 15px 13px}.fa-tabs{padding:0 10px}.fa-rail{grid-template-columns:repeat(2,1fr)}.fa-dim:nth-child(2){border-right:0}.fa-dim:nth-child(-n+2){border-bottom:1px solid #20292e}.fa-field{grid-template-columns:72px 1fr}}', '@media(prefers-reduced-motion:reduce){#fa-panel,#fa-scrim{transition:none}.fa-loading:before{animation:none}}' ].join(''); function injectStyle(){ if(document.getElementById('fa-style'))return; var s=document.createElement('style');s.id='fa-style';s.textContent=css;document.head.appendChild(s); } function badge(value){var label=String(value||'UNKNOWN');return ''+esc(label.replace(/_/g,'-'))+'';} function dim(label,value){var v=String(value||'UNKNOWN');return '
'+esc(label)+''+esc(v.replace(/_/g,'-'))+'
';} function list(values,ordered){if(!Array.isArray(values)||!values.length)return 'None declared.';var tag=ordered?'ol':'ul';return '<'+tag+'>'+values.map(function(v){return '
  • '+esc(v)+'
  • ';}).join('')+'';} function links(values){if(!Array.isArray(values)||!values.length)return '';return '
    '+values.map(function(url,i){return 'source '+(i+1)+' ↗';}).join('')+'
    ';} function sectionHead(title){return '

    '+esc(title)+'

    ';} function updateRail(){ var d=state.manifest&&state.manifest.state_dimensions||{}; if(state.evidence)d=Object.assign({},d,{evidence_state:state.evidence.evidence_state,verification_state:state.evidence.verification_state==='AVAILABLE'?'AVAILABLE':d.verification_state}); var rail=document.getElementById('fa-rail');if(rail)rail.innerHTML=dim('transport',d.transport_state)+dim('evidence',d.evidence_state)+dim('verification',d.verification_state)+dim('authority',d.authority_state); var sub=document.querySelector('#fa-launch .fa-l2');if(sub)sub.textContent=(d.evidence_state||'loading')+' evidence · read-only'; } function overviewHTML(){ var m=state.manifest||{},d=m.state_dimensions||{}; return '
    '+sectionHead('Mission contract')+'

    '+esc(m.purpose||'Read-only spatial evidence map of the governed-agent substrate.')+'

    One green light is not enough. Transport, evidence, verification, and authority are independent dimensions; this console refuses to collapse them into a single “healthy” claim.
    '+ '
    '+sectionHead('Current posture')+'
    Transport
    '+esc(d.transport_state||'—')+'

    Can this Space answer a request?

    Evidence
    '+esc(state.evidence&&state.evidence.evidence_state||d.evidence_state||'—')+'

    Live, computed, snapshot, modeled, or unavailable?

    Verification
    '+esc(d.verification_state||'—')+'

    The local receipt is unsigned and structural-only.

    Authority
    '+esc(d.authority_state||'—')+'

    Anatomy reads and explains; it cannot actuate.

    Source attestation ↗
    '+ '
    '+sectionHead('Honest boundary')+list(m.limits||[],false)+'
    '; } function capabilitiesHTML(){ var rows=state.capabilities&&state.capabilities.capabilities||[];if(!rows.length)return '
    Capability contract unavailable
    '; return '
    '+sectionHead('Five-part capability shell')+'

    Every surface declares Purpose, Try, Evidence, Limits, and Reproduce before it earns a place in the body.

    '+rows.map(function(cap,i){ var ev=cap.evidence||{},t=cap.try||{},r=cap.reproduce||{}; return '
    '+String(i+1).padStart(2,'0')+''+esc(cap.name)+''+esc(cap.id)+''+badge(ev.state)+'
    Purpose
    '+esc(cap.purpose)+'
    Try
    '+esc(t.action||'')+''+esc((t.method||'')+' '+(t.path||''))+'
    Evidence
    '+badge(ev.state)+' '+esc(ev.basis||'')+'
    Limits
    '+list(cap.limits,false)+'
    Reproduce
    '+list(r.steps,true)+'
    Authority
    '+badge(cap.authority_state)+'
    Formula refs
    '+(cap.formula_refs&&cap.formula_refs.length?esc(cap.formula_refs.join(' · ')):'None — visual capability only.')+links(cap.provenance)+'
    '; }).join(''); } function evidenceHTML(){ if(!state.evidence)return '
    Measuring declared dependencies
    ';var e=state.evidence; return '
    '+sectionHead('Measured dependency plane')+'

    '+esc(e.scope)+'

    Observed '+esc(e.observed_at)+' · '+esc(e.summary&&e.summary.live)+'/'+esc(e.summary&&e.summary.total)+' declared contracts available.
    '+(e.dependencies||[]).map(function(dep){return '
    '+esc(dep.id)+''+esc(dep.purpose)+''+esc(dep.method+' '+dep.url)+'
    '+badge(dep.contract_state)+'HTTP '+esc(dep.http_status==null?'—':dep.http_status)+'
    ';}).join('')+'
    Independent verifier ↗
    '+sectionHead('Interpretation limits')+list(e.limits,false)+'
    '; } function reproduceHTML(){ var ep=state.manifest&&state.manifest.endpoints||{},desc={version:'Exact GitHub source and deployed Space revision.',evidence_index:'Release identity, structural bundle receipt, and dependency evidence index.',manifest:'Contract, vocabulary, doctrine boundary, and limits.',capabilities:'Purpose / Try / Evidence / Limits / Reproduce for each capability.',evidence:'Fresh server-side probes of declared upstream contracts.',receipt:'Deterministic SHA-256 receipt over the deployed artifact set.',verify_receipt:'POST a local anatomy receipt; structural integrity only.',source:'GitHub base, measured HF revision, artifact digest, and alignment state.'}; return '
    '+sectionHead('Machine-readable contract')+Object.keys(ep).map(function(k){var p=ep[k];return '
    '+esc(p)+' ↗

    '+esc(desc[k]||'')+'

    ';}).join('')+'
    '+sectionHead('Receipt replay')+'

    Generate the receipt, then submit the unchanged object to the local verifier. A byte or digest mutation must produce FAIL.

    GET /api/anatomy/v1/receipt
    POST /api/anatomy/v1/verify/receipt
    GitHub source ↗
    '; } function bodyHTML(){if(!state.manifest||!state.capabilities)return '
    Loading anatomy contract
    ';if(state.tab==='capabilities')return capabilitiesHTML();if(state.tab==='evidence')return evidenceHTML();if(state.tab==='reproduce')return reproduceHTML();return overviewHTML();} function render(){updateRail();var body=document.getElementById('fa-body');if(body)body.innerHTML=bodyHTML();document.querySelectorAll('.fa-tab').forEach(function(b){b.classList.toggle('active',b.getAttribute('data-tab')===state.tab);b.setAttribute('aria-selected',b.classList.contains('active')?'true':'false');});wireBodyActions();} function setOutput(html,kind){var out=document.getElementById('fa-overview-output');if(out)out.innerHTML='
    '+html+'
    ';} function verifyBundle(){ if(state.busy)return;state.busy=true;setOutput('Hashing the deployed artifact set and replaying the receipt…',''); fetchJSON(API+'/receipt').then(function(res){if(!res.ok)return res;return fetchJSON(API+'/verify/receipt',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(res.data)});}).then(function(res){state.busy=false;if(!res||!res.ok||!res.data){setOutput('Verifier unavailable. No verdict was inferred.','bad');return;}var checks=(res.data.checks||[]).map(function(c){return esc(c.name)+'='+esc(c.status);}).join(' · ');setOutput(''+esc(res.data.verdict)+'
    '+checks+'
    '+esc(res.data.limits)+'',res.data.verdict==='FAIL'?'bad':'good');}); } function loadEvidence(force){fetchJSON(API+'/evidence'+(force?'?refresh=1':''),{},16000).then(function(res){state.evidence=res.ok?res.data:{evidence_state:'UNAVAILABLE',verification_state:'UNAVAILABLE',scope:'Evidence endpoint unavailable.',summary:{live:0,total:0},dependencies:[],limits:['No dependency state was inferred.']};render();});} function wireBodyActions(){document.querySelectorAll('#fa-refresh').forEach(function(b){b.addEventListener('click',function(){b.disabled=true;if(state.tab==='evidence'){state.evidence=null;render();}loadEvidence(true);});});document.querySelectorAll('#fa-verify-bundle').forEach(function(b){b.addEventListener('click',verifyBundle);});} function open(){previousFocus=document.activeElement;document.body.classList.add('fa-open');document.getElementById('fa-panel').classList.add('open');document.getElementById('fa-panel').setAttribute('aria-hidden','false');document.getElementById('fa-scrim').classList.add('open');document.getElementById('fa-launch').setAttribute('aria-expanded','true');document.getElementById('fa-close').focus();} function close(){document.body.classList.remove('fa-open');document.getElementById('fa-panel').classList.remove('open');document.getElementById('fa-panel').setAttribute('aria-hidden','true');document.getElementById('fa-scrim').classList.remove('open');document.getElementById('fa-launch').setAttribute('aria-expanded','false');if(previousFocus&&previousFocus.focus)previousFocus.focus();} function mount(){ if(document.getElementById('fa-panel'))return;injectStyle(); var launch=document.createElement('button');launch.id='fa-launch';launch.type='button';launch.setAttribute('aria-controls','fa-panel');launch.setAttribute('aria-expanded','false');launch.innerHTML='Evidence bayloading contract · read-only'; var scrim=document.createElement('div');scrim.id='fa-scrim';var panel=document.createElement('aside');panel.id='fa-panel';panel.setAttribute('role','dialog');panel.setAttribute('aria-modal','false');panel.setAttribute('aria-hidden','true');panel.setAttribute('aria-label','Anatomy evidence bay');panel.innerHTML='
    Anatomy contract 1.0

    Evidence Bay

    Purpose · Try · Evidence · Limits · Reproduce

    '+dim('transport','LOADING')+dim('evidence','LOADING')+dim('verification','LOADING')+dim('authority','READ_ONLY')+'
    Loading anatomy contract
    '; document.body.appendChild(launch);document.body.appendChild(scrim);document.body.appendChild(panel);launch.addEventListener('click',open);scrim.addEventListener('click',close);document.getElementById('fa-close').addEventListener('click',close);document.querySelectorAll('.fa-tab').forEach(function(b){b.addEventListener('click',function(){state.tab=b.getAttribute('data-tab');render();document.getElementById('fa-body').scrollTop=0;});});document.addEventListener('keydown',function(e){if(e.key==='Escape'&&panel.classList.contains('open'))close();}); Promise.all([fetchJSON(API+'/manifest'),fetchJSON(API+'/capabilities')]).then(function(results){if(results[0].ok)state.manifest=results[0].data;if(results[1].ok)state.capabilities=results[1].data;render();loadEvidence(false);}); } root.SZL_ANATOMY_EVIDENCE_BAY={mount:mount,open:open,close:close,refresh:function(){loadEvidence(true);},verifyBundle:verifyBundle}; if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',mount);else mount(); })(typeof window!=='undefined'?window:this);