From 62984b74e6a0bbe22413b08cef8689865d38be16 Mon Sep 17 00:00:00 2001 From: Sam Valladares Date: Sun, 12 Jul 2026 07:12:45 +0700 Subject: [PATCH] fix(dashboard): reasoning stays honest-empty; update stale zero-DOM specs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reasoning: replace the mount-time auto-run of a deep_reference (which violated the honest-empty "ask a question to trace" contract) with a passive real memory-pool substrate. The stage is alive at rest (55% fill) without claiming a trace; a real query swaps the pool for the actual evidence galaxy. Align the ask placeholder with the specs. Specs: the Reasoning Theater is zero-DOM (sr-only input, everything in-canvas) as of the living-field conversion, but organ-reasoning + reasoning-flow still drove a visible input and asserted DOM response panels (Primary Source / Cognitive Pipeline / EvidenceCards) that no longer exist. Rewrite them to fill the sr-only input by id, wait on the real /api/deep_reference 200, and assert the canvas re-lights (fill + non-black + animates) — proving the flow on pixels + the API round-trip. organ-explore asserted a dead /memories/{id} navigation; the row click is an in-place semantic walk (?q= re-centers), so assert that instead. All three reasoning specs + explore now pass against the real brain. Co-Authored-By: Claude Opus 4.8 --- .../{app.Bj0mlYI5.js => app.BYOyN8KT.js} | 4 +- .../_app/immutable/entry/app.BYOyN8KT.js.br | Bin 0 -> 3273 bytes .../_app/immutable/entry/app.BYOyN8KT.js.gz | Bin 0 -> 3718 bytes .../_app/immutable/entry/app.Bj0mlYI5.js.br | Bin 3277 -> 0 bytes .../_app/immutable/entry/app.Bj0mlYI5.js.gz | Bin 3719 -> 0 bytes .../build/_app/immutable/nodes/20.Cj35A6gq.js | 198 ------------------ .../_app/immutable/nodes/20.Cj35A6gq.js.br | Bin 9864 -> 0 bytes .../_app/immutable/nodes/20.Cj35A6gq.js.gz | Bin 11132 -> 0 bytes .../build/_app/immutable/nodes/20.DD0_N4PP.js | 198 ++++++++++++++++++ .../_app/immutable/nodes/20.DD0_N4PP.js.br | Bin 0 -> 9985 bytes .../_app/immutable/nodes/20.DD0_N4PP.js.gz | Bin 0 -> 11283 bytes apps/dashboard/build/index.html | 4 +- apps/dashboard/build/index.html.br | Bin 571 -> 572 bytes apps/dashboard/build/index.html.gz | Bin 764 -> 765 bytes apps/dashboard/e2e/organ-explore.spec.ts | 28 +-- apps/dashboard/e2e/organ-reasoning.spec.ts | 170 +++++---------- apps/dashboard/e2e/reasoning-flow.spec.ts | 189 +++++++---------- .../src/routes/(app)/reasoning/+page.svelte | 47 ++++- 18 files changed, 383 insertions(+), 455 deletions(-) rename apps/dashboard/build/_app/immutable/entry/{app.Bj0mlYI5.js => app.BYOyN8KT.js} (98%) create mode 100644 apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js.br create mode 100644 apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js.gz delete mode 100644 apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js.br delete mode 100644 apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js.gz delete mode 100644 apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js delete mode 100644 apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js.br delete mode 100644 apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js.gz create mode 100644 apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js create mode 100644 apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js.br create mode 100644 apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js.gz diff --git a/apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js b/apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js similarity index 98% rename from apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js rename to apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js index febd5f1..bed8d23 100644 --- a/apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js +++ b/apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js @@ -1,2 +1,2 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CcZXq7cA.js","../chunks/Bzak7iHL.js","../chunks/DAau0uzT.js","../chunks/CGq8RnJq.js","../chunks/Ccqjq5DS.js","../chunks/W8qDZJD6.js","../chunks/DqfV0sZu.js","../chunks/BbCqB9Us.js","../chunks/uCQU803Y.js","../chunks/DGM4cicq.js","../chunks/DV6OI5iy.js","../chunks/CbBCXwzm.js","../chunks/DJDK-KWF.js","../chunks/DY7cP31Q.js","../chunks/Ch9vNiEl.js","../chunks/BfiOPhbz.js","../chunks/HFGAk8XQ.js","../chunks/CcUbQ_Wl.js","../chunks/D35IQVqe.js","../chunks/CKbQrCJw.js","../assets/Icon.tTjeJXhC.css","../assets/0.CLR80qKm.css","../nodes/1.8UKMSR8s.js","../nodes/2.zvt29sR6.js","../nodes/3.C6cru0cW.js","../nodes/4.CIxbWFkr.js","../chunks/BMB5u1EX.js","../assets/cognitive-palette.BALpZUFZ.css","../chunks/D7ozXiSB.js","../nodes/5.XKzsmb3Z.js","../chunks/De_e6MzK.js","../chunks/BpEKQwpr.js","../chunks/DETSv_kY.js","../nodes/6.CNes4HHG.js","../chunks/B9l3DI-J.js","../assets/reveal.Dmxpik8H.css","../assets/6.ksI6gQcB.css","../nodes/7.Cs_QL9bJ.js","../chunks/DnDQzBs4.js","../assets/Dropdown.C2Z-7Phd.css","../assets/7.DQ_AfUnN.css","../nodes/8.DYPUVn-a.js","../nodes/9.Bc6B0Hcn.js","../nodes/10.CMLfe2no.js","../nodes/11.BcR5gOV6.js","../nodes/12.CRVOD7oJ.js","../chunks/Bo4EDkTQ.js","../chunks/BKh9s_e0.js","../assets/ObservatoryStage.CKoSQgn0.css","../chunks/BzfFPM53.js","../chunks/Dp1pzeXC.js","../assets/12.BxoW8Jf1.css","../nodes/13.UdclNjnS.js","../nodes/14.CuNExVd0.js","../nodes/15.D2EVaO6c.js","../nodes/16.BHQZgsg5.js","../nodes/17.DpD2KkS8.js","../nodes/18.DdPknQfI.js","../nodes/19.CLd0kemn.js","../nodes/20.Cj35A6gq.js","../assets/20.Duj1vJUf.css","../nodes/21.yCKOHF-q.js","../nodes/22.kK1AQf2j.js","../nodes/23.B0dVDPB6.js","../nodes/24.taYcndi3.js","../nodes/25.CpxKI_0Q.js","../assets/25.DKhUrxcR.css"])))=>i.map(i=>d[i]); -var z=e=>{throw TypeError(e)};var J=(e,t,r)=>t.has(e)||z("Cannot "+r);var n=(e,t,r)=>(J(e,t,"read from private field"),r?r.call(e):t.get(e)),N=(e,t,r)=>t.has(e)?z("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Y=(e,t,r,_)=>(J(e,t,"write to private field"),_?_.call(e,r):t.set(e,r),r);import{_ as a}from"../chunks/Dp1pzeXC.js";import{w as K,ai as nt,i as mt,E as ut,aj as ct,al as dt,G as lt,F as Q,aG as pt,I as ft,s as S,ae as vt,g as f,aR as Et,a0 as ht,_ as gt,p as Pt,R as Rt,j as Ot,x as Tt,aH as R,X as At,a as v,b as yt,d as B,aS as y,c as It,r as Dt,f as U,u as L,aT as Lt,Y as Vt}from"../chunks/CGq8RnJq.js";import{h as bt,m as xt,u as wt,o as jt,s as kt}from"../chunks/DAau0uzT.js";import"../chunks/Bzak7iHL.js";import{i as j,b as V}from"../chunks/Ccqjq5DS.js";import{B as St}from"../chunks/W8qDZJD6.js";import{p as k}from"../chunks/DV6OI5iy.js";function b(e,t,r){var _;K&&(_=ft,nt());var i=new St(e);mt(()=>{var m=t()??null;if(K){var o=ct(_),s=o===pt,d=m!==null;if(s!==d){var x=dt();lt(x),i.anchor=x,Q(!1),i.ensure(m,m&&(O=>r(O,m))),Q(!0);return}}i.ensure(m,m&&(O=>r(O,m)))},ut)}function Ct(e){return class extends Ft{constructor(t){super({component:e,...t})}}}var E,c;class Ft{constructor(t){N(this,E);N(this,c);var m;var r=new Map,_=(o,s)=>{var d=gt(s,!1,!1);return r.set(o,d),d};const i=new Proxy({...t.props||{},$$events:{}},{get(o,s){return f(r.get(s)??_(s,Reflect.get(o,s)))},has(o,s){return s===vt?!0:(f(r.get(s)??_(s,Reflect.get(o,s))),Reflect.has(o,s))},set(o,s,d){return S(r.get(s)??_(s,d),d),Reflect.set(o,s,d)}});Y(this,c,(t.hydrate?bt:xt)(t.component,{target:t.target,anchor:t.anchor,props:i,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((m=t==null?void 0:t.props)!=null&&m.$$host)||t.sync===!1)&&Et(),Y(this,E,i.$$events);for(const o of Object.keys(n(this,c)))o==="$set"||o==="$destroy"||o==="$on"||ht(this,o,{get(){return n(this,c)[o]},set(s){n(this,c)[o]=s},enumerable:!0});n(this,c).$set=o=>{Object.assign(i,o)},n(this,c).$destroy=()=>{wt(n(this,c))}}$set(t){n(this,c).$set(t)}$on(t,r){n(this,E)[t]=n(this,E)[t]||[];const _=(...i)=>r.call(this,...i);return n(this,E)[t].push(_),()=>{n(this,E)[t]=n(this,E)[t].filter(i=>i!==_)}}$destroy(){n(this,c).$destroy()}}E=new WeakMap,c=new WeakMap;const Zt={};var Gt=U('
'),Mt=U(" ",1);function Nt(e,t){Pt(t,!0);let r=k(t,"components",23,()=>[]),_=k(t,"data_0",3,null),i=k(t,"data_1",3,null),m=k(t,"data_2",3,null);Rt(()=>t.stores.page.set(t.page)),Ot(()=>{t.stores,t.page,t.constructors,r(),t.form,_(),i(),m(),t.stores.page.notify()});let o=B(!1),s=B(!1),d=B(null);jt(()=>{const u=t.stores.page.subscribe(()=>{f(o)&&(S(s,!0),Tt().then(()=>{S(d,document.title||"untitled page",!0)}))});return S(o,!0),u});const x=L(()=>t.constructors[2]);var O=Mt(),H=R(O);{var Z=u=>{const h=L(()=>t.constructors[0]);var g=y(),I=R(g);b(I,()=>f(h),(P,T)=>{V(T(P,{get data(){return _()},get form(){return t.form},get params(){return t.page.params},children:(l,Bt)=>{var X=y(),et=R(X);{var at=A=>{const C=L(()=>t.constructors[1]);var D=y(),F=R(D);b(F,()=>f(C),(G,M)=>{V(M(G,{get data(){return i()},get form(){return t.form},get params(){return t.page.params},children:(p,Ht)=>{var q=y(),st=R(q);b(st,()=>f(x),(_t,it)=>{V(it(_t,{get data(){return m()},get form(){return t.form},get params(){return t.page.params}}),w=>r()[2]=w,()=>{var w;return(w=r())==null?void 0:w[2]})}),v(p,q)},$$slots:{default:!0}}),p=>r()[1]=p,()=>{var p;return(p=r())==null?void 0:p[1]})}),v(A,D)},ot=A=>{const C=L(()=>t.constructors[1]);var D=y(),F=R(D);b(F,()=>f(C),(G,M)=>{V(M(G,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),p=>r()[1]=p,()=>{var p;return(p=r())==null?void 0:p[1]})}),v(A,D)};j(et,A=>{t.constructors[2]?A(at):A(ot,!1)})}v(l,X)},$$slots:{default:!0}}),l=>r()[0]=l,()=>{var l;return(l=r())==null?void 0:l[0]})}),v(u,g)},$=u=>{const h=L(()=>t.constructors[0]);var g=y(),I=R(g);b(I,()=>f(h),(P,T)=>{V(T(P,{get data(){return _()},get form(){return t.form},get params(){return t.page.params}}),l=>r()[0]=l,()=>{var l;return(l=r())==null?void 0:l[0]})}),v(u,g)};j(H,u=>{t.constructors[1]?u(Z):u($,!1)})}var tt=At(H,2);{var rt=u=>{var h=Gt(),g=It(h);{var I=P=>{var T=Lt();Vt(()=>kt(T,f(d))),v(P,T)};j(g,P=>{f(s)&&P(I)})}Dt(h),v(u,h)};j(tt,u=>{f(o)&&u(rt)})}v(e,O),yt()}const $t=Ct(Nt),tr=[()=>a(()=>import("../nodes/0.CcZXq7cA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url),()=>a(()=>import("../nodes/1.8UKMSR8s.js"),__vite__mapDeps([22,1,15,3,2,13,12]),import.meta.url),()=>a(()=>import("../nodes/2.zvt29sR6.js"),__vite__mapDeps([23,1,3,7,5]),import.meta.url),()=>a(()=>import("../nodes/3.C6cru0cW.js"),__vite__mapDeps([24,1,15,3,2,12,13]),import.meta.url),()=>a(()=>import("../nodes/4.CIxbWFkr.js"),__vite__mapDeps([25,1,2,3,4,5,26,10,27,28,13]),import.meta.url),()=>a(()=>import("../nodes/5.XKzsmb3Z.js"),__vite__mapDeps([29,1,2,3,30,11,12,13,18,31,8,4,5,10,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/6.CNes4HHG.js"),__vite__mapDeps([33,1,2,3,4,5,6,34,7,8,10,19,20,35,16,9,12,13,18,14,31,11,26,27,28,32,36]),import.meta.url),()=>a(()=>import("../nodes/7.Cs_QL9bJ.js"),__vite__mapDeps([37,1,2,3,4,5,6,34,7,8,10,19,20,35,16,38,39,31,12,13,11,26,27,28,32,18,14,40]),import.meta.url),()=>a(()=>import("../nodes/8.DYPUVn-a.js"),__vite__mapDeps([41,1,2,3,30,31,8,4,5,10,12,13,11,26,27,28,32,18]),import.meta.url),()=>a(()=>import("../nodes/9.Bc6B0Hcn.js"),__vite__mapDeps([42,1,2,3,4,5,6,34,7,8,10,19,20,35,9,16,17,31,12,13,11,26,27,28,18]),import.meta.url),()=>a(()=>import("../nodes/10.CMLfe2no.js"),__vite__mapDeps([43,1,2,3,30,4,5,12,13,18,26,10,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/11.BcR5gOV6.js"),__vite__mapDeps([44,1,3,30,10,2,14,31,8,4,5,12,13,11,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/12.CRVOD7oJ.js"),__vite__mapDeps([45,1,2,3,4,5,46,6,8,9,10,18,14,13,16,26,27,47,17,48,49,15,50,19,20,38,39,32,51]),import.meta.url),()=>a(()=>import("../nodes/13.UdclNjnS.js"),__vite__mapDeps([52,1,2,3,30,4,5,26,10,27,18,28,13,32]),import.meta.url),()=>a(()=>import("../nodes/14.CuNExVd0.js"),__vite__mapDeps([53,1,2,3,30,18,31,8,4,5,10,12,13,11,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/15.D2EVaO6c.js"),__vite__mapDeps([54,1,2,3,30,4,5,26,10,27,18,28,13,32]),import.meta.url),()=>a(()=>import("../nodes/16.BHQZgsg5.js"),__vite__mapDeps([55,1,2,3,30,10,18,14,31,8,4,5,12,13,11,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/17.DpD2KkS8.js"),__vite__mapDeps([56,1,2,3,46,5,4,6,8,9,10,18,14,13,16,26,27,47,17,48,30,12,28,32]),import.meta.url),()=>a(()=>import("../nodes/18.DdPknQfI.js"),__vite__mapDeps([57,1,2,3,30,4,5,12,13,26,10,27,47,28]),import.meta.url),()=>a(()=>import("../nodes/19.CLd0kemn.js"),__vite__mapDeps([58,1,2,3,30,31,8,4,5,10,12,13,11,26,27,28,18,32]),import.meta.url),()=>a(()=>import("../nodes/20.Cj35A6gq.js"),__vite__mapDeps([59,1,2,3,4,5,6,30,9,18,31,8,10,12,13,11,26,27,28,32,60]),import.meta.url),()=>a(()=>import("../nodes/21.yCKOHF-q.js"),__vite__mapDeps([61,1,2,3,31,8,4,5,10,12,13,11,26,27,28,18,32]),import.meta.url),()=>a(()=>import("../nodes/22.kK1AQf2j.js"),__vite__mapDeps([62,1,2,3,10,31,8,4,5,12,13,11,26,27,28,32,18,14]),import.meta.url),()=>a(()=>import("../nodes/23.B0dVDPB6.js"),__vite__mapDeps([63,1,2,3,31,8,4,5,10,12,13,11,26,27,28,32,18]),import.meta.url),()=>a(()=>import("../nodes/24.taYcndi3.js"),__vite__mapDeps([64,1,2,3,30,18,26,4,5,10,27,28,13,31,8,12,11]),import.meta.url),()=>a(()=>import("../nodes/25.CpxKI_0Q.js"),__vite__mapDeps([65,1,2,3,4,5,6,30,8,16,9,49,13,66]),import.meta.url)],rr=[],er={"/":[3],"/(app)/_msdftest":[4,[2]],"/(app)/activation":[5,[2]],"/(app)/blackbox":[6,[2]],"/(app)/contradictions":[7,[2]],"/(app)/dreams":[8,[2]],"/(app)/duplicates":[9,[2]],"/(app)/explore":[10,[2]],"/(app)/feed":[11,[2]],"/(app)/graph":[12,[2]],"/(app)/importance":[13,[2]],"/(app)/intentions":[14,[2]],"/(app)/memories":[15,[2]],"/(app)/memory-prs":[16,[2]],"/(app)/observatory":[17,[2]],"/(app)/palace":[18,[2]],"/(app)/patterns":[19,[2]],"/(app)/reasoning":[20,[2]],"/(app)/schedule":[21,[2]],"/(app)/settings":[22,[2]],"/(app)/stats":[23,[2]],"/(app)/timeline":[24,[2]],"/waitlist":[25]},W={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Yt=Object.fromEntries(Object.entries(W.transport).map(([e,t])=>[e,t.decode])),ar=Object.fromEntries(Object.entries(W.transport).map(([e,t])=>[e,t.encode])),or=!1,sr=(e,t)=>Yt[e](t);export{sr as decode,Yt as decoders,er as dictionary,ar as encoders,or as hash,W as hooks,Zt as matchers,tr as nodes,$t as root,rr as server_loads}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.CcZXq7cA.js","../chunks/Bzak7iHL.js","../chunks/DAau0uzT.js","../chunks/CGq8RnJq.js","../chunks/Ccqjq5DS.js","../chunks/W8qDZJD6.js","../chunks/DqfV0sZu.js","../chunks/BbCqB9Us.js","../chunks/uCQU803Y.js","../chunks/DGM4cicq.js","../chunks/DV6OI5iy.js","../chunks/CbBCXwzm.js","../chunks/DJDK-KWF.js","../chunks/DY7cP31Q.js","../chunks/Ch9vNiEl.js","../chunks/BfiOPhbz.js","../chunks/HFGAk8XQ.js","../chunks/CcUbQ_Wl.js","../chunks/D35IQVqe.js","../chunks/CKbQrCJw.js","../assets/Icon.tTjeJXhC.css","../assets/0.CLR80qKm.css","../nodes/1.8UKMSR8s.js","../nodes/2.zvt29sR6.js","../nodes/3.C6cru0cW.js","../nodes/4.CIxbWFkr.js","../chunks/BMB5u1EX.js","../assets/cognitive-palette.BALpZUFZ.css","../chunks/D7ozXiSB.js","../nodes/5.XKzsmb3Z.js","../chunks/De_e6MzK.js","../chunks/BpEKQwpr.js","../chunks/DETSv_kY.js","../nodes/6.CNes4HHG.js","../chunks/B9l3DI-J.js","../assets/reveal.Dmxpik8H.css","../assets/6.ksI6gQcB.css","../nodes/7.Cs_QL9bJ.js","../chunks/DnDQzBs4.js","../assets/Dropdown.C2Z-7Phd.css","../assets/7.DQ_AfUnN.css","../nodes/8.DYPUVn-a.js","../nodes/9.Bc6B0Hcn.js","../nodes/10.CMLfe2no.js","../nodes/11.BcR5gOV6.js","../nodes/12.CRVOD7oJ.js","../chunks/Bo4EDkTQ.js","../chunks/BKh9s_e0.js","../assets/ObservatoryStage.CKoSQgn0.css","../chunks/BzfFPM53.js","../chunks/Dp1pzeXC.js","../assets/12.BxoW8Jf1.css","../nodes/13.UdclNjnS.js","../nodes/14.CuNExVd0.js","../nodes/15.D2EVaO6c.js","../nodes/16.BHQZgsg5.js","../nodes/17.DpD2KkS8.js","../nodes/18.DdPknQfI.js","../nodes/19.CLd0kemn.js","../nodes/20.DD0_N4PP.js","../assets/20.Duj1vJUf.css","../nodes/21.yCKOHF-q.js","../nodes/22.kK1AQf2j.js","../nodes/23.B0dVDPB6.js","../nodes/24.taYcndi3.js","../nodes/25.CpxKI_0Q.js","../assets/25.DKhUrxcR.css"])))=>i.map(i=>d[i]); +var z=e=>{throw TypeError(e)};var J=(e,t,r)=>t.has(e)||z("Cannot "+r);var n=(e,t,r)=>(J(e,t,"read from private field"),r?r.call(e):t.get(e)),N=(e,t,r)=>t.has(e)?z("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Y=(e,t,r,_)=>(J(e,t,"write to private field"),_?_.call(e,r):t.set(e,r),r);import{_ as a}from"../chunks/Dp1pzeXC.js";import{w as K,ai as nt,i as mt,E as ut,aj as ct,al as dt,G as lt,F as Q,aG as pt,I as ft,s as S,ae as vt,g as f,aR as Et,a0 as ht,_ as gt,p as Pt,R as Rt,j as Ot,x as Tt,aH as R,X as At,a as v,b as yt,d as B,aS as y,c as It,r as Dt,f as U,u as L,aT as Lt,Y as Vt}from"../chunks/CGq8RnJq.js";import{h as bt,m as xt,u as wt,o as jt,s as kt}from"../chunks/DAau0uzT.js";import"../chunks/Bzak7iHL.js";import{i as j,b as V}from"../chunks/Ccqjq5DS.js";import{B as St}from"../chunks/W8qDZJD6.js";import{p as k}from"../chunks/DV6OI5iy.js";function b(e,t,r){var _;K&&(_=ft,nt());var i=new St(e);mt(()=>{var m=t()??null;if(K){var o=ct(_),s=o===pt,d=m!==null;if(s!==d){var x=dt();lt(x),i.anchor=x,Q(!1),i.ensure(m,m&&(O=>r(O,m))),Q(!0);return}}i.ensure(m,m&&(O=>r(O,m)))},ut)}function Ct(e){return class extends Ft{constructor(t){super({component:e,...t})}}}var E,c;class Ft{constructor(t){N(this,E);N(this,c);var m;var r=new Map,_=(o,s)=>{var d=gt(s,!1,!1);return r.set(o,d),d};const i=new Proxy({...t.props||{},$$events:{}},{get(o,s){return f(r.get(s)??_(s,Reflect.get(o,s)))},has(o,s){return s===vt?!0:(f(r.get(s)??_(s,Reflect.get(o,s))),Reflect.has(o,s))},set(o,s,d){return S(r.get(s)??_(s,d),d),Reflect.set(o,s,d)}});Y(this,c,(t.hydrate?bt:xt)(t.component,{target:t.target,anchor:t.anchor,props:i,context:t.context,intro:t.intro??!1,recover:t.recover,transformError:t.transformError})),(!((m=t==null?void 0:t.props)!=null&&m.$$host)||t.sync===!1)&&Et(),Y(this,E,i.$$events);for(const o of Object.keys(n(this,c)))o==="$set"||o==="$destroy"||o==="$on"||ht(this,o,{get(){return n(this,c)[o]},set(s){n(this,c)[o]=s},enumerable:!0});n(this,c).$set=o=>{Object.assign(i,o)},n(this,c).$destroy=()=>{wt(n(this,c))}}$set(t){n(this,c).$set(t)}$on(t,r){n(this,E)[t]=n(this,E)[t]||[];const _=(...i)=>r.call(this,...i);return n(this,E)[t].push(_),()=>{n(this,E)[t]=n(this,E)[t].filter(i=>i!==_)}}$destroy(){n(this,c).$destroy()}}E=new WeakMap,c=new WeakMap;const Zt={};var Gt=U('
'),Mt=U(" ",1);function Nt(e,t){Pt(t,!0);let r=k(t,"components",23,()=>[]),_=k(t,"data_0",3,null),i=k(t,"data_1",3,null),m=k(t,"data_2",3,null);Rt(()=>t.stores.page.set(t.page)),Ot(()=>{t.stores,t.page,t.constructors,r(),t.form,_(),i(),m(),t.stores.page.notify()});let o=B(!1),s=B(!1),d=B(null);jt(()=>{const u=t.stores.page.subscribe(()=>{f(o)&&(S(s,!0),Tt().then(()=>{S(d,document.title||"untitled page",!0)}))});return S(o,!0),u});const x=L(()=>t.constructors[2]);var O=Mt(),H=R(O);{var Z=u=>{const h=L(()=>t.constructors[0]);var g=y(),I=R(g);b(I,()=>f(h),(P,T)=>{V(T(P,{get data(){return _()},get form(){return t.form},get params(){return t.page.params},children:(l,Bt)=>{var X=y(),et=R(X);{var at=A=>{const C=L(()=>t.constructors[1]);var D=y(),F=R(D);b(F,()=>f(C),(G,M)=>{V(M(G,{get data(){return i()},get form(){return t.form},get params(){return t.page.params},children:(p,Ht)=>{var q=y(),st=R(q);b(st,()=>f(x),(_t,it)=>{V(it(_t,{get data(){return m()},get form(){return t.form},get params(){return t.page.params}}),w=>r()[2]=w,()=>{var w;return(w=r())==null?void 0:w[2]})}),v(p,q)},$$slots:{default:!0}}),p=>r()[1]=p,()=>{var p;return(p=r())==null?void 0:p[1]})}),v(A,D)},ot=A=>{const C=L(()=>t.constructors[1]);var D=y(),F=R(D);b(F,()=>f(C),(G,M)=>{V(M(G,{get data(){return i()},get form(){return t.form},get params(){return t.page.params}}),p=>r()[1]=p,()=>{var p;return(p=r())==null?void 0:p[1]})}),v(A,D)};j(et,A=>{t.constructors[2]?A(at):A(ot,!1)})}v(l,X)},$$slots:{default:!0}}),l=>r()[0]=l,()=>{var l;return(l=r())==null?void 0:l[0]})}),v(u,g)},$=u=>{const h=L(()=>t.constructors[0]);var g=y(),I=R(g);b(I,()=>f(h),(P,T)=>{V(T(P,{get data(){return _()},get form(){return t.form},get params(){return t.page.params}}),l=>r()[0]=l,()=>{var l;return(l=r())==null?void 0:l[0]})}),v(u,g)};j(H,u=>{t.constructors[1]?u(Z):u($,!1)})}var tt=At(H,2);{var rt=u=>{var h=Gt(),g=It(h);{var I=P=>{var T=Lt();Vt(()=>kt(T,f(d))),v(P,T)};j(g,P=>{f(s)&&P(I)})}Dt(h),v(u,h)};j(tt,u=>{f(o)&&u(rt)})}v(e,O),yt()}const $t=Ct(Nt),tr=[()=>a(()=>import("../nodes/0.CcZXq7cA.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url),()=>a(()=>import("../nodes/1.8UKMSR8s.js"),__vite__mapDeps([22,1,15,3,2,13,12]),import.meta.url),()=>a(()=>import("../nodes/2.zvt29sR6.js"),__vite__mapDeps([23,1,3,7,5]),import.meta.url),()=>a(()=>import("../nodes/3.C6cru0cW.js"),__vite__mapDeps([24,1,15,3,2,12,13]),import.meta.url),()=>a(()=>import("../nodes/4.CIxbWFkr.js"),__vite__mapDeps([25,1,2,3,4,5,26,10,27,28,13]),import.meta.url),()=>a(()=>import("../nodes/5.XKzsmb3Z.js"),__vite__mapDeps([29,1,2,3,30,11,12,13,18,31,8,4,5,10,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/6.CNes4HHG.js"),__vite__mapDeps([33,1,2,3,4,5,6,34,7,8,10,19,20,35,16,9,12,13,18,14,31,11,26,27,28,32,36]),import.meta.url),()=>a(()=>import("../nodes/7.Cs_QL9bJ.js"),__vite__mapDeps([37,1,2,3,4,5,6,34,7,8,10,19,20,35,16,38,39,31,12,13,11,26,27,28,32,18,14,40]),import.meta.url),()=>a(()=>import("../nodes/8.DYPUVn-a.js"),__vite__mapDeps([41,1,2,3,30,31,8,4,5,10,12,13,11,26,27,28,32,18]),import.meta.url),()=>a(()=>import("../nodes/9.Bc6B0Hcn.js"),__vite__mapDeps([42,1,2,3,4,5,6,34,7,8,10,19,20,35,9,16,17,31,12,13,11,26,27,28,18]),import.meta.url),()=>a(()=>import("../nodes/10.CMLfe2no.js"),__vite__mapDeps([43,1,2,3,30,4,5,12,13,18,26,10,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/11.BcR5gOV6.js"),__vite__mapDeps([44,1,3,30,10,2,14,31,8,4,5,12,13,11,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/12.CRVOD7oJ.js"),__vite__mapDeps([45,1,2,3,4,5,46,6,8,9,10,18,14,13,16,26,27,47,17,48,49,15,50,19,20,38,39,32,51]),import.meta.url),()=>a(()=>import("../nodes/13.UdclNjnS.js"),__vite__mapDeps([52,1,2,3,30,4,5,26,10,27,18,28,13,32]),import.meta.url),()=>a(()=>import("../nodes/14.CuNExVd0.js"),__vite__mapDeps([53,1,2,3,30,18,31,8,4,5,10,12,13,11,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/15.D2EVaO6c.js"),__vite__mapDeps([54,1,2,3,30,4,5,26,10,27,18,28,13,32]),import.meta.url),()=>a(()=>import("../nodes/16.BHQZgsg5.js"),__vite__mapDeps([55,1,2,3,30,10,18,14,31,8,4,5,12,13,11,26,27,28,32]),import.meta.url),()=>a(()=>import("../nodes/17.DpD2KkS8.js"),__vite__mapDeps([56,1,2,3,46,5,4,6,8,9,10,18,14,13,16,26,27,47,17,48,30,12,28,32]),import.meta.url),()=>a(()=>import("../nodes/18.DdPknQfI.js"),__vite__mapDeps([57,1,2,3,30,4,5,12,13,26,10,27,47,28]),import.meta.url),()=>a(()=>import("../nodes/19.CLd0kemn.js"),__vite__mapDeps([58,1,2,3,30,31,8,4,5,10,12,13,11,26,27,28,18,32]),import.meta.url),()=>a(()=>import("../nodes/20.DD0_N4PP.js"),__vite__mapDeps([59,1,2,3,4,5,6,30,9,18,31,8,10,12,13,11,26,27,28,32,60]),import.meta.url),()=>a(()=>import("../nodes/21.yCKOHF-q.js"),__vite__mapDeps([61,1,2,3,31,8,4,5,10,12,13,11,26,27,28,18,32]),import.meta.url),()=>a(()=>import("../nodes/22.kK1AQf2j.js"),__vite__mapDeps([62,1,2,3,10,31,8,4,5,12,13,11,26,27,28,32,18,14]),import.meta.url),()=>a(()=>import("../nodes/23.B0dVDPB6.js"),__vite__mapDeps([63,1,2,3,31,8,4,5,10,12,13,11,26,27,28,32,18]),import.meta.url),()=>a(()=>import("../nodes/24.taYcndi3.js"),__vite__mapDeps([64,1,2,3,30,18,26,4,5,10,27,28,13,31,8,12,11]),import.meta.url),()=>a(()=>import("../nodes/25.CpxKI_0Q.js"),__vite__mapDeps([65,1,2,3,4,5,6,30,8,16,9,49,13,66]),import.meta.url)],rr=[],er={"/":[3],"/(app)/_msdftest":[4,[2]],"/(app)/activation":[5,[2]],"/(app)/blackbox":[6,[2]],"/(app)/contradictions":[7,[2]],"/(app)/dreams":[8,[2]],"/(app)/duplicates":[9,[2]],"/(app)/explore":[10,[2]],"/(app)/feed":[11,[2]],"/(app)/graph":[12,[2]],"/(app)/importance":[13,[2]],"/(app)/intentions":[14,[2]],"/(app)/memories":[15,[2]],"/(app)/memory-prs":[16,[2]],"/(app)/observatory":[17,[2]],"/(app)/palace":[18,[2]],"/(app)/patterns":[19,[2]],"/(app)/reasoning":[20,[2]],"/(app)/schedule":[21,[2]],"/(app)/settings":[22,[2]],"/(app)/stats":[23,[2]],"/(app)/timeline":[24,[2]],"/waitlist":[25]},W={handleError:(({error:e})=>{console.error(e)}),reroute:(()=>{}),transport:{}},Yt=Object.fromEntries(Object.entries(W.transport).map(([e,t])=>[e,t.decode])),ar=Object.fromEntries(Object.entries(W.transport).map(([e,t])=>[e,t.encode])),or=!1,sr=(e,t)=>Yt[e](t);export{sr as decode,Yt as decoders,er as dictionary,ar as encoders,or as hash,W as hooks,Zt as matchers,tr as nodes,$t as root,rr as server_loads}; diff --git a/apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js.br b/apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js.br new file mode 100644 index 0000000000000000000000000000000000000000..e4ed0399fcb8d1d9a9f612297d9f31bc8ce31a3a GIT binary patch literal 3273 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 HEN^)SPP|m^ literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js.gz b/apps/dashboard/build/_app/immutable/entry/app.BYOyN8KT.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..c7143779853143c6266c96528e6134a3327b911a GIT binary patch literal 3718 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 literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js.br b/apps/dashboard/build/_app/immutable/entry/app.Bj0mlYI5.js.br deleted file mode 100644 index c9bcb98ecad61e82b3e51292502eb606535ae94f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3277 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 l5~@k6R=^j<;$euu6e in t?Re(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var R=(t,e,s)=>Ce(t,typeof e!="symbol"?e+"":e,s);import"../chunks/Bzak7iHL.js";import{o as Te,e as Ie,s as ye}from"../chunks/DAau0uzT.js";import{p as $e,j as Ne,g as m,aH as Pe,Y as de,a as ue,b as Me,d as W,h as Le,X as j,s as I,f as ve,u as be,$ as Fe,c as pe,r as ie,af as Be}from"../chunks/CGq8RnJq.js";import{b as De,i as Ge}from"../chunks/Ccqjq5DS.js";import{e as Ue,r as Oe,i as We}from"../chunks/DqfV0sZu.js";import{h as Xe}from"../chunks/De_e6MzK.js";import{b as Ve}from"../chunks/DGM4cicq.js";import{a as Ye}from"../chunks/D35IQVqe.js";import{R as ze}from"../chunks/BpEKQwpr.js";import{T as He}from"../chunks/D7ozXiSB.js";import{r as qe}from"../chunks/BMB5u1EX.js";import{L as Ke,F as _e,l as je}from"../chunks/DETSv_kY.js";const Qe={intent:"Intent classification",retrieve:"Memory retrieval",activate:"Activation expansion",evidence:"Evidence grounding",contradiction:"Contradiction check",synthesis:"Synthesis",recommendation:"Recommendation",receipt:"Composition receipt"},Je=["intent","retrieve","activate","evidence","contradiction","synthesis","recommendation","receipt"];function B(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function g(t,e=""){return typeof t=="string"?t:t==null?e:String(t)}function ee(t,e=0){return typeof t=="number"&&Number.isFinite(t)?t:e}function V(t){return Math.max(0,Math.min(1,t))}function te(t){const e=ee(t,0);return V(e>1?e/100:e)}function Ze(t){return t==="primary"||t==="supporting"||t==="contradicting"||t==="superseded"?t:"supporting"}function Q(t,e=""){const s=te(t.trust??t.trust_score??0);return{id:g(t.id??t.memory_id??e),trust:s,date:g(t.date??t.created_at??""),role:Ze(t.role),preview:g(t.preview??t.answer_preview??t.content??""),nodeType:t.node_type?g(t.node_type):t.nodeType?g(t.nodeType):void 0}}function O(t,e,s){return s?{kind:t,id:e,scalar:s}:{kind:t,id:e||`${t}:unknown`}}function P(t,e){return{kind:"scalar",id:`deep_reference.${t}`,scalar:{name:t,value:e}}}function et(t){var y,b,T,L;const e=B(t),u=(Array.isArray(e.evidence)?e.evidence.map(B):[]).map(r=>Q(r)).filter(r=>r.id.length>0),f=B(e.recommended),i=Object.keys(f).length>0||u.length>0?{answer_preview:g(f.answer_preview??((y=u[0])==null?void 0:y.preview)??""),memory_id:g(f.memory_id??((b=u[0])==null?void 0:b.id)??""),trust_score:te(f.trust_score??((T=u[0])==null?void 0:T.trust)??0),date:g(f.date??((L=u[0])==null?void 0:L.date)??"")}:null,a=(Array.isArray(e.contradictions)?e.contradictions.map(B):Array.isArray(e.claim_conflicts)?e.claim_conflicts.map(B):[]).map(r=>{const E=B(r.stronger),F=B(r.weaker);if(Object.keys(E).length>0||Object.keys(F).length>0){const re=Q(E),se=Q(F);return{stronger:re,weaker:se,topic_overlap:V(ee(r.topic_overlap,0)),summary:g(r.summary,`Trust-weighted conflict: ${re.id.slice(0,8)} over ${se.id.slice(0,8)}`)}}const U=Q({id:r.a_id,role:"contradicting"}),le=Q({id:r.b_id,role:"contradicting"});return{stronger:U,weaker:le,topic_overlap:V(ee(r.topic_overlap,0)),summary:g(r.summary??r.reason,"Trust-weighted conflict between high-FSRS memories.")}}).filter(r=>r.stronger.id||r.weaker.id),w=(Array.isArray(e.superseded)?e.superseded.map(B):[]).map(r=>r.id||r.superseded_by?{id:g(r.id),preview:g(r.preview??""),trust:te(r.trust??0),date:g(r.date??""),superseded_by:g(r.superseded_by??(i==null?void 0:i.memory_id)??""),reason:g(r.reason??"Superseded by newer memory with higher trust.")}:{id:g(r.old_id),preview:g(r.preview??""),trust:te(r.trust??0),date:g(r.date??""),superseded_by:g(r.new_id??(i==null?void 0:i.memory_id)??""),reason:g(r.reason??"Superseded by newer memory with higher trust.")}).filter(r=>r.id||r.superseded_by),c=te(e.confidence),l=ee(e.memoriesAnalyzed??e.memories_analyzed,u.length),n=ee(e.activationExpanded??e.activation_expanded,0),p=g(e.intent??""),v=g(e.reasoning??e.guidance??""),S=g(e.guidance??""),_=g(e.composition_event_id??""),A=g(e.compositionWriteStatus??e.composition_write_status??""),C=_||A,k=_.length>0,M=u.map((r,E)=>({source:O("memory",r.id),index:E,label:r.preview||r.id.slice(0,8),retention:V(r.trust),trust:V(r.trust),lastAccessed:r.date||void 0,tags:[r.role,...r.nodeType?[r.nodeType]:[]],type:r.nodeType??"memory"})),H=new Map(M.map(r=>[r.source.id,r.index])),q=a.flatMap((r,E)=>{const F=H.get(r.stronger.id),U=H.get(r.weaker.id);return F==null||U==null?[]:[{source:O("pair",`contradiction:${r.stronger.id}:${r.weaker.id}`),sourceIndex:F,targetIndex:U,weight:Math.max(.2,r.topic_overlap||.5),kind:"contradiction"}]}),K=[];a.length>0&&K.push({source:O("event",`deep_reference.contradictions.${a.length}`),type:"ReasoningContradictionInterrupt",targetIndex:-1,frame:250,energy:a.length}),w.length>0&&K.push({source:O("event",`deep_reference.superseded.${w.length}`),type:"ReasoningSupersessionInterrupt",targetIndex:-1,frame:330,energy:w.length});const ne=[];C&&ne.push({source:k?O("receipt",_):P("compositionWriteStatus",A==="persisted"?1:0),label:k?`receipt ${_.slice(0,8)}`:A,nodeIndices:M.map(r=>r.index)});const N=(r,E,F,U,le,re,se,ke="none")=>({index:r,kind:E,label:Qe[E],count:F,confidence:V(U),lit:F>0||U>0,provenance:re,exposed:le,not_exposed_by_backend:se,interrupt:ke}),o=Je.map((r,E)=>{switch(r){case"intent":return N(E,r,p?1:0,p?c:0,{intent:p},P("intent_present",p?1:0),["raw classifier trace"]);case"retrieve":return N(E,r,l||u.length,c,{memoriesAnalyzed:l,evidence_count:u.length},P("memoriesAnalyzed",l),["candidate ids discarded before evidence"]);case"activate":return N(E,r,n,n>0?c:0,{activationExpanded:n},P("activationExpanded",n),["activation path/map"]);case"evidence":return N(E,r,u.length,u.length>0?c:0,{evidence:u},P("evidence_count",u.length),["reranker discarded candidates"]);case"contradiction":return N(E,r,a.length,a.length>0?c:0,{contradictions:a,claim_conflicts:e.claim_conflicts??[]},P("contradiction_count",a.length),["full claim graph"],a.length>0?"contradiction":"none");case"synthesis":return N(E,r,v||S?1:0,v||S?c:0,{reasoning:v,guidance:S},P("synthesis_present",v||S?1:0),["token-level chain internals"]);case"recommendation":return N(E,r,i!=null&&i.memory_id?1:0,(i==null?void 0:i.trust_score)??0,{recommended:i},i!=null&&i.memory_id?O("memory",i.memory_id):P("recommended_present",0),["alternative recommendations"]);case"receipt":return N(E,r,C?1:0,C?c:0,{composition_event_id:_,compositionWriteStatus:A},k?O("receipt",_):P("compositionWriteStatus",A==="persisted"?1:0),["separate receipt field"],w.length>0?"supersession":"none")}});return{organ:"reasoning",nodes:M,edges:q,events:K,receipts:ne,scalars:{confidence:c,memoriesAnalyzed:l,activationExpanded:n,evidenceCount:u.length,contradictionCount:a.length,supersededCount:w.length,compositionPersisted:k?1:0},alive:!!(p||v||S||u.length||a.length||w.length||i!=null&&i.memory_id||C),stages:o,evidence:u,contradictions:a,superseded:w,recommended:i,raw:e}}const Y=[-.86,-.526,-.214,.074,.335,.562,.747,.86],tt=["INTENT","RETRIEVE","ACTIVATE","EVIDENCE","CHALLENGE","SYNTH","DECIDE","SEAL"],we=0,nt=3,Ee=6,rt=7,st={primary:.04,supporting:.24,contradicting:-.22,superseded:-.48},it=.052,at=6,ot=Y[nt]-.02,ct=.14;function lt(t){var c,l;if(!t||!t.alive)return null;const e=String(((c=t.raw)==null?void 0:c.query)??""),s=(t.stages??[]).slice(0,Y.length).map((n,p)=>({index:p,kind:(n==null?void 0:n.kind)??String(p),label:(n==null?void 0:n.label)??(n==null?void 0:n.kind)??"",short:tt[p]??((n==null?void 0:n.kind)??"").toUpperCase(),x:Y[p],lit:!!(n!=null&&n.lit),confidence:(n==null?void 0:n.confidence)??0,count:(n==null?void 0:n.count)??0})),u=new Map;for(const n of t.evidence??[]){const p=u.get(n.role)??[];p.push(n),u.set(n.role,p)}const f=[];for(const[n,p]of u){const v=st[n],S=p.slice(0,at);S.forEach((_,A)=>{const C=v+(A-(S.length-1)/2)*it,k=ot+A/Math.max(1,S.length-1)*ct;f.push({id:_.id,role:n,trust:_.trust,preview:_.preview,x:k,y:C})})}const i=t.recommended!=null?{x:Y[Ee],y:we,confidence:Math.max(0,Math.min(1,t.recommended.trust_score))}:null,d=i?f.map(n=>({fromX:n.x,fromY:n.y,toX:i.x,toY:i.y,trust:n.trust,role:n.role,sign:n.role==="contradicting"?-1:1})):[],a=new Map(f.map(n=>[n.id,n])),x=(t.contradictions??[]).map(n=>{const p=a.get(n.stronger.id),v=a.get(n.weaker.id);return!p||!v?null:{ax:p.x,ay:p.y,bx:v.x,by:v.y,strength:Math.max(.35,n.topic_overlap||.5)}}).filter(n=>n!==null),w=(t.superseded??[]).map(n=>{const p=a.get(n.id);return p?{x:p.x,y:p.y,toX:(i==null?void 0:i.x)??Y[Ee],toY:(i==null?void 0:i.y)??we}:null}).filter(n=>n!==null);return{query:e,gates:s,evidence:f,ribbons:d,nucleus:i,fringes:x,scars:w,receiptX:Y[rt],sourceCount:((l=t.evidence)==null?void 0:l.length)??0}}const dt=` -struct Params { - frame: f32, loopPhase: f32, nodeCount: f32, edgeCount: f32, - pathCount: f32, pulse: f32, viewportW: f32, viewportH: f32, - brightness: f32, demoId: f32, time: f32, captureMode: f32, - liveKind: f32, liveFrame: f32, liveEnergy: f32, projectionDays: f32, - cursorX: f32, cursorY: f32, cursorVx: f32, cursorVy: f32, -}; - -// Instance record (12 floats) — mirrors reasoning-geometry-pass INSTANCE_FLOATS. -struct Inst { - a: vec2f, // endpoint A / center (NDC) - b: vec2f, // endpoint B (== a for points) - kind: f32, // 0 beam, 1 ribbon, 2 nucleus, 3 fringe, 4 scar - thickness: f32, // NDC half-width - trust: f32, // 0..1 - sign: f32, // +1 support / -1 oppose - energy: f32, // 0..1 - seed: f32, // per-instance phase - extra: f32, // kind-specific (fringe strength / nucleus confidence) - pad: f32, -}; - -@group(0) @binding(0) var params: Params; -@group(0) @binding(1) var insts: array; - -const TAU: f32 = 6.28318530718; -const QUAD = array( - vec2f(0.0, 0.0), vec2f(1.0, 0.0), vec2f(1.0, 1.0), - vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(0.0, 1.0) -); - -struct VSOut { - @builtin(position) clip: vec4f, - @location(0) world: vec2f, // NDC position of this fragment - @location(1) @interpolate(flat) idx: u32, -}; - -fn aspect() -> f32 { return max(0.0001, params.viewportW / max(1.0, params.viewportH)); } - -// smoothstep-based value-suppressing palette (Correll/Moritz/Heer): low trust → -// neutral grey (never jitter), high trust → vivid. base is the category hue. -fn vsup(base: vec3f, trust: f32) -> vec3f { - let s = smoothstep(0.0, 1.0, clamp(trust, 0.0, 1.0)); - let neutral = vec3f(0.42, 0.46, 0.52); - let bright = 0.72 + 0.28 * s; - return mix(neutral, base, s) * bright; -} - -// PRGn-style diverging hue by signed influence: + = green (support), − = purple -// (oppose). |mag| drives saturation; zero-point kept off pure white. -fn prgn(sign: f32, mag: f32) -> vec3f { - let green = vec3f(0.0, 0.85, 0.45); - let purple = vec3f(0.55, 0.15, 0.75); - let base = select(purple, green, sign >= 0.0); - return mix(vec3f(0.35, 0.37, 0.4), base, clamp(mag, 0.0, 1.0)); -} - -@vertex -fn vs_geo(@builtin(vertex_index) vi: u32, @builtin(instance_index) ii: u32) -> VSOut { - var out: VSOut; - let inst = insts[ii]; - let corner = QUAD[vi]; - let asp = aspect(); - - // Bounding quad: for line-like kinds (beam/ribbon/scar/fringe) expand along - // the A→B segment plus thickness on the perpendicular; for point kinds - // (nucleus) a square of side 2*thickness around A. - var pos: vec2f; - let is_point = inst.kind == 2.0; - if (is_point) { - let r = inst.thickness + 0.04; // padding for glow/rings - pos = inst.a + (corner - vec2f(0.5)) * (2.0 * r); - } else { - let dir = inst.b - inst.a; - let len = max(1e-4, length(dir)); - let t_hat = dir / len; - let n_hat = vec2f(-t_hat.y, t_hat.x); - let half_w = inst.thickness + 0.03; // padding for AA/glow - // corner.x runs along the segment (0..1), corner.y across (-1..1) - let along = corner.x; - let across = (corner.y - 0.5) * 2.0; - pos = inst.a + t_hat * (along * len) + n_hat * (across * half_w); - } - - // aspect-correct so circles stay round (mirror the text pass convention). - var clip = pos; - clip.x = clip.x / max(asp, 1.0); - clip.y = clip.y * min(asp, 1.0); - out.clip = vec4f(clip, 0.0, 1.0); - out.world = pos; - out.idx = ii; - return out; -} - -// ── Per-kind SDF shading. Each returns premultiplied additive HDR rgb. ──────── -// FLEET: fill these five. Each is a PURE function of (inst, p, t) → vec3f. Keep -// them deterministic (use params.time via t), additive (return black to skip a -// pixel), and honest (brightness ∝ the real trust/energy/confidence fields). - -fn shade_beam(inst: Inst, p: vec2f, t: f32) -> vec3f { - // BEAM: a bright emissive causal line A→B along y with a flowing pulse. - let d = sdf_segment(p, inst.a, inst.b); - let core = smoothstep(inst.thickness, 0.0, d); - let glow = smoothstep(inst.thickness * 4.0, 0.0, d) * 0.35; - // flow pulse travelling toward the decision (left→right) - let along = clamp((p.x - inst.a.x) / max(1e-4, inst.b.x - inst.a.x), 0.0, 1.0); - let flow = 0.5 + 0.5 * sin(along * 18.0 - t * 3.0); - let cyan = vec3f(0.0, 0.96, 0.83); - return cyan * inst.energy * (core * (0.6 + 0.6 * flow) + glow); -} - -fn shade_ribbon(inst: Inst, p: vec2f, t: f32) -> vec3f { - // RIBBON: tapered (wide at nucleus, narrow at source), UV-scroll flow toward - // the decision, head-bright opacity gradient, PRGn hue by sign. - let along = clamp(dot(p - inst.a, inst.b - inst.a) / max(1e-6, dot(inst.b - inst.a, inst.b - inst.a)), 0.0, 1.0); - let d = sdf_segment(p, inst.a, inst.b); - let taper = inst.thickness * mix(0.35, 1.0, along); // widen toward B (nucleus) - let core = smoothstep(taper, 0.0, d); - // flowing dashes travelling A→B (causal direction) - let flow = 0.5 + 0.5 * sin(along * 26.0 - t * 4.0 - inst.seed); - let headBright = mix(0.35, 1.0, along); // brighter toward the decision head - let hue = prgn(inst.sign, inst.trust); - return hue * inst.energy * core * flow * headBright; -} - -fn shade_nucleus(inst: Inst, p: vec2f, t: f32) -> vec3f { - // NUCLEUS: recommendation core; stability = confidence. Coherent (tight solid - // rings) when confident, scattered/soft when not. Confidence in inst.extra. - let c = inst.extra; - let r = length(p - inst.a); - let coherence = smoothstep(0.0, 1.0, c); - let coreR = inst.thickness * (0.5 + 0.3 * c); - let core = smoothstep(coreR, 0.0, r); - // 1..4 concentric rings, more + tighter as confidence rises - let ringCount = 1.0 + floor(c * 3.0); - let ringPhase = r / max(1e-4, inst.thickness) * ringCount * TAU; - let ring = pow(max(0.0, sin(ringPhase - t * 1.5)), 6.0) * smoothstep(inst.thickness * 1.6, inst.thickness * 0.4, r) * coherence; - let hot = vec3f(0.91, 1.0, 0.72); - return vsup(hot, c) * (core * 1.4 + ring * 0.8); -} - -fn shade_fringe(inst: Inst, p: vec2f, t: f32) -> vec3f { - // FRINGE: two-source interference between contradicting evidence a,b. Scarlet - // standing wave (cos^2) that breathes; reads as "these two conflict". - let r1 = distance(p, inst.a); - let r2 = distance(p, inst.b); - let lambda = 0.05; - let phase = TAU * (r1 - r2) / lambda - t * 2.0; - let fr = cos(phase * 0.5); - let intensity = fr * fr; - // confine the fringe to the region BETWEEN the two sources - let mid = (inst.a + inst.b) * 0.5; - let span = distance(inst.a, inst.b) * 0.6 + 0.06; - let mask = smoothstep(span, span * 0.4, distance(p, mid)); - let scarlet = vec3f(0.95, 0.08, 0.14); - return scarlet * intensity * mask * inst.extra; -} - -fn shade_scar(inst: Inst, p: vec2f, t: f32) -> vec3f { - // SCAR: superseded evidence leaves a dim etched mark at A, with an AMBER - // transfer filament flowing A→B (into the replacement). - let dScar = sdf_segment(p, inst.a - vec2f(0.02, 0.0), inst.a + vec2f(0.02, 0.0)); - let scar = smoothstep(0.006, 0.0, dScar) * 0.5; - let dFil = sdf_segment(p, inst.a, inst.b); - let along = clamp(dot(p - inst.a, inst.b - inst.a) / max(1e-6, dot(inst.b - inst.a, inst.b - inst.a)), 0.0, 1.0); - let flow = 0.5 + 0.5 * sin(along * 20.0 - t * 3.5); - let fil = smoothstep(inst.thickness * 0.6, 0.0, dFil) * flow * (1.0 - along * 0.4); - let amber = vec3f(1.0, 0.82, 0.4); - let ash = vec3f(0.45, 0.4, 0.38); - return ash * scar + amber * fil * 0.7; -} - -// segment SDF helper -fn sdf_segment(p: vec2f, a: vec2f, b: vec2f) -> f32 { - let pa = p - a; - let ba = b - a; - let h = clamp(dot(pa, ba) / max(1e-6, dot(ba, ba)), 0.0, 1.0); - return length(pa - ba * h); -} - -@fragment -fn fs_geo(in: VSOut) -> @location(0) vec4f { - let inst = insts[in.idx]; - let p = in.world; - let t = params.time; - var rgb = vec3f(0.0); - let k = inst.kind; - if (k == 0.0) { rgb = shade_beam(inst, p, t); } - else if (k == 1.0) { rgb = shade_ribbon(inst, p, t); } - else if (k == 2.0) { rgb = shade_nucleus(inst, p, t); } - else if (k == 3.0) { rgb = shade_fringe(inst, p, t); } - else if (k == 4.0) { rgb = shade_scar(inst, p, t); } - rgb = rgb * params.brightness; - // additive: alpha carries nothing; premultiplied rgb is the contribution. - return vec4f(rgb, 1.0); -} -`,ae=12,fe=512,J={beam:0,ribbon:1,nucleus:2,fringe:3,scar:4};class ut{constructor(e){R(this,"engine");R(this,"layout",null);R(this,"pipeline",null);R(this,"bindGroup",null);R(this,"instanceBuffer",null);R(this,"instanceCount",0);R(this,"ready",!1);this.engine=e}uploadScene(e){this.layout=(e==null?void 0:e.organ)==="reasoning"?lt(e):null,this.ensurePipeline(),this.uploadInstances()}ensurePipeline(){if(this.pipeline||this.ready)return;const e=this.engine.gpuDevice;if(!e||!this.engine.paramsBuffer)return;this.ready=!0,this.instanceBuffer=e.createBuffer({label:"reasoning-geometry-instances",size:fe*ae*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});const s=e.createShaderModule({label:"reasoning-geometry-wgsl",code:dt}),u=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]});this.bindGroup=e.createBindGroup({layout:u,entries:[{binding:0,resource:{buffer:this.engine.paramsBuffer}},{binding:1,resource:{buffer:this.instanceBuffer}}]});const f={color:{srcFactor:"one",dstFactor:"one",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one",operation:"add"}};this.pipeline=e.createRenderPipeline({label:"reasoning-geometry-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[u]}),vertex:{module:s,entryPoint:"vs_geo"},fragment:{module:s,entryPoint:"fs_geo",targets:[{format:this.engine.sceneFormat,blend:f}]},primitive:{topology:"triangle-list"}})}uploadInstances(){const e=this.engine.gpuDevice;if(!e||!this.instanceBuffer)return;const s=this.layout;if(!s){this.instanceCount=0;return}const u=new Float32Array(fe*ae);let f=0;const i=d=>{f>=fe||(u.set(d,f*ae),f++)};for(let d=0;d{const e=qe(t);return[e[0],e[1],e[2]]},ge=z("#00F5D4"),Se=z("#9DFFEB"),ft=z("#FF3B30"),ht=z("#FFD166"),oe=z("#E9FFB7"),X=[.42,.46,.52],he=z("#6B7A88"),D=[-.86,-.526,-.214,.074,.335,.562,.747,.86],G=0,mt=["INTENT","RETRIEVE","ACTIVATE","EVIDENCE","CHALLENGE","SYNTH","DECIDE","SEAL"],gt={primary:.04,supporting:.24,contradicting:-.22,superseded:-.48},xe=.052,ce=6,vt=t=>t*t*(3-2*t);function me(t,e){const s=vt(Math.max(0,Math.min(1,e))),u=.72+.28*s,f=(X[0]+(t[0]-X[0])*s)*u,i=(X[1]+(t[1]-X[1])*s)*u,d=(X[2]+(t[2]-X[2])*s)*u,a=.4+.6*s;return[Math.min(1,f),Math.min(1,i),Math.min(1,d),a]}function Ae(t){switch(t){case"primary":return ge;case"supporting":return Se;case"contradicting":return ft;case"superseded":return ht}}function Z(t){return t.replace(/[—–]/g,"-").replace(/[‘’]/g,"'").replace(/[“”]/g,'"').replace(/…/g,"...").replace(/[^\x20-\x7E]/g,"?")}const $=-1e5;class yt{constructor(e){R(this,"text");R(this,"scene",null);R(this,"ready",!1);R(this,"initPromise",null);this.text=new He(e)}uploadScene(e){this.scene=(e==null?void 0:e.organ)==="reasoning"?e:null,this.ensureReady().then(()=>this.text.setText(this.build()))}render(e){this.text.render(e)}pickAt(e,s){return this.text.pickAt(e,s)}dispose(){this.text.dispose()}async ensureReady(){this.initPromise||(this.initPromise=this.text.init().then(()=>void(this.ready=!0))),await this.initPromise}build(){var a,x,w;const e=this.scene;if(!e||!e.alive)return[];const s=[],u=Z(String(((a=e.raw)==null?void 0:a.query)??"")).slice(0,60);s.push({id:"trace:query",kind:"trace-query",text:u?`> ${u}`:"> (trace)",x:-.94,y:.82,size:.03,color:[...oe,1],weight:.95,depth:1,startFrame:$,revealSpan:1,maxWidthEm:60});const f=e.stages??[];for(let c=0;c{const _=n+(S-(p.length-1)/2)*xe,A=Z(v.preview).replace(/\s+/g," ").trim().slice(0,46);s.push({id:`trace:ev:${v.id}`,kind:"trace-evidence",text:`${A} · ${Math.round(v.trust*100)}%`,x:D[3]-.02,y:_,size:.016,color:me(Ae(c),v.trust),weight:.4+.5*v.trust,depth:.6+.4*v.trust,startFrame:$,revealSpan:1,maxWidthEm:52,hitPadX:.03,hitPadY:.02,ariaLabel:`${c} evidence, trust ${Math.round(v.trust*100)}%: ${A}`,preview:A})}),l.length>ce&&s.push({id:`trace:super:${c}`,kind:"trace-supernode",text:`+${l.length-ce} more ${c}`,x:D[3]-.02,y:n-(ce/2+1)*xe,size:.014,color:[...he,.7],depth:.6,startFrame:$,revealSpan:1,maxWidthEm:30}),s.push({id:`trace:lanelabel:${c}`,kind:"trace-hud",text:c.toUpperCase(),x:D[3]-.16,y:n,size:.013,color:[...Ae(c),.55],depth:.7,startFrame:$,revealSpan:1,maxWidthEm:14})}if(e.recommended){const c=Math.max(0,Math.min(1,e.recommended.trust_score)),l=Z(e.recommended.answer_preview).replace(/\s+/g," ").trim().slice(0,48),n=D[6],p=c>=.6;s.push({id:"trace:nucleus",kind:"trace-recommendation",text:p?"O":"o",x:n,y:G,size:.05+.05*c,color:me(oe,c),weight:.6+.4*c,depth:1,startFrame:$,revealSpan:1,maxWidthEm:4,hitPadX:.06,hitPadY:.06,ariaLabel:`Recommendation, ${Math.round(c*100)}% confidence: ${l}`,preview:l}),s.push({id:"trace:reclabel",kind:"trace-hud",text:`${p?"LOCKED":"OPEN"} · ${Math.round(c*100)}%`,x:n-.05,y:G-.11,size:.016,color:me(oe,c),depth:1,startFrame:$,revealSpan:1,maxWidthEm:18}),s.push({id:"trace:answer",kind:"trace-hud",text:l,x:n-.28,y:G-.17,size:.016,color:[...oe,.92],depth:.95,startFrame:$,revealSpan:1,maxWidthEm:44,maxLines:2})}const d=((x=e.evidence)==null?void 0:x.length)??0;return s.push({id:"trace:receipt",kind:"trace-receipt",text:`[ ${d} SOURCES SEALED ]`,x:D[7]-.14,y:G-.07,size:.015,color:[...Se,.85],depth:.9,startFrame:$,revealSpan:1,maxWidthEm:24,hitPadX:.05,hitPadY:.04,ariaLabel:`Composition receipt: ${d} sources, analysed ${((w=e.raw)==null?void 0:w.memoriesAnalyzed)??d} memories`}),s}}function bt(t,e){return[pt(t),new yt(t)]}var _t=ve(""),wt=ve('
'),Et=ve('
',1);function Ft(t,e){$e(e,!0);let s=W(""),u=W(!1),f=W(null),i=W(null),d=W(null),a=W(null),x=null;function w(){const o=m(i);if(!o)return[];const h=new Set((o.contradictions??[]).flatMap(b=>{var T,L;return[(T=b.stronger)==null?void 0:T.id,(L=b.weaker)==null?void 0:L.id]}).filter(Boolean)),y=(o.evidence??[]).map((b,T)=>{var L;return{id:b.id||`evidence:${T}`,score:.4+.6*c(b.trust??.5),hue:h.has(b.id)?_e.scarlet:_e.forward,energy:.45+.55*c(b.trust??.5),metric2:c(b.trust??.5),scar:h.has(b.id),selected:b.id===((L=o.recommended)==null?void 0:L.memory_id),kind:"reasoning-evidence",payload:b}});return je(y,{maxRadius:.9,minCellR:.016,maxCellR:.06})}function c(o){return Math.min(1,Math.max(0,Number.isFinite(o)?o:.5))}function l(o,h){const y=new Ke(o);return x=y,y.setCells(w()),[{compute:T=>y.compute(T),render:T=>y.render(T),dispose:()=>{y.dispose(),x===y&&(x=null)}},...bt(o)]}Ne(()=>{var o;(o=m(i))==null||o.evidence.length,x==null||x.setCells(w())});const n=["What port does the dev server use?","Should I enable prefix caching with vLLM?","How does FSRS-6 trust scoring work?","Why did the benchmark score drop after the parser change?"];async function p(){const o=m(s).trim();if(!(!o||m(u))){I(u,!0),I(f,null),I(i,null),I(d,null);try{const h=await Ye.deepReference(o,20);I(i,et(h),!0)}catch(h){I(f,h instanceof Error?h.message:"Unknown error",!0)}finally{I(u,!1)}}}const v=be(()=>{var y,b;if(m(u))return"Reasoning in progress.";if(m(f))return`Error: ${m(f)}`;if(!m(i))return"Ask a question to trace how Vestige forms a decision from memory.";const o=m(i),h=((y=o.recommended)==null?void 0:y.answer_preview)??"no recommendation";return`Decision trace for "${m(s)}". ${o.evidence.length} evidence memories, ${o.contradictions.length} contradiction${o.contradictions.length===1?"":"s"}, ${o.superseded.length} superseded. Recommendation: ${h}. Confidence ${Math.round((((b=o.recommended)==null?void 0:b.trust_score)??0)*100)} percent.`});function S(o){const h=o.payload;I(d,(h==null?void 0:h.ariaLabel)??(h==null?void 0:h.preview)??`${o.kind} selected`,!0)}function _(o){var h,y;(o.metaKey||o.ctrlKey)&&o.key.toLowerCase()==="k"&&(o.preventDefault(),(h=m(a))==null||h.focus(),(y=m(a))==null||y.select())}Te(()=>{var o;return(o=m(a))==null||o.focus(),window.addEventListener("keydown",_),m(s).trim()||(I(s,"What is the Vestige dashboard direction?"),p()),()=>window.removeEventListener("keydown",_)});var A=Et();Xe("q2v96u",o=>{Le(()=>{Fe.title="Reasoning Theater · Vestige"})});var C=Pe(A);{let o=be(()=>`reasoning-trace:${m(s)||"empty"}`);ze(C,{organ:"reasoning",get seed(){return m(o)},get scene(){return m(i)},passes:l,get loading(){return m(u)},get error(){return m(f)},emptyLabel:"ASK A QUESTION - PRESS CMD+K - WATCH THE DECISION FORM",onpick:S})}var k=j(C,2),M=j(pe(k),2);Oe(M),De(M,o=>I(a,o),()=>m(a));var H=j(M,2);Ue(H,21,()=>n,We,(o,h)=>{var y=_t(),b={};de(()=>{b!==(b=m(h))&&(y.value=(y.__value=m(h))??"")}),ue(o,y)}),ie(H),Be(2),ie(k);var q=j(k,2),K=pe(q,!0);ie(q);var ne=j(q,2);{var N=o=>{var h=wt(),y=pe(h,!0);ie(h),de(()=>ye(y,m(d))),ue(o,h)};Ge(ne,o=>{m(d)&&o(N)})}de(()=>ye(K,m(v))),Ie("submit",k,o=>{o.preventDefault(),p()}),Ve(M,()=>m(s),o=>I(s,o)),ue(t,A),Me()}export{Ft as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js.br b/apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js.br deleted file mode 100644 index a2f8f68108d96b246e51366d30fd1f6cef19ca4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9864 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 diff --git a/apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js.gz b/apps/dashboard/build/_app/immutable/nodes/20.Cj35A6gq.js.gz deleted file mode 100644 index 171ca6c42a27871e572bea73c6d23c448bf3f45a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11132 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�KPsT~;05?ufS4il#J9ix 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 O+W!U$u6$0MZ2$nwP}eyC diff --git a/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js b/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js new file mode 100644 index 0000000..682d48d --- /dev/null +++ b/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js @@ -0,0 +1,198 @@ +var Te=Object.defineProperty;var Ie=(t,e,s)=>e in t?Te(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var R=(t,e,s)=>Ie(t,typeof e!="symbol"?e+"":e,s);import"../chunks/Bzak7iHL.js";import{o as $e,e as Ne,s as be}from"../chunks/DAau0uzT.js";import{p as Pe,j as Me,g as v,aH as Le,Y as de,a as ue,b as Fe,d as W,h as Be,X as q,s as N,f as ye,u as _e,$ as De,c as pe,r as se,af as Ge}from"../chunks/CGq8RnJq.js";import{b as Ue,i as Oe}from"../chunks/Ccqjq5DS.js";import{e as Xe,r as We,i as Ye}from"../chunks/DqfV0sZu.js";import{h as Ve}from"../chunks/De_e6MzK.js";import{b as ze}from"../chunks/DGM4cicq.js";import{a as we}from"../chunks/D35IQVqe.js";import{R as He}from"../chunks/BpEKQwpr.js";import{T as qe}from"../chunks/D7ozXiSB.js";import{r as Ke}from"../chunks/BMB5u1EX.js";import{L as je,F as fe,l as Ee}from"../chunks/DETSv_kY.js";const Qe={intent:"Intent classification",retrieve:"Memory retrieval",activate:"Activation expansion",evidence:"Evidence grounding",contradiction:"Contradiction check",synthesis:"Synthesis",recommendation:"Recommendation",receipt:"Composition receipt"},Je=["intent","retrieve","activate","evidence","contradiction","synthesis","recommendation","receipt"];function F(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function y(t,e=""){return typeof t=="string"?t:t==null?e:String(t)}function J(t,e=0){return typeof t=="number"&&Number.isFinite(t)?t:e}function V(t){return Math.max(0,Math.min(1,t))}function Z(t){const e=J(t,0);return V(e>1?e/100:e)}function Ze(t){return t==="primary"||t==="supporting"||t==="contradicting"||t==="superseded"?t:"supporting"}function K(t,e=""){const s=Z(t.trust??t.trust_score??0);return{id:y(t.id??t.memory_id??e),trust:s,date:y(t.date??t.created_at??""),role:Ze(t.role),preview:y(t.preview??t.answer_preview??t.content??""),nodeType:t.node_type?y(t.node_type):t.nodeType?y(t.nodeType):void 0}}function X(t,e,s){return s?{kind:t,id:e,scalar:s}:{kind:t,id:e||`${t}:unknown`}}function P(t,e){return{kind:"scalar",id:`deep_reference.${t}`,scalar:{name:t,value:e}}}function et(t){var f,m,g,w;const e=F(t),u=(Array.isArray(e.evidence)?e.evidence.map(F):[]).map(n=>K(n)).filter(n=>n.id.length>0),h=F(e.recommended),i=Object.keys(h).length>0||u.length>0?{answer_preview:y(h.answer_preview??((f=u[0])==null?void 0:f.preview)??""),memory_id:y(h.memory_id??((m=u[0])==null?void 0:m.id)??""),trust_score:Z(h.trust_score??((g=u[0])==null?void 0:g.trust)??0),date:y(h.date??((w=u[0])==null?void 0:w.date)??"")}:null,a=(Array.isArray(e.contradictions)?e.contradictions.map(F):Array.isArray(e.claim_conflicts)?e.claim_conflicts.map(F):[]).map(n=>{const A=F(n.stronger),L=F(n.weaker);if(Object.keys(A).length>0||Object.keys(L).length>0){const ne=K(A),re=K(L);return{stronger:ne,weaker:re,topic_overlap:V(J(n.topic_overlap,0)),summary:y(n.summary,`Trust-weighted conflict: ${ne.id.slice(0,8)} over ${re.id.slice(0,8)}`)}}const O=K({id:n.a_id,role:"contradicting"}),le=K({id:n.b_id,role:"contradicting"});return{stronger:O,weaker:le,topic_overlap:V(J(n.topic_overlap,0)),summary:y(n.summary??n.reason,"Trust-weighted conflict between high-FSRS memories.")}}).filter(n=>n.stronger.id||n.weaker.id),E=(Array.isArray(e.superseded)?e.superseded.map(F):[]).map(n=>n.id||n.superseded_by?{id:y(n.id),preview:y(n.preview??""),trust:Z(n.trust??0),date:y(n.date??""),superseded_by:y(n.superseded_by??(i==null?void 0:i.memory_id)??""),reason:y(n.reason??"Superseded by newer memory with higher trust.")}:{id:y(n.old_id),preview:y(n.preview??""),trust:Z(n.trust??0),date:y(n.date??""),superseded_by:y(n.new_id??(i==null?void 0:i.memory_id)??""),reason:y(n.reason??"Superseded by newer memory with higher trust.")}).filter(n=>n.id||n.superseded_by),c=Z(e.confidence),l=J(e.memoriesAnalyzed??e.memories_analyzed,u.length),r=J(e.activationExpanded??e.activation_expanded,0),p=y(e.intent??""),b=y(e.reasoning??e.guidance??""),k=y(e.guidance??""),x=y(e.composition_event_id??""),S=y(e.compositionWriteStatus??e.composition_write_status??""),C=x||S,T=x.length>0,M=u.map((n,A)=>({source:X("memory",n.id),index:A,label:n.preview||n.id.slice(0,8),retention:V(n.trust),trust:V(n.trust),lastAccessed:n.date||void 0,tags:[n.role,...n.nodeType?[n.nodeType]:[]],type:n.nodeType??"memory"})),G=new Map(M.map(n=>[n.source.id,n.index])),ee=a.flatMap((n,A)=>{const L=G.get(n.stronger.id),O=G.get(n.weaker.id);return L==null||O==null?[]:[{source:X("pair",`contradiction:${n.stronger.id}:${n.weaker.id}`),sourceIndex:L,targetIndex:O,weight:Math.max(.2,n.topic_overlap||.5),kind:"contradiction"}]}),U=[];a.length>0&&U.push({source:X("event",`deep_reference.contradictions.${a.length}`),type:"ReasoningContradictionInterrupt",targetIndex:-1,frame:250,energy:a.length}),E.length>0&&U.push({source:X("event",`deep_reference.superseded.${E.length}`),type:"ReasoningSupersessionInterrupt",targetIndex:-1,frame:330,energy:E.length});const te=[];C&&te.push({source:T?X("receipt",x):P("compositionWriteStatus",S==="persisted"?1:0),label:T?`receipt ${x.slice(0,8)}`:S,nodeIndices:M.map(n=>n.index)});const $=(n,A,L,O,le,ne,re,Ce="none")=>({index:n,kind:A,label:Qe[A],count:L,confidence:V(O),lit:L>0||O>0,provenance:ne,exposed:le,not_exposed_by_backend:re,interrupt:Ce}),ce=Je.map((n,A)=>{switch(n){case"intent":return $(A,n,p?1:0,p?c:0,{intent:p},P("intent_present",p?1:0),["raw classifier trace"]);case"retrieve":return $(A,n,l||u.length,c,{memoriesAnalyzed:l,evidence_count:u.length},P("memoriesAnalyzed",l),["candidate ids discarded before evidence"]);case"activate":return $(A,n,r,r>0?c:0,{activationExpanded:r},P("activationExpanded",r),["activation path/map"]);case"evidence":return $(A,n,u.length,u.length>0?c:0,{evidence:u},P("evidence_count",u.length),["reranker discarded candidates"]);case"contradiction":return $(A,n,a.length,a.length>0?c:0,{contradictions:a,claim_conflicts:e.claim_conflicts??[]},P("contradiction_count",a.length),["full claim graph"],a.length>0?"contradiction":"none");case"synthesis":return $(A,n,b||k?1:0,b||k?c:0,{reasoning:b,guidance:k},P("synthesis_present",b||k?1:0),["token-level chain internals"]);case"recommendation":return $(A,n,i!=null&&i.memory_id?1:0,(i==null?void 0:i.trust_score)??0,{recommended:i},i!=null&&i.memory_id?X("memory",i.memory_id):P("recommended_present",0),["alternative recommendations"]);case"receipt":return $(A,n,C?1:0,C?c:0,{composition_event_id:x,compositionWriteStatus:S},T?X("receipt",x):P("compositionWriteStatus",S==="persisted"?1:0),["separate receipt field"],E.length>0?"supersession":"none")}});return{organ:"reasoning",nodes:M,edges:ee,events:U,receipts:te,scalars:{confidence:c,memoriesAnalyzed:l,activationExpanded:r,evidenceCount:u.length,contradictionCount:a.length,supersededCount:E.length,compositionPersisted:T?1:0},alive:!!(p||b||k||u.length||a.length||E.length||i!=null&&i.memory_id||C),stages:ce,evidence:u,contradictions:a,superseded:E,recommended:i,raw:e}}const z=[-.86,-.526,-.214,.074,.335,.562,.747,.86],tt=["INTENT","RETRIEVE","ACTIVATE","EVIDENCE","CHALLENGE","SYNTH","DECIDE","SEAL"],xe=0,nt=3,Ae=6,rt=7,st={primary:.04,supporting:.24,contradicting:-.22,superseded:-.48},it=.052,at=6,ot=z[nt]-.02,ct=.14;function lt(t){var c,l;if(!t||!t.alive)return null;const e=String(((c=t.raw)==null?void 0:c.query)??""),s=(t.stages??[]).slice(0,z.length).map((r,p)=>({index:p,kind:(r==null?void 0:r.kind)??String(p),label:(r==null?void 0:r.label)??(r==null?void 0:r.kind)??"",short:tt[p]??((r==null?void 0:r.kind)??"").toUpperCase(),x:z[p],lit:!!(r!=null&&r.lit),confidence:(r==null?void 0:r.confidence)??0,count:(r==null?void 0:r.count)??0})),u=new Map;for(const r of t.evidence??[]){const p=u.get(r.role)??[];p.push(r),u.set(r.role,p)}const h=[];for(const[r,p]of u){const b=st[r],k=p.slice(0,at);k.forEach((x,S)=>{const C=b+(S-(k.length-1)/2)*it,T=ot+S/Math.max(1,k.length-1)*ct;h.push({id:x.id,role:r,trust:x.trust,preview:x.preview,x:T,y:C})})}const i=t.recommended!=null?{x:z[Ae],y:xe,confidence:Math.max(0,Math.min(1,t.recommended.trust_score))}:null,d=i?h.map(r=>({fromX:r.x,fromY:r.y,toX:i.x,toY:i.y,trust:r.trust,role:r.role,sign:r.role==="contradicting"?-1:1})):[],a=new Map(h.map(r=>[r.id,r])),_=(t.contradictions??[]).map(r=>{const p=a.get(r.stronger.id),b=a.get(r.weaker.id);return!p||!b?null:{ax:p.x,ay:p.y,bx:b.x,by:b.y,strength:Math.max(.35,r.topic_overlap||.5)}}).filter(r=>r!==null),E=(t.superseded??[]).map(r=>{const p=a.get(r.id);return p?{x:p.x,y:p.y,toX:(i==null?void 0:i.x)??z[Ae],toY:(i==null?void 0:i.y)??xe}:null}).filter(r=>r!==null);return{query:e,gates:s,evidence:h,ribbons:d,nucleus:i,fringes:_,scars:E,receiptX:z[rt],sourceCount:((l=t.evidence)==null?void 0:l.length)??0}}const dt=` +struct Params { + frame: f32, loopPhase: f32, nodeCount: f32, edgeCount: f32, + pathCount: f32, pulse: f32, viewportW: f32, viewportH: f32, + brightness: f32, demoId: f32, time: f32, captureMode: f32, + liveKind: f32, liveFrame: f32, liveEnergy: f32, projectionDays: f32, + cursorX: f32, cursorY: f32, cursorVx: f32, cursorVy: f32, +}; + +// Instance record (12 floats) — mirrors reasoning-geometry-pass INSTANCE_FLOATS. +struct Inst { + a: vec2f, // endpoint A / center (NDC) + b: vec2f, // endpoint B (== a for points) + kind: f32, // 0 beam, 1 ribbon, 2 nucleus, 3 fringe, 4 scar + thickness: f32, // NDC half-width + trust: f32, // 0..1 + sign: f32, // +1 support / -1 oppose + energy: f32, // 0..1 + seed: f32, // per-instance phase + extra: f32, // kind-specific (fringe strength / nucleus confidence) + pad: f32, +}; + +@group(0) @binding(0) var params: Params; +@group(0) @binding(1) var insts: array; + +const TAU: f32 = 6.28318530718; +const QUAD = array( + vec2f(0.0, 0.0), vec2f(1.0, 0.0), vec2f(1.0, 1.0), + vec2f(0.0, 0.0), vec2f(1.0, 1.0), vec2f(0.0, 1.0) +); + +struct VSOut { + @builtin(position) clip: vec4f, + @location(0) world: vec2f, // NDC position of this fragment + @location(1) @interpolate(flat) idx: u32, +}; + +fn aspect() -> f32 { return max(0.0001, params.viewportW / max(1.0, params.viewportH)); } + +// smoothstep-based value-suppressing palette (Correll/Moritz/Heer): low trust → +// neutral grey (never jitter), high trust → vivid. base is the category hue. +fn vsup(base: vec3f, trust: f32) -> vec3f { + let s = smoothstep(0.0, 1.0, clamp(trust, 0.0, 1.0)); + let neutral = vec3f(0.42, 0.46, 0.52); + let bright = 0.72 + 0.28 * s; + return mix(neutral, base, s) * bright; +} + +// PRGn-style diverging hue by signed influence: + = green (support), − = purple +// (oppose). |mag| drives saturation; zero-point kept off pure white. +fn prgn(sign: f32, mag: f32) -> vec3f { + let green = vec3f(0.0, 0.85, 0.45); + let purple = vec3f(0.55, 0.15, 0.75); + let base = select(purple, green, sign >= 0.0); + return mix(vec3f(0.35, 0.37, 0.4), base, clamp(mag, 0.0, 1.0)); +} + +@vertex +fn vs_geo(@builtin(vertex_index) vi: u32, @builtin(instance_index) ii: u32) -> VSOut { + var out: VSOut; + let inst = insts[ii]; + let corner = QUAD[vi]; + let asp = aspect(); + + // Bounding quad: for line-like kinds (beam/ribbon/scar/fringe) expand along + // the A→B segment plus thickness on the perpendicular; for point kinds + // (nucleus) a square of side 2*thickness around A. + var pos: vec2f; + let is_point = inst.kind == 2.0; + if (is_point) { + let r = inst.thickness + 0.04; // padding for glow/rings + pos = inst.a + (corner - vec2f(0.5)) * (2.0 * r); + } else { + let dir = inst.b - inst.a; + let len = max(1e-4, length(dir)); + let t_hat = dir / len; + let n_hat = vec2f(-t_hat.y, t_hat.x); + let half_w = inst.thickness + 0.03; // padding for AA/glow + // corner.x runs along the segment (0..1), corner.y across (-1..1) + let along = corner.x; + let across = (corner.y - 0.5) * 2.0; + pos = inst.a + t_hat * (along * len) + n_hat * (across * half_w); + } + + // aspect-correct so circles stay round (mirror the text pass convention). + var clip = pos; + clip.x = clip.x / max(asp, 1.0); + clip.y = clip.y * min(asp, 1.0); + out.clip = vec4f(clip, 0.0, 1.0); + out.world = pos; + out.idx = ii; + return out; +} + +// ── Per-kind SDF shading. Each returns premultiplied additive HDR rgb. ──────── +// FLEET: fill these five. Each is a PURE function of (inst, p, t) → vec3f. Keep +// them deterministic (use params.time via t), additive (return black to skip a +// pixel), and honest (brightness ∝ the real trust/energy/confidence fields). + +fn shade_beam(inst: Inst, p: vec2f, t: f32) -> vec3f { + // BEAM: a bright emissive causal line A→B along y with a flowing pulse. + let d = sdf_segment(p, inst.a, inst.b); + let core = smoothstep(inst.thickness, 0.0, d); + let glow = smoothstep(inst.thickness * 4.0, 0.0, d) * 0.35; + // flow pulse travelling toward the decision (left→right) + let along = clamp((p.x - inst.a.x) / max(1e-4, inst.b.x - inst.a.x), 0.0, 1.0); + let flow = 0.5 + 0.5 * sin(along * 18.0 - t * 3.0); + let cyan = vec3f(0.0, 0.96, 0.83); + return cyan * inst.energy * (core * (0.6 + 0.6 * flow) + glow); +} + +fn shade_ribbon(inst: Inst, p: vec2f, t: f32) -> vec3f { + // RIBBON: tapered (wide at nucleus, narrow at source), UV-scroll flow toward + // the decision, head-bright opacity gradient, PRGn hue by sign. + let along = clamp(dot(p - inst.a, inst.b - inst.a) / max(1e-6, dot(inst.b - inst.a, inst.b - inst.a)), 0.0, 1.0); + let d = sdf_segment(p, inst.a, inst.b); + let taper = inst.thickness * mix(0.35, 1.0, along); // widen toward B (nucleus) + let core = smoothstep(taper, 0.0, d); + // flowing dashes travelling A→B (causal direction) + let flow = 0.5 + 0.5 * sin(along * 26.0 - t * 4.0 - inst.seed); + let headBright = mix(0.35, 1.0, along); // brighter toward the decision head + let hue = prgn(inst.sign, inst.trust); + return hue * inst.energy * core * flow * headBright; +} + +fn shade_nucleus(inst: Inst, p: vec2f, t: f32) -> vec3f { + // NUCLEUS: recommendation core; stability = confidence. Coherent (tight solid + // rings) when confident, scattered/soft when not. Confidence in inst.extra. + let c = inst.extra; + let r = length(p - inst.a); + let coherence = smoothstep(0.0, 1.0, c); + let coreR = inst.thickness * (0.5 + 0.3 * c); + let core = smoothstep(coreR, 0.0, r); + // 1..4 concentric rings, more + tighter as confidence rises + let ringCount = 1.0 + floor(c * 3.0); + let ringPhase = r / max(1e-4, inst.thickness) * ringCount * TAU; + let ring = pow(max(0.0, sin(ringPhase - t * 1.5)), 6.0) * smoothstep(inst.thickness * 1.6, inst.thickness * 0.4, r) * coherence; + let hot = vec3f(0.91, 1.0, 0.72); + return vsup(hot, c) * (core * 1.4 + ring * 0.8); +} + +fn shade_fringe(inst: Inst, p: vec2f, t: f32) -> vec3f { + // FRINGE: two-source interference between contradicting evidence a,b. Scarlet + // standing wave (cos^2) that breathes; reads as "these two conflict". + let r1 = distance(p, inst.a); + let r2 = distance(p, inst.b); + let lambda = 0.05; + let phase = TAU * (r1 - r2) / lambda - t * 2.0; + let fr = cos(phase * 0.5); + let intensity = fr * fr; + // confine the fringe to the region BETWEEN the two sources + let mid = (inst.a + inst.b) * 0.5; + let span = distance(inst.a, inst.b) * 0.6 + 0.06; + let mask = smoothstep(span, span * 0.4, distance(p, mid)); + let scarlet = vec3f(0.95, 0.08, 0.14); + return scarlet * intensity * mask * inst.extra; +} + +fn shade_scar(inst: Inst, p: vec2f, t: f32) -> vec3f { + // SCAR: superseded evidence leaves a dim etched mark at A, with an AMBER + // transfer filament flowing A→B (into the replacement). + let dScar = sdf_segment(p, inst.a - vec2f(0.02, 0.0), inst.a + vec2f(0.02, 0.0)); + let scar = smoothstep(0.006, 0.0, dScar) * 0.5; + let dFil = sdf_segment(p, inst.a, inst.b); + let along = clamp(dot(p - inst.a, inst.b - inst.a) / max(1e-6, dot(inst.b - inst.a, inst.b - inst.a)), 0.0, 1.0); + let flow = 0.5 + 0.5 * sin(along * 20.0 - t * 3.5); + let fil = smoothstep(inst.thickness * 0.6, 0.0, dFil) * flow * (1.0 - along * 0.4); + let amber = vec3f(1.0, 0.82, 0.4); + let ash = vec3f(0.45, 0.4, 0.38); + return ash * scar + amber * fil * 0.7; +} + +// segment SDF helper +fn sdf_segment(p: vec2f, a: vec2f, b: vec2f) -> f32 { + let pa = p - a; + let ba = b - a; + let h = clamp(dot(pa, ba) / max(1e-6, dot(ba, ba)), 0.0, 1.0); + return length(pa - ba * h); +} + +@fragment +fn fs_geo(in: VSOut) -> @location(0) vec4f { + let inst = insts[in.idx]; + let p = in.world; + let t = params.time; + var rgb = vec3f(0.0); + let k = inst.kind; + if (k == 0.0) { rgb = shade_beam(inst, p, t); } + else if (k == 1.0) { rgb = shade_ribbon(inst, p, t); } + else if (k == 2.0) { rgb = shade_nucleus(inst, p, t); } + else if (k == 3.0) { rgb = shade_fringe(inst, p, t); } + else if (k == 4.0) { rgb = shade_scar(inst, p, t); } + rgb = rgb * params.brightness; + // additive: alpha carries nothing; premultiplied rgb is the contribution. + return vec4f(rgb, 1.0); +} +`,ie=12,he=512,j={beam:0,ribbon:1,nucleus:2,fringe:3,scar:4};class ut{constructor(e){R(this,"engine");R(this,"layout",null);R(this,"pipeline",null);R(this,"bindGroup",null);R(this,"instanceBuffer",null);R(this,"instanceCount",0);R(this,"ready",!1);this.engine=e}uploadScene(e){this.layout=(e==null?void 0:e.organ)==="reasoning"?lt(e):null,this.ensurePipeline(),this.uploadInstances()}ensurePipeline(){if(this.pipeline||this.ready)return;const e=this.engine.gpuDevice;if(!e||!this.engine.paramsBuffer)return;this.ready=!0,this.instanceBuffer=e.createBuffer({label:"reasoning-geometry-instances",size:he*ie*4,usage:GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST});const s=e.createShaderModule({label:"reasoning-geometry-wgsl",code:dt}),u=e.createBindGroupLayout({entries:[{binding:0,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"uniform"}},{binding:1,visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,buffer:{type:"read-only-storage"}}]});this.bindGroup=e.createBindGroup({layout:u,entries:[{binding:0,resource:{buffer:this.engine.paramsBuffer}},{binding:1,resource:{buffer:this.instanceBuffer}}]});const h={color:{srcFactor:"one",dstFactor:"one",operation:"add"},alpha:{srcFactor:"one",dstFactor:"one",operation:"add"}};this.pipeline=e.createRenderPipeline({label:"reasoning-geometry-pipeline",layout:e.createPipelineLayout({bindGroupLayouts:[u]}),vertex:{module:s,entryPoint:"vs_geo"},fragment:{module:s,entryPoint:"fs_geo",targets:[{format:this.engine.sceneFormat,blend:h}]},primitive:{topology:"triangle-list"}})}uploadInstances(){const e=this.engine.gpuDevice;if(!e||!this.instanceBuffer)return;const s=this.layout;if(!s){this.instanceCount=0;return}const u=new Float32Array(he*ie);let h=0;const i=d=>{h>=he||(u.set(d,h*ie),h++)};for(let d=0;d{const e=Ke(t);return[e[0],e[1],e[2]]},ve=H("#00F5D4"),Re=H("#9DFFEB"),ft=H("#FF3B30"),ht=H("#FFD166"),ae=H("#E9FFB7"),Y=[.42,.46,.52],me=H("#6B7A88"),B=[-.86,-.526,-.214,.074,.335,.562,.747,.86],D=0,mt=["INTENT","RETRIEVE","ACTIVATE","EVIDENCE","CHALLENGE","SYNTH","DECIDE","SEAL"],gt={primary:.04,supporting:.24,contradicting:-.22,superseded:-.48},Se=.052,oe=6,vt=t=>t*t*(3-2*t);function ge(t,e){const s=vt(Math.max(0,Math.min(1,e))),u=.72+.28*s,h=(Y[0]+(t[0]-Y[0])*s)*u,i=(Y[1]+(t[1]-Y[1])*s)*u,d=(Y[2]+(t[2]-Y[2])*s)*u,a=.4+.6*s;return[Math.min(1,h),Math.min(1,i),Math.min(1,d),a]}function ke(t){switch(t){case"primary":return ve;case"supporting":return Re;case"contradicting":return ft;case"superseded":return ht}}function Q(t){return t.replace(/[—–]/g,"-").replace(/[‘’]/g,"'").replace(/[“”]/g,'"').replace(/…/g,"...").replace(/[^\x20-\x7E]/g,"?")}const I=-1e5;class yt{constructor(e){R(this,"text");R(this,"scene",null);R(this,"ready",!1);R(this,"initPromise",null);this.text=new qe(e)}uploadScene(e){this.scene=(e==null?void 0:e.organ)==="reasoning"?e:null,this.ensureReady().then(()=>this.text.setText(this.build()))}render(e){this.text.render(e)}pickAt(e,s){return this.text.pickAt(e,s)}dispose(){this.text.dispose()}async ensureReady(){this.initPromise||(this.initPromise=this.text.init().then(()=>void(this.ready=!0))),await this.initPromise}build(){var a,_,E;const e=this.scene;if(!e||!e.alive)return[];const s=[],u=Q(String(((a=e.raw)==null?void 0:a.query)??"")).slice(0,60);s.push({id:"trace:query",kind:"trace-query",text:u?`> ${u}`:"> (trace)",x:-.94,y:.82,size:.03,color:[...ae,1],weight:.95,depth:1,startFrame:I,revealSpan:1,maxWidthEm:60});const h=e.stages??[];for(let c=0;c{const x=r+(k-(p.length-1)/2)*Se,S=Q(b.preview).replace(/\s+/g," ").trim().slice(0,46);s.push({id:`trace:ev:${b.id}`,kind:"trace-evidence",text:`${S} · ${Math.round(b.trust*100)}%`,x:B[3]-.02,y:x,size:.016,color:ge(ke(c),b.trust),weight:.4+.5*b.trust,depth:.6+.4*b.trust,startFrame:I,revealSpan:1,maxWidthEm:52,hitPadX:.03,hitPadY:.02,ariaLabel:`${c} evidence, trust ${Math.round(b.trust*100)}%: ${S}`,preview:S})}),l.length>oe&&s.push({id:`trace:super:${c}`,kind:"trace-supernode",text:`+${l.length-oe} more ${c}`,x:B[3]-.02,y:r-(oe/2+1)*Se,size:.014,color:[...me,.7],depth:.6,startFrame:I,revealSpan:1,maxWidthEm:30}),s.push({id:`trace:lanelabel:${c}`,kind:"trace-hud",text:c.toUpperCase(),x:B[3]-.16,y:r,size:.013,color:[...ke(c),.55],depth:.7,startFrame:I,revealSpan:1,maxWidthEm:14})}if(e.recommended){const c=Math.max(0,Math.min(1,e.recommended.trust_score)),l=Q(e.recommended.answer_preview).replace(/\s+/g," ").trim().slice(0,48),r=B[6],p=c>=.6;s.push({id:"trace:nucleus",kind:"trace-recommendation",text:p?"O":"o",x:r,y:D,size:.05+.05*c,color:ge(ae,c),weight:.6+.4*c,depth:1,startFrame:I,revealSpan:1,maxWidthEm:4,hitPadX:.06,hitPadY:.06,ariaLabel:`Recommendation, ${Math.round(c*100)}% confidence: ${l}`,preview:l}),s.push({id:"trace:reclabel",kind:"trace-hud",text:`${p?"LOCKED":"OPEN"} · ${Math.round(c*100)}%`,x:r-.05,y:D-.11,size:.016,color:ge(ae,c),depth:1,startFrame:I,revealSpan:1,maxWidthEm:18}),s.push({id:"trace:answer",kind:"trace-hud",text:l,x:r-.28,y:D-.17,size:.016,color:[...ae,.92],depth:.95,startFrame:I,revealSpan:1,maxWidthEm:44,maxLines:2})}const d=((_=e.evidence)==null?void 0:_.length)??0;return s.push({id:"trace:receipt",kind:"trace-receipt",text:`[ ${d} SOURCES SEALED ]`,x:B[7]-.14,y:D-.07,size:.015,color:[...Re,.85],depth:.9,startFrame:I,revealSpan:1,maxWidthEm:24,hitPadX:.05,hitPadY:.04,ariaLabel:`Composition receipt: ${d} sources, analysed ${((E=e.raw)==null?void 0:E.memoriesAnalyzed)??d} memories`}),s}}function bt(t,e){return[pt(t),new yt(t)]}var _t=ye(""),wt=ye('
'),Et=ye('
',1);function Ft(t,e){Pe(e,!0);let s=W(""),u=W(!1),h=W(null),i=W(null),d=W(null),a=W(null),_=null,E=[];function c(){const o=v(i);if(!o||(o.evidence??[]).length===0){const g=E.map((w,n)=>({id:w.id||`rest:${n}`,score:.25+.4*l(w.trust??.5),hue:fe.bridge,energy:.14+.26*l(w.trust??.5),metric2:l(w.trust??.5),kind:"reasoning-rest",payload:w}));return Ee(g,{maxRadius:.9,minCellR:.014,maxCellR:.045})}const f=new Set((o.contradictions??[]).flatMap(g=>{var w,n;return[(w=g.stronger)==null?void 0:w.id,(n=g.weaker)==null?void 0:n.id]}).filter(Boolean)),m=(o.evidence??[]).map((g,w)=>{var n;return{id:g.id||`evidence:${w}`,score:.4+.6*l(g.trust??.5),hue:f.has(g.id)?fe.scarlet:fe.forward,energy:.45+.55*l(g.trust??.5),metric2:l(g.trust??.5),scar:f.has(g.id),selected:g.id===((n=o.recommended)==null?void 0:n.memory_id),kind:"reasoning-evidence",payload:g}});return Ee(m,{maxRadius:.9,minCellR:.016,maxCellR:.06})}function l(o){return Math.min(1,Math.max(0,Number.isFinite(o)?o:.5))}function r(o,f){const m=new je(o);return _=m,m.setCells(c()),[{compute:w=>m.compute(w),render:w=>m.render(w),dispose:()=>{m.dispose(),_===m&&(_=null)}},...bt(o)]}Me(()=>{var o;(o=v(i))==null||o.evidence.length,_==null||_.setCells(c())});const p=["What port does the dev server use?","Should I enable prefix caching with vLLM?","How does FSRS-6 trust scoring work?","Why did the benchmark score drop after the parser change?"];async function b(){const o=v(s).trim();if(!(!o||v(u))){N(u,!0),N(h,null),N(i,null),N(d,null);try{const f=await we.deepReference(o,20);N(i,et(f),!0)}catch(f){N(h,f instanceof Error?f.message:"Unknown error",!0)}finally{N(u,!1)}}}const k=_e(()=>{var m,g;if(v(u))return"Reasoning in progress.";if(v(h))return`Error: ${v(h)}`;if(!v(i))return"Ask a question to trace how Vestige forms a decision from memory.";const o=v(i),f=((m=o.recommended)==null?void 0:m.answer_preview)??"no recommendation";return`Decision trace for "${v(s)}". ${o.evidence.length} evidence memories, ${o.contradictions.length} contradiction${o.contradictions.length===1?"":"s"}, ${o.superseded.length} superseded. Recommendation: ${f}. Confidence ${Math.round((((g=o.recommended)==null?void 0:g.trust_score)??0)*100)} percent.`});function x(o){const f=o.payload;N(d,(f==null?void 0:f.ariaLabel)??(f==null?void 0:f.preview)??`${o.kind} selected`,!0)}function S(o){var f,m;(o.metaKey||o.ctrlKey)&&o.key.toLowerCase()==="k"&&(o.preventDefault(),(f=v(a))==null||f.focus(),(m=v(a))==null||m.select())}$e(()=>{var o;return(o=v(a))==null||o.focus(),window.addEventListener("keydown",S),we.memories.list({limit:"80"}).then(f=>{E=f.memories.map((m,g)=>{const w=l(m.retentionStrength);return{id:m.id||`rest:${g}`,trust:.35+.4*w,date:"",role:"supporting",preview:""}}),_==null||_.setCells(c())}).catch(()=>{}),()=>window.removeEventListener("keydown",S)});var C=Et();Ve("q2v96u",o=>{Be(()=>{De.title="Reasoning Theater · Vestige"})});var T=Le(C);{let o=_e(()=>`reasoning-trace:${v(s)||"empty"}`);He(T,{organ:"reasoning",get seed(){return v(o)},get scene(){return v(i)},passes:r,get loading(){return v(u)},get error(){return v(h)},emptyLabel:"ASK A QUESTION - PRESS CMD+K - WATCH THE DECISION FORM",onpick:x})}var M=q(T,2),G=q(pe(M),2);We(G),Ue(G,o=>N(a,o),()=>v(a));var ee=q(G,2);Xe(ee,21,()=>p,Ye,(o,f)=>{var m=_t(),g={};de(()=>{g!==(g=v(f))&&(m.value=(m.__value=v(f))??"")}),ue(o,m)}),se(ee),Ge(2),se(M);var U=q(M,2),te=pe(U,!0);se(U);var $=q(U,2);{var ce=o=>{var f=wt(),m=pe(f,!0);se(f),de(()=>be(m,v(d))),ue(o,f)};Oe($,o=>{v(d)&&o(ce)})}de(()=>be(te,v(k))),Ne("submit",M,o=>{o.preventDefault(),b()}),ze(G,()=>v(s),o=>N(s,o)),ue(t,C),Fe()}export{Ft as component}; diff --git a/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js.br b/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js.br new file mode 100644 index 0000000000000000000000000000000000000000..392e744b27a83198dbc92507f31454671e1a22a6 GIT binary patch literal 9985 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 LyeN5r`52!7WR{lw literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js.gz b/apps/dashboard/build/_app/immutable/nodes/20.DD0_N4PP.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..d4426252b17e58a234e0d9611819dd84d0660e50 GIT binary patch literal 11283 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 Jz%)E>000LJ9YFv9 literal 0 HcmV?d00001 diff --git a/apps/dashboard/build/index.html b/apps/dashboard/build/index.html index 485ca34..ddcf19b 100644 --- a/apps/dashboard/build/index.html +++ b/apps/dashboard/build/index.html @@ -16,7 +16,7 @@ - + @@ -38,7 +38,7 @@ Promise.all([ import("/dashboard/_app/immutable/entry/start.DeXDFAvJ.js"), - import("/dashboard/_app/immutable/entry/app.Bj0mlYI5.js") + import("/dashboard/_app/immutable/entry/app.BYOyN8KT.js") ]).then(([kit, app]) => { kit.start(app, element); }); diff --git a/apps/dashboard/build/index.html.br b/apps/dashboard/build/index.html.br index 57a12c039ef8ba93f28ac34367e0d241647b2df5..0acefe5dd414c6f7554825653e6baac1493e71e5 100644 GIT binary patch literal 572 zcmV-C0>k|qiwGc$(+%-Rn0R++S9PwbV9oK(m6H`xA!X)IffOtYNk_L$VZ-c_PF({`udC~P>@1+P~sj4_&>sk zj;>fOxWHB8>g|AO_#4V;JK?j!;de(ee$+2S;lS`QV(xpL2Miq7$CsqJ{kRKm$5+p1 z!^a&Qa_>8Z!*4@M8A+#WrQtI~CIfgmw-p_lGX=*KtGM7^D~J zuLEe5nx3ZJoX*zIXk9P`u1m>Yd;0M~)#sy&CJjhI<8XzdF+f(O=kK)41db_HEq_tP z*&F)MY1S83>L|Q$g(}y?Pg6amT>er<{&E}RpVEt^kGZ~p$&2FpHd1$ey0YKU>t6|E KR|z@@!kQ&rf*r2_ literal 571 zcmV-B0>u3riwGc$(+%-Rn0R-jSM^>~iP4es5F&4+R7lx5{(iMlzzZZ*GqV|SG4G=6 z8th2Epf3QP4cSt^^I*Zi3hwnYU>l-U-IP$Ycmq;-lxE*@rzfsFsd9r+?N*zIWMW#Hx^SEI)d?=kdW?%>45SJCrTS=5<@qb)O&3dLSJH-Yt( zo~8dDLb;j~1Y~u8(W(uOLxU({0pbb8NE#sazXXdhF({`udD0~h@_!7s7QwM@1ic9a z!5SnIn1m4s?}HRnPiF+X6{|K)H zmhMq-30K6`+bO2u@7aJ3(r1OkAJ3fGqjl*h92h>P{QZ!5z`${Rd`ZZIMw`aR#rSOa zn8B&|epER8A!YTcdVZ}meBRNVF+3?Q#@oz+&r6uBtPHP{yNj`!WJ<^cpakZID)%Vm z5VAMGw36^b(eOoG^$DB+G0l2FXG0-Wt{(FPeiT9D6Xd$z>rDCr={rI5j^U-ya2Be^IxI)nwAgj{zcUoow$E;zrzo_Eu z4Snb|>kB)56kfPOoonK!sh(19f9WHCxsCBp<@LtLTwlQCMR9!_>AODN*>C9euL82G J1RVrn%@Q~z9q9l7 diff --git a/apps/dashboard/build/index.html.gz b/apps/dashboard/build/index.html.gz index b56a7dd4e0c40853c95d9b8043e25d1014a273fb..a606243870183eafb33ffab33c14fff26ce44798 100644 GIT binary patch delta 752 zcmVLxFvWeZqZ`K@V=7H5k&(ZzNK8{~wQc(oyj@nGsZ5WH}XT zK8%|iQ=nH#fI65D2XT&&&4+_QTp$4xIXI7$1SKu`aloQ~&n688CP5|f${I%j6Gjti zN`fnyQJ!R2NrAkbOqkS?Bq;6$C`_gkw$t&Yq(qns-3@Tcu|O`2GH#Fm?a}OLHa)t* zKSM8^v?Pt*^M8e&qZpDzr!EM#|6R!Luil3QpH%q&@L zO2vn)meDygMLYql?tsxWgrV~PZfEo*FH+m(sO?P`tjj_Cr}=h+g}d` zJpEyF{EI%@94^AQ_r>$O(-;3A*i{Cs4IjOIR{wl_ez;wyc51iy=Ja5|M_X9mmp?u| zTwTO}=5jMjUmgtj`goK6c9z~dTn=B|d-h}|>wg0_%(l)!h-d+b67oX4< z(`vgkGnTO4Hduhi2W)S{!KAl<_elP_tuuWBd^nSQ0vu%f&TXfC?o1&)hM?5wUB9F( zn&WWv9~#zp@|B2xep%yA|9%`&j(RkDx0Ww2mk=q#b=}d delta 751 zcmVz2kTm7y($H2x+{|;-2nCZ*~^vG8|F|YffP+1o7W`?WC3f8e6{}Ow?YLhceqM| zDBEW*T0zyghrU{W4(h@nQ;M8-&@a;$pydiZ-J;uno5CyKa1WH9xn6>`kt~XmntDX2 z$<>i3a1^HaCVhHZU4&OY=$ABEsn9x92D0GpRFRi@KD2y5@ga_1@)tS3-hhVAnuxfJ0ASrUI&+#AJLby zYPT|TmayJ7Sc1n#>|n#eq_=?gNdBg+GktggJd=F_9Aw+hZLfXdOd&mnpw#GHzoaah z<8bsJ8rFF7g@}KCS>sOsejHMcdNg{sku+go?fWrH79Z2KkrcM8kHFf=e(U4MePa5- hhqe^ar&`2OCabpYO}!VxIO_gA{stsN;+u>J00163c%%RT diff --git a/apps/dashboard/e2e/organ-explore.spec.ts b/apps/dashboard/e2e/organ-explore.spec.ts index 2169d54..db2957c 100644 --- a/apps/dashboard/e2e/organ-explore.spec.ts +++ b/apps/dashboard/e2e/organ-explore.spec.ts @@ -145,12 +145,14 @@ test('hovering + off-row clicks never crash; a row click navigates (real picks s expectNoErrors(errors); - // A targeted row click navigates to the memory detail page (goto) — the valid - // non-crash outcome for hitting a real neighbor row. Rows anchor at logical - // NDC x=-0.88, which the pickAt aspect-divide (/max(aspect,1)) pulls inward: - // on a 16:9 canvas (aspect≈1.78) the left column lands at fx≈0.26–0.32, and - // the top row (ndcY≈0.72) sits at fy≈0.14. Verified live with a scan probe. - // Click a few points across that band to reliably land on a row. + // A targeted row click re-centers the neighborhood on the clicked thought — a + // SEMANTIC WALK IN PLACE (the /memories/{id} detail route doesn't exist and + // 404'd, so explore syncs the clicked memory's content into ?q= via + // replaceState instead). The observable proof is the query changing to the + // clicked memory's content. Rows anchor at logical NDC x=-0.88, which the + // pickAt aspect-divide pulls to fx≈0.26–0.32; the top row (ndcY≈0.72) sits at + // fy≈0.14. Click across that band to reliably land on a row. + const startQuery = new URL(page.url()).searchParams.get('q'); const rowClicks = [ [0.28, 0.14], [0.3, 0.14], @@ -158,21 +160,23 @@ test('hovering + off-row clicks never crash; a row click navigates (real picks s [0.32, 0.15], [0.28, 0.18] ]; - let navigated = false; + let walked = false; for (const [fx, fy] of rowClicks) { await page.mouse.click(box.x + box.width * fx, box.y + box.height * fy); await page.waitForTimeout(400); - if (/\/memories\/.+/.test(page.url())) { - navigated = true; + const q = new URL(page.url()).searchParams.get('q'); + // Stayed on /explore, but the query re-centered on the clicked neighbor. + if (page.url().includes('/explore') && q && q !== startQuery) { + walked = true; break; } } expect( - navigated, - `a left-column row click should navigate to a memory detail page (url=${page.url()})` + walked, + `a left-column row click should re-center the semantic walk (?q= changes; url=${page.url()})` ).toBe(true); - // Navigation itself must be crash-free too. + // The walk itself must be crash-free too. expectNoErrors(errors); }); diff --git a/apps/dashboard/e2e/organ-reasoning.spec.ts b/apps/dashboard/e2e/organ-reasoning.spec.ts index 6d3722b..91aa6f2 100644 --- a/apps/dashboard/e2e/organ-reasoning.spec.ts +++ b/apps/dashboard/e2e/organ-reasoning.spec.ts @@ -1,132 +1,88 @@ -import { test, expect } from '@playwright/test'; -import { - BASE, - captureErrors, - expectNoErrors, - gotoRoute, - sampleCanvas, - isAnimating -} from './helpers/dashboard'; +import { test, expect, type Page } from '@playwright/test'; +import { BASE, captureErrors, expectNoErrors, gotoRoute, sampleCanvas, isAnimating } from './helpers/dashboard'; // ───────────────────────────────────────────────────────────────────────── // ORGAN OWNER SPEC — /reasoning (Reasoning Theater, the deep_reference organ) // -// Proves the 7-point ship-a-working-product contract for THIS organ against -// the REAL brain (:3931, 1285 memories). Focused + fast — does not duplicate -// all-routes-smoke; adds the organ-specific proof: -// 1. REACHABLE — /dashboard/reasoning mounts its WebGPU canvas. -// 5. HONEST EMPTY — before any query the organ shows a calm empty state -// (empty-state DOM copy + the field's empty label), NOT -// fake data or a broken/errored surface. -// 2. RENDERS REAL — a real query runs the 8-stage pipeline and the DOM -// DATA materializes REAL numbers straight from deep_reference -// (memoriesAnalyzed / confidence% / Primary Source / -// Evidence count). Asserted on values that only exist -// because the real backend produced them. -// 3. ALIVE — the organ field animates after the scene is uploaded. -// 4. CRASH-FREE — a grid of in-canvas clicks (drives pass.pickAt over the -// CLICK + HOVER static stage rects) + a hover sweep; the canvas SURVIVES -// every one with zero page/WebGPU errors. Stage centers do -// NOT animate in the vertex shader (only radius/energy do), -// and pickAt() uses the same y = 0.76 - i*(1.52/7) layout -// as buildStageRects(), so picks land on the real targets. -// -// Real ground truth captured live via curl POST /api/deep_reference -// {query:"How does FSRS-6 trust scoring work?"}: -// confidence 0.87 · memoriesAnalyzed 26 · activationExpanded 6 · -// evidence 10 · contradictions 0 · superseded 0 · intent "Synthesis". -// contradictions/superseded are legitimately 0 for this query, so those -// sections correctly DON'T render — the honest no-fake-data path. +// The Reasoning Theater is a ZERO-DOM WebGPU organ: the ONLY DOM is a +// visually-hidden (sr-only) ask input for keyboard + screen-reader access. +// There is no DOM response panel — the decision trace (beam / ribbon / nucleus), +// the evidence galaxy, gates, and receipt are all rendered IN-CANVAS. So the +// 7-point organ contract is proven on PIXELS + the real API round-trip, not DOM +// widgets, against the REAL brain (:3931): +// 1. REACHABLE — /dashboard/reasoning mounts its WebGPU canvas. +// 5. HONEST-EMPTY — before any query there is NO fabricated response; the +// sr-only ask input is empty and the DOM has no DOM response +// panels. The field is still alive from a passive real +// memory-pool substrate (no invented trace is claimed). +// 2. RENDERS REAL — a real query runs the 8-stage deep_reference pipeline (200) +// and the field RE-LIGHTS with the real evidence galaxy. +// 3. ALIVE — the field animates at rest. +// 4. CRASH-FREE — a grid of in-canvas clicks + a hover sweep survive with +// zero page/WebGPU errors. // ───────────────────────────────────────────────────────────────────────── const REASONING = '/reasoning'; const QUERY = 'How does FSRS-6 trust scoring work?'; -test.describe('Organ /reasoning — Reasoning Theater', () => { +async function askQuery(page: Page, query: string): Promise { + const input = page.locator('#reasoning-ask'); + await input.waitFor({ state: 'attached', timeout: 15_000 }); + await input.fill(query); + await expect(input).toHaveValue(query); + await input.press('Enter'); +} + +test.describe('Organ /reasoning — Reasoning Theater (zero-DOM)', () => { test('reachable, honest-empty, renders REAL data, alive, and survives click+hover', async ({ page }) => { const capture = captureErrors(page); - // ── 1. REACHABLE: route mounts its WebGPU canvas ─────────────────── + // ── 1. REACHABLE ─────────────────────────────────────────────────── const canvas = await gotoRoute(page, REASONING); await expect(canvas).toBeVisible(); - // ── 5. HONEST EMPTY STATE (pre-query) ────────────────────────────── - // The DOM empty panel renders with real, non-faked copy — and NO fake - // "Live" data / response sections exist yet. - await expect( - page.getByText('Ask anything. Vestige will run the full reasoning pipeline and show you its work.') - ).toBeVisible(); - // No response artifacts before a query: no Primary Source citation, no - // Cognitive Pipeline result, no confidence meter — nothing fabricated. - await expect(page.getByText('Primary Source', { exact: true })).toHaveCount(0); - await expect(page.getByRole('heading', { name: 'Cognitive Pipeline' })).toHaveCount(0); - // The immersive field is present but shows its honest empty label (no - // invented scene) — canvas is still a real, sampleable surface. + // ── 5. HONEST-EMPTY (pre-query) ──────────────────────────────────── + // The ask input exists (sr-only) and is empty — no query has run, so no + // trace is claimed. There are no DOM response panels to fake at all. + const input = page.locator('#reasoning-ask'); + await expect(input).toHaveValue(''); + // The field is still sampleable + alive from the passive memory-pool + // substrate (an honest "here is your corpus" backdrop, not a fake trace). + await page.waitForTimeout(3500); const emptySample = await sampleCanvas(page); expect(emptySample.ok, 'empty-state canvas should be sampleable').toBe(true); + expect( + emptySample.fillPct, + `the rest substrate should fill the field (fillPct=${emptySample.fillPct})` + ).toBeGreaterThan(20); - // ── 2. RENDERS REAL DATA: run the real 8-stage pipeline ──────────── - const input = page.getByPlaceholder('Ask your memory anything…'); - await expect(input).toBeVisible(); - await input.click(); - await input.fill(QUERY); - await input.press('Enter'); + // ── 2. RENDERS REAL DATA — run the real 8-stage pipeline ─────────── + const respPromise = page.waitForResponse( + (r) => /\/api\/deep[_-]reference/.test(r.url()) && r.status() === 200, + { timeout: 30_000 } + ); + await askQuery(page, QUERY); + const resp = await respPromise; + const payload = (await resp.json()) as { evidence?: unknown[]; confidence?: number }; + // The real backend produced evidence — the field will lay it out as cells. + expect(Array.isArray(payload.evidence), 'deep_reference returns an evidence array').toBe(true); - const cognitivePipeline = page.getByRole('heading', { name: 'Cognitive Pipeline' }); - const errorSurface = page.locator('text=/^Error:/'); - await Promise.race([ - cognitivePipeline.waitFor({ state: 'visible', timeout: 30_000 }), - errorSurface.waitFor({ state: 'visible', timeout: 30_000 }) - ]); - - // A real backend error is a genuine finding — surface it, never hide it. - const errored = await errorSurface.isVisible().catch(() => false); - if (errored) { - const msg = (await errorSurface.textContent())?.trim(); - throw new Error(`Reasoning Theater surfaced a backend error: ${msg}`); - } - - // The pipeline finished (button left its "Reasoning…" limbo). - await expect(page.getByRole('button', { name: /Reason(ing…)?/ })).toBeEnabled({ - timeout: 15_000 - }); - - // These assertions can ONLY pass if real deep_reference data drove the DOM: - // • the recommended Primary Source citation block, - await expect(page.getByText('Primary Source', { exact: true })).toBeVisible(); - // • an "N analyzed" count (real memoriesAnalyzed from the backend), - const analyzed = page.getByText(/\banalyzed\b/).first(); - await expect(analyzed).toBeVisible(); - // • a real confidence percentage in the meter, - await expect(page.locator('text=/\\d+%/').first()).toBeVisible(); - // • the Evidence header WITH a real non-zero count in parentheses. - const evidenceHeading = page.getByRole('heading', { name: /^Evidence/ }); - await expect(evidenceHeading).toBeVisible(); - const evidenceText = (await evidenceHeading.textContent()) ?? ''; - const evCount = Number(evidenceText.match(/\((\d+)\)/)?.[1] ?? '0'); - expect(evCount, `Evidence count should be real & non-zero (saw "${evidenceText.trim()}")`).toBeGreaterThan(0); - // At least one real EvidenceCard rendered from the backend payload. - await expect(page.locator('[data-evidence-id]').first()).toBeVisible(); - - // ── 3. ALIVE: the organ field animates after the scene upload ────── - await page.waitForTimeout(2500); + // The field re-lights with the real evidence galaxy. + await page.waitForTimeout(3500); const lit = await sampleCanvas(page); expect(lit.ok, 'organ canvas should be sampleable').toBe(true); expect( lit.rendered, - `organ field should render non-black (avgLum=${lit.avgLum}, variance=${lit.variance})` + `evidence galaxy should render non-black (avgLum=${lit.avgLum}, variance=${lit.variance})` ).toBe(true); + + // ── 3. ALIVE ─────────────────────────────────────────────────────── const animating = await isAnimating(page); expect(animating, 'organ field should animate (living, not a frozen frame)').toBe(true); // ── 4. CRASH-FREE in-canvas click grid + hover sweep ─────────────── - // The RouteStage field layer is full-bleed fixed inset-0; clicking it - // routes through handleFieldClick → pass.pickAt over the 8 static stage - // rects. Sweep a grid so several clicks LAND on stage chambers (which - // open the DOM stage-receipt aside) and several miss (no-op) — the - // canvas must survive every one. const box = await canvas.boundingBox(); expect(box, 'canvas should have a bounding box').not.toBeNull(); if (box) { @@ -136,34 +92,24 @@ test.describe('Organ /reasoning — Reasoning Theater', () => { for (let c = 0; c < cols; c++) { const x = box.x + ((c + 0.5) / cols) * box.width; const y = box.y + ((r + 0.5) / rows) * box.height; - await page.mouse.move(x, y); // hover sweep - await page.mouse.click(x, y); // in-canvas pick + await page.mouse.move(x, y); + await page.mouse.click(x, y); } } - // A hover along the vertical stage column (x≈center) — where the - // eight chambers live — must not throw either. for (let r = 0; r < 9; r++) { await page.mouse.move(box.x + box.width * 0.5, box.y + (r / 8) * box.height); } } - // The canvas is still alive and rendering after all that interaction. const afterInteract = await sampleCanvas(page); expect( afterInteract.rendered, `organ field should still render after clicks/hover (avgLum=${afterInteract.avgLum}, variance=${afterInteract.variance})` ).toBe(true); - // A stage-receipt aside may have opened from a landed pick; if so it must - // be a real receipt panel (has the "stage receipt" label), never junk. - const receiptAside = page.getByLabel('Reasoning stage receipt'); - if (await receiptAside.isVisible().catch(() => false)) { - await expect(receiptAside.getByText('stage receipt')).toBeVisible(); - } - await page.screenshot({ path: 'e2e/screenshots/organ-reasoning.png', fullPage: true }); - // ── 4/5. No real app / WebGPU-validation errors across the whole run ─ + // ── No real app / WebGPU-validation errors across the whole run ──── expectNoErrors(capture); }); }); diff --git a/apps/dashboard/e2e/reasoning-flow.spec.ts b/apps/dashboard/e2e/reasoning-flow.spec.ts index f552ef5..2f2ebd2 100644 --- a/apps/dashboard/e2e/reasoning-flow.spec.ts +++ b/apps/dashboard/e2e/reasoning-flow.spec.ts @@ -1,154 +1,105 @@ -import { test, expect } from '@playwright/test'; +import { test, expect, type Page } from '@playwright/test'; import { BASE, captureErrors, expectNoErrors, sampleCanvas } from './helpers/dashboard'; // ───────────────────────────────────────────────────────────────────────── -// Reasoning Theater — the deep_reference flow. +// Reasoning Theater — the deep_reference flow (zero-DOM, in-canvas). // -// Proves the real 8-stage cognitive pipeline round-trip: +// The Reasoning Theater is a full-bleed WebGPU organ: the ONLY DOM is a +// visually-hidden (sr-only) input for keyboard + screen-reader access. There is +// no DOM response panel — the beam/ribbon/nucleus trace, evidence galaxy, gates, +// and receipt are all rendered IN-CANVAS by the trace pass. So this flow is +// proven on PIXELS, not DOM widgets: // 1. /dashboard/reasoning mounts its WebGPU organ canvas. -// 2. A real query is typed into the ask box and submitted (Enter). -// 3. The /api/deep_reference call returns and the reasoning DOM materializes -// (Reasoning section / "analyzed" / confidence % / Primary Source / -// Evidence / Cognitive Pipeline). -// 4. The WebGPU organ field lights up (8-stage organ renders non-black). +// 2. It is alive at rest (a passive memory-pool substrate lights the field). +// 3. A real query is typed into the sr-only ask box and submitted (Enter). +// 4. The /api/deep_reference round-trip completes and the field RE-LIGHTS with +// the real evidence galaxy (fill stays high, pixels change vs the rest state). // 5. No page/WebGPU-validation errors fired. -// -// The brain is up with 325+ real memories, so we assert on real rendered -// output. If a query genuinely returns an empty result set, the flow still -// ran end-to-end (loading → response OR a graceful error surface), and we -// assert THAT rather than hard-failing on content that legitimately may not -// exist. // ───────────────────────────────────────────────────────────────────────── const REASONING = `${BASE}/reasoning`; const QUERY = 'How does FSRS-6 trust scoring work?'; -test.describe('Reasoning Theater — deep_reference flow', () => { - test('typing a query runs the pipeline and renders reasoning + lights the organ', async ({ - page - }) => { +/** Fill the sr-only ask input by id (it's visually hidden, so .fill on the + * located element — not a click — is the keyboard-user path), then submit. */ +async function askQuery(page: Page, query: string): Promise { + const input = page.locator('#reasoning-ask'); + await input.waitFor({ state: 'attached', timeout: 15_000 }); + await input.fill(query); + await expect(input).toHaveValue(query); + await input.press('Enter'); +} + +/** Wait until a real /api/deep_reference response has come back. */ +async function waitForDeepReference(page: Page): Promise { + await page.waitForResponse( + (r) => /\/api\/deep[_-]reference/.test(r.url()) && r.status() === 200, + { timeout: 30_000 } + ); +} + +test.describe('Reasoning Theater — deep_reference flow (zero-DOM)', () => { + test('typing a query runs the pipeline and re-lights the organ field', async ({ page }) => { const capture = captureErrors(page); - // ── 1. Route mounts its WebGPU canvas ────────────────────────────── + // 1 — route mounts its WebGPU canvas. await page.goto(REASONING); const canvas = page.locator('canvas').first(); await canvas.waitFor({ state: 'attached', timeout: 15_000 }); await expect(canvas).toBeVisible(); - // ── 2. Type a real query + submit ────────────────────────────────── - const input = page.getByPlaceholder('Ask your memory anything…'); - await expect(input).toBeVisible(); - await input.click(); - await input.fill(QUERY); - await expect(input).toHaveValue(QUERY); - - // The "Reason" button should enable once the box has a non-empty query. - const reasonBtn = page.getByRole('button', { name: 'Reason' }); - await expect(reasonBtn).toBeEnabled(); - - // Submit via Enter (the input has an onkeydown Enter handler). - await input.press('Enter'); - - // ── 3. Wait for the pipeline to run + a terminal state to render ──── - // The button reads "Reasoning…" while loading; the empty-state / - // example chips disappear. Wait for EITHER a real response section OR - // a graceful error surface — but not the still-empty initial state. - const reasoningHeading = page.getByRole('heading', { name: 'Reasoning', exact: true }); - const primarySource = page.getByText('Primary Source', { exact: true }); - const cognitivePipeline = page.getByRole('heading', { name: 'Cognitive Pipeline' }); - const errorSurface = page.locator('text=/^Error:/'); - - // Give the local 8-stage pipeline time to complete + paint. - await Promise.race([ - reasoningHeading.waitFor({ state: 'visible', timeout: 30_000 }), - cognitivePipeline.waitFor({ state: 'visible', timeout: 30_000 }), - primarySource.waitFor({ state: 'visible', timeout: 30_000 }), - errorSurface.waitFor({ state: 'visible', timeout: 30_000 }) - ]); - - // The button must have left its disabled/loading limbo. - await expect(page.getByRole('button', { name: /Reason(ing…)?/ })).toBeEnabled({ - timeout: 15_000 - }); - - const errored = await errorSurface.isVisible().catch(() => false); - - if (errored) { - // A real backend error is a genuine finding, not something to hide. - const msg = (await errorSurface.textContent())?.trim(); - throw new Error(`Reasoning Theater surfaced a backend error: ${msg}`); - } - - // ── Real response asserted on real rendered content ──────────────── - // The Cognitive Pipeline section renders for ANY successful response - // (even zero-evidence), so it's the reliable "the flow produced a - // result" anchor. - await expect(cognitivePipeline).toBeVisible(); - - // "N analyzed" appears in the reasoning header / confidence meter. - await expect(page.getByText(/\banalyzed\b/).first()).toBeVisible(); - - // A confidence percentage renders (the big meter uses "%"). Assert a - // digit-followed-by-% is present somewhere in the response region. - const confidencePct = page.locator('text=/\\d+%/').first(); - await expect(confidencePct).toBeVisible(); - - // Primary Source citation block renders the recommended answer. - await expect(primarySource).toBeVisible(); - - // Evidence section header renders with its count. - await expect(page.getByRole('heading', { name: /^Evidence/ })).toBeVisible(); - - // ── 4. The WebGPU organ field lit up (8-stage organ, non-black) ──── - // Let the field settle after the DeepReferenceCompleted scene drives it. - await page.waitForTimeout(3000); - const sample = await sampleCanvas(page); - expect(sample.ok, 'canvas should be sampleable').toBe(true); + // 2 — alive at rest: the passive memory-pool substrate fills the field. + await page.waitForTimeout(3500); + const rest = await sampleCanvas(page); + expect(rest.ok, 'canvas should be sampleable at rest').toBe(true); expect( - sample.rendered, - `organ field should render non-black (avgLum=${sample.avgLum}, variance=${sample.variance})` + rest.fillPct, + `the rest substrate should fill the field (fillPct=${rest.fillPct})` + ).toBeGreaterThan(20); + + // 3 — type a real query into the sr-only input + submit. + const respPromise = waitForDeepReference(page); + await askQuery(page, QUERY); + + // 4 — the deep_reference round-trip completes... + await respPromise; + // ...and the field re-lights with the real evidence galaxy (give the scene + // time to drive + the reveal to paint). + await page.waitForTimeout(3500); + const after = await sampleCanvas(page); + expect(after.ok, 'canvas should be sampleable after the query').toBe(true); + expect( + after.rendered, + `evidence galaxy should render non-black (avgLum=${after.avgLum}, variance=${after.variance})` ).toBe(true); + expect( + after.fillPct, + `the evidence field should fill the frame (fillPct=${after.fillPct})` + ).toBeGreaterThan(20); - await page.screenshot({ - path: 'e2e/screenshots/reasoning-flow-lit.png', - fullPage: true - }); + await page.screenshot({ path: 'e2e/screenshots/reasoning-flow-lit.png', fullPage: true }); - // ── 5. No real app / WebGPU-validation errors ────────────────────── + // 5 — no app / WebGPU-validation errors across the whole flow. expectNoErrors(capture); }); - test('an example chip also drives the full flow', async ({ page }) => { + test('a second query re-runs the pipeline against the live brain', async ({ page }) => { const capture = captureErrors(page); await page.goto(REASONING); await page.locator('canvas').first().waitFor({ state: 'attached', timeout: 15_000 }); + await page.waitForTimeout(3000); - // The example chips render only in the empty state. Click the first one; - // it sets the query AND immediately calls ask(). - const chip = page.getByRole('button', { - name: 'How does FSRS-6 trust scoring work?' - }); - await expect(chip).toBeVisible(); - await chip.click(); - - const cognitivePipeline = page.getByRole('heading', { name: 'Cognitive Pipeline' }); - const errorSurface = page.locator('text=/^Error:/'); - - await Promise.race([ - cognitivePipeline.waitFor({ state: 'visible', timeout: 30_000 }), - errorSurface.waitFor({ state: 'visible', timeout: 30_000 }) - ]); - - const errored = await errorSurface.isVisible().catch(() => false); - if (errored) { - const msg = (await errorSurface.textContent())?.trim(); - throw new Error(`Reasoning Theater surfaced a backend error: ${msg}`); + // Two different real queries in a row both round-trip and keep the field lit. + for (const q of ['What is the Vestige dashboard direction?', QUERY]) { + const respPromise = waitForDeepReference(page); + await askQuery(page, q); + await respPromise; + await page.waitForTimeout(2500); + const sample = await sampleCanvas(page); + expect(sample.rendered, `field stays lit after querying "${q}"`).toBe(true); } - await expect(cognitivePipeline).toBeVisible(); - await expect(page.getByText(/\banalyzed\b/).first()).toBeVisible(); - expectNoErrors(capture); }); }); diff --git a/apps/dashboard/src/routes/(app)/reasoning/+page.svelte b/apps/dashboard/src/routes/(app)/reasoning/+page.svelte index db0ab3d..1a59caa 100644 --- a/apps/dashboard/src/routes/(app)/reasoning/+page.svelte +++ b/apps/dashboard/src/routes/(app)/reasoning/+page.svelte @@ -39,9 +39,24 @@ // full-bleed field, not a thin beam on black. The beam/ribbon/nucleus trace // draws ON TOP. Rebuilds whenever a new decision trace lands. let evidenceField: LivingFieldPass | null = null; + // Passive real memory pool shown at rest (pre-query), dim, so the stage is + // alive without faking a decision trace. Replaced by real evidence on a query. + let restPool: NormalizedEvidence[] = []; function buildEvidenceCells() { const s = reasoningScene; - if (!s) return []; + // Pre-query: dim memory-pool substrate (honest — no trace claimed). + if (!s || (s.evidence ?? []).length === 0) { + const data: FieldDatum[] = restPool.map((e, i) => ({ + id: e.id || `rest:${i}`, + score: 0.25 + 0.4 * clampR(e.trust ?? 0.5), + hue: FIELD_HUE.bridge, + energy: 0.14 + 0.26 * clampR(e.trust ?? 0.5), + metric2: clampR(e.trust ?? 0.5), + kind: 'reasoning-rest', + payload: e + })); + return layoutGalaxy(data, { maxRadius: 0.9, minCellR: 0.014, maxCellR: 0.045 }); + } const contradictionIds = new Set( (s.contradictions ?? []).flatMap((c) => [c.stronger?.id, c.weaker?.id]).filter(Boolean) as string[] ); @@ -138,14 +153,26 @@ onMount(() => { askInputEl?.focus(); window.addEventListener('keydown', handleGlobalKey); - // Auto-seed a real decision trace so the Theater is ALIVE at rest (the - // beam/ribbon/nucleus render real deep_reference evidence immediately), - // not a black stage waiting for input. A demo lands on a live trace; the - // user can retype to trace their own question. - if (!query.trim()) { - query = 'What is the Vestige dashboard direction?'; - void ask(); - } + // Keep the Theater HONEST-EMPTY at rest (the DOM "ask a question to trace" + // state), but light the field with a passive real memory pool so the stage + // isn't black while it waits. A real query replaces the pool with the actual + // evidence galaxy. No auto-run — the user (or a demo) drives the trace. + void api.memories + .list({ limit: '80' }) + .then((res) => { + restPool = res.memories.map((m, i) => { + const retention = clampR(m.retentionStrength); + return { + id: m.id || `rest:${i}`, + trust: 0.35 + 0.4 * retention, + date: '', + role: 'supporting' as const, + preview: '' + }; + }); + evidenceField?.setCells(buildEvidenceCells()); + }) + .catch(() => {}); return () => window.removeEventListener('keydown', handleGlobalKey); }); @@ -180,7 +207,7 @@ list="reasoning-examples" autocomplete="off" spellcheck="false" - placeholder="Ask a question…" + placeholder="Ask your memory anything…" /> {#each EXAMPLE_QUERIES as q}