diff --git "a/web/sveltekit/build/_app/immutable/chunks/BXi3zWkM.js" "b/web/sveltekit/build/_app/immutable/chunks/BXi3zWkM.js"
new file mode 100644--- /dev/null
+++ "b/web/sveltekit/build/_app/immutable/chunks/BXi3zWkM.js"
@@ -0,0 +1,27 @@
+import{j as Ie,o as De,a as v,f as p,s as f,t as ye,d as Ce,c as xe,b as Ne,k as _e}from"./CzfSRAFS.js";import{h as ve,n as Be,j as we,bd as Oe,d as ze,a3 as He,aW as Ye,b7 as je,k as We,b as Ue,e as Re,i as ke,a0 as Ke,av as Ge,p as X,t as C,a as J,s as i,c as r,r as t,aR as re,o as a,a9 as q,aa as ce,a6 as Qe,be as Ve,a5 as pe,a4 as Se,f as ee}from"./R1l3q-hJ.js";import{B as Ze,i as A,p as ie}from"./C6-4B-da.js";import{e as te,i as oe}from"./CGe8VjDs.js";import{s as m,a as ue,b as le,c as Xe,C as Je}from"./a4L4UsYq.js";import{T as ge,c as $e,b as et,d as Le}from"./DmCsJHgl.js";import{b as tt,_ as at}from"./DZRTzx66.js";import{P as rt}from"./D907np-5.js";function st(L,e,S,_,M,n){let u=ve;ve&&Be();var d=null;ve&&we.nodeType===Oe&&(d=we,Be());var x=ve?we:L,h=new Ze(x,!1);ze(()=>{const w=e()||null;var y=w==="svg"?je:void 0;if(w===null){h.ensure(null,null);return}return h.ensure(w,o=>{if(w){if(d=ve?d:Ye(w,y),Ie(d,d),_){ve&&De(w)&&d.append(document.createComment(""));var s=ve?We(d):d.appendChild(Ue());ve&&(s===null?Re(!1):ke(s)),_(d,s)}Ke.nodes.end=d,o.before(d)}ve&&ke(o)}),()=>{}},He),Ge(()=>{}),u&&(Re(!0),ke(x))}var it=p(''),nt=p('
`,I=new l.Popup({closeButton:!0,offset:12}),O=g.geometry.coordinates;I.setLngLat(O).setHTML(j).addTo(n)}),n.addLayer({id:"queried-halo",type:"circle",source:"queried-address",paint:{"circle-color":"rgba(209, 124, 0, 0.20)","circle-radius":16}}),n.addLayer({id:"queried-pin",type:"circle",source:"queried-address",paint:{"circle-color":"#005EA2","circle-stroke-color":"#F4F6F9","circle-stroke-width":2,"circle-radius":7}}),n.addLayer({id:"queried-label",type:"symbol",source:"queried-address",layout:{"text-field":["get","label"],"text-font":["Open Sans Semibold","Arial Unicode MS Bold"],"text-size":12,"text-offset":[0,-1.6],"text-anchor":"bottom"},paint:{"text-color":"#0F172A","text-halo-color":"#F4F6F9","text-halo-width":1.5}}),pe(u,!0)})}),Ve(()=>{n==null||n.remove(),n=null});var w=ut(),y=r(w);tt(y,l=>pe(M,l),()=>a(M));var o=i(y,2);{var s=l=>{var b=ct(),N=r(b);t(b),C(()=>f(N,`linked: ${_()??""}`)),v(l,b)};A(o,l=>{_()&&l(s)})}t(w),C(()=>{m(w,"data-linked",_()??""),m(y,"aria-label",`Flood-exposure map for ${e.address.label??""}`)}),v(L,w),J()}const Ae=["cornerstone","keystone","touchstone","lodestone","capstone"],Me={cornerstone:{name:"Cornerstone",role:"the hazard reader",tag:"what NYC's ground remembers"},keystone:{name:"Keystone",role:"the asset register",tag:"what's exposed"},touchstone:{name:"Touchstone",role:"the live observer",tag:"what's happening now"},lodestone:{name:"Lodestone",role:"the projector",tag:"what's coming"},capstone:{name:"Capstone",role:"the synthesizer",tag:"writes it all down with citations"}};var gt=p(''),ht=p('
');function fr(L,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),_=ie(e,"provenanceMode",3,"smart"),M=ie(e,"linkedKey",3,null),n=q(()=>Me[e.stone]),u=q(()=>`${Ae.indexOf(e.stone)+1}`.padStart(2,"0")),d=q(()=>e.stone==="capstone");function x(K){return K.flatMap(W=>W.children?[W,...x(W.children)]:[W])}let h=q(()=>x(e.trace.members)),w=q(()=>a(h).length),y=q(()=>a(h).some(K=>K.status==="warned"||K.status==="errored"||K.status==="not_invoked")),o=q(()=>_()==="all-expanded"?!0:_()==="all-collapsed"?!1:a(y)),s=Se(null),l=q(()=>a(s)??a(o));ce(()=>{_(),pe(s,null)});var b=_r(),N=r(b),g=r(N),c=r(g),k=r(c,!0);t(c);var R=i(c,2),P=r(R,!0);t(R);var D=i(R,2),j=r(D);t(D);var I=i(D,2),O=r(I,!0);t(I),t(g);var z=i(g,2);ir(z,{get cardCount(){return e.cards.length},get members(){return e.trace.members}}),t(N);var U=i(N,2);{var T=K=>{var W=ur(),$=i(r(W),2),de=r($);{var fe=he=>{var se=ye("No projection cards landed for this query. Atomic functions still ran (see provenance) and returned silence rather than confabulation.");v(he,se)},be=he=>{var se=ye("No cards for this Stone on this query.");v(he,se)};A(de,he=>{e.stone==="lodestone"?he(fe):he(be,-1)})}t($),t(W),v(K,W)},F=K=>{var W=gr();let $;te(W,21,()=>e.cards,de=>de.id,(de,fe)=>{Te(de,{get card(){return a(fe)},get density(){return S()},get linkedKey(){return M()},get onCite(){return e.onCite},get onLink(){return e.onLink}})}),t(W),C(()=>$=ue(W,1,"rail svelte-16iv0n8",null,$,{"rail-capstone":a(d)})),v(K,W)};A(U,K=>{e.cards.length===0?K(T):K(F,-1)})}var B=i(U,2),E=r(B),Y=r(E),G=r(Y,!0);t(Y);var ae=i(Y,2),Q=r(ae);t(ae);var Z=i(ae,2),ne=r(Z);t(Z),t(E);var H=i(E,2);{var V=K=>{var W=hr(),$=r(W);qe($,{get members(){return e.trace.members}}),t(W),C(()=>m(W,"id",`prov-body-${e.stone}`)),v(K,W)};A(H,K=>{a(l)&&K(V)})}t(B),t(b),C(()=>{ue(b,1,`region region-${e.stone??""}`,"svelte-16iv0n8"),m(b,"aria-labelledby",`region-h-${e.stone}`),m(b,"data-stone",e.stone),f(k,a(u)),m(R,"id",`region-h-${e.stone}`),f(P,a(n).name),f(j,`· ${a(n).role??""}`),f(O,a(n).tag),m(E,"aria-expanded",a(l)),m(E,"aria-controls",`prov-body-${e.stone}`),f(G,a(l)?"▾":"▸"),f(Q,`${a(l)?"Hide":"Show"} provenance`),f(ne,`· ${a(w)??""} function${a(w)===1?"":"s"}`)}),Ne("click",E,()=>pe(s,!a(l))),v(L,b),J()}Ce(["click"]);var mr=p('
SPEC
Card grammar
· every body variant in the systemstubs, not findings
');function yr(L,e){let S=ie(e,"density",3,"comfortable");const _=[{id:"grm-headline",stone:"cornerstone",tier:"modeled",variant:"headline",source:"FEMA",agency:"spec",vintage:"spec",title:"Single big number, scenario-tagged",headline:"Zone AE",subhead:"preliminary FIRM, panel ID",sub:"Use when the answer is one categorical state.",docId:"DS-HEADLINE"},{id:"grm-tabular",stone:"cornerstone",tier:"empirical",variant:"tabular",source:"USGS",agency:"spec",vintage:"spec",title:"Small table of observations",columns:["id","value","dist."],rows:[["ROW-001","1.2 m","0.18 mi"],["ROW-002","0.9 m","0.32 mi"],["ROW-003","0.7 m","0.41 mi"]],sub:"Use when 3–8 records each carry the same fields.",docId:"DS-TABULAR"},{id:"grm-scalars",stone:"touchstone",tier:"empirical",variant:"scalars",source:"NWS",agency:"spec",vintage:"spec",title:"Trio of scalar readings",scalars:[{value:"0.02 in",label:"precip · 24h"},{value:"11 mph",label:"wind"},{value:"63°F",label:"temp"}],sub:"Use for current-state dashboards.",docId:"DS-SCALARS"},{id:"grm-spark",stone:"touchstone",tier:"empirical",variant:"spark",source:"FloodNet",agency:"spec",vintage:"spec",title:"Sparkline of recent events",headline:"n events",subhead:"window · peak",spark:[1,2,4,3,7,12,8,5,3,2,4,9,6],docId:"DS-SPARK"},{id:"grm-histogram",stone:"touchstone",tier:"proxy",variant:"histogram",source:"NYC 311",agency:"spec",vintage:"spec",title:"Histogram of binned counts",headline:"n calls",subhead:"window · seasonal note",histogram:[3,2,1,0,1,4,7,12,18,11,5,3,4,2,1,0,2,3,8,9,4,2,1,0],docId:"DS-HIST"},{id:"grm-timeseries",stone:"lodestone",tier:"modeled",variant:"timeseries",source:"Granite TTM",agency:"spec",vintage:"spec",title:"Forecast curve with horizon",headline:"+0.41 m peak",subhead:"+38h · 90% CI",timeseries:{hours:96,peak:{x:38,y:41},peakLabel:"+0.41 m"},spatialNote:"regional",sub:"Spatial-index callout when station ≠ point-of-query.",docId:"DS-TS"},{id:"grm-forecast",stone:"lodestone",tier:"modeled",variant:"forecast",source:"NPCC4",agency:"spec",vintage:"spec",title:"Long-horizon scenario projections",forecast:[{year:2030,low:4,mid:6,high:9},{year:2050,low:13,mid:22,high:30},{year:2100,low:38,mid:71,high:114}],sub:"Use for decadal+ uncertainty cones.",docId:"DS-FCST"},{id:"grm-raster",stone:"cornerstone",tier:"modeled",variant:"raster",source:"NYC DEP",agency:"spec",vintage:"spec",title:"Raster snapshot, mapped layer",rasterKind:"stormwater",headline:"ponding",subhead:"scenario · pixel summary",sub:"Use for any 2D model output.",docId:"DS-RASTER"},{id:"grm-rasterpred",stone:"touchstone",tier:"modeled",variant:"raster-pred",source:"Prithvi-NYC",agency:"spec",vintage:"spec",title:"Raster prediction, illustrative",rasterKind:"prithvi",headline:"n% flooded",subhead:"model · scene id",illustrative:!0,sub:"Same chrome as raster + illustrative tag.",docId:"DS-RASTERPRED"},{id:"grm-register",stone:"keystone",tier:"empirical",variant:"register",source:"NYC OpenData",agency:"spec",vintage:"spec",title:"Composite register list",registers:[{reg:"MTA",tier:"empirical",label:"Station entrance",detail:"0.18 mi · 5",sourceId:"MTA-X",note:null},{reg:"NYCHA",tier:"empirical",label:"Development",detail:"0.41 mi · 2,878 res.",sourceId:"NYCHA-Y",note:null},{reg:"DOH",tier:"empirical",label:null,detail:null,sourceId:null,note:"no acute-care hospital within 1.0 mi"}],sub:"Use when many specialists join into one Stone.",docId:"DS-REGISTER"},{id:"grm-comparison",stone:"keystone",tier:"synthetic",variant:"comparison",source:"EMP × SYN",agency:"spec",vintage:"spec",title:"Documented vs. interpreted",left:{tier:"empirical",label:"documented",value:"31.4%",aux:"n polygons"},right:{tier:"synthetic",label:"interpreted",value:"29.8%",aux:"n polygons"},delta:"Δ = −1.6 pp · agreement strong",sub:"Use to surface model–ground-truth deltas.",docId:"DS-CMP"},{id:"grm-meta",stone:"capstone",tier:"modeled",variant:"meta",source:"Mellea",agency:"spec",vintage:"spec",title:"Capstone reconciliation",metaRows:[{k:"claims",v:"12 / 12 grounded"},{k:"tier mix",v:"EMP 5 · MOD 4 · PRX 2 · SYN 1"},{k:"tier-1 freshness",v:"median 38 d"},{k:"warnings",v:"0"}],sub:"Use to expose the synthesis layer's audit.",docId:"DS-META"}];var M=mr(),n=r(M),u=i(r(n),2),d=r(u);t(u),t(n);var x=i(n,2);te(x,21,()=>_,h=>h.id,(h,w)=>{Te(h,{get card(){return a(w)},get density(){return S()}})}),t(x),t(M),C(()=>f(d,`${_.length??""} variants`)),v(L,M)}var pr=p('
Findings · grouped by Stone
cards = what each Stone found · provenance collapses below');function Er(L,e){X(e,!0);let S=ie(e,"density",3,"comfortable"),_=ie(e,"provenanceMode",3,"smart"),M=ie(e,"showGrammar",3,!1),n=ie(e,"linkedKey",3,null),u=q(()=>{const s={cornerstone:[],keystone:[],touchstone:[],lodestone:[],capstone:[]};for(const l of e.data.cards)s[l.stone].push(l);return s}),d=q(()=>{const s={cornerstone:{key:"cornerstone",members:[]},keystone:{key:"keystone",members:[]},touchstone:{key:"touchstone",members:[]},lodestone:{key:"lodestone",members:[]},capstone:{key:"capstone",members:[]}};for(const l of e.data.stones)s[l.key]=l;return s});var x=pr(),h=i(r(x),2);Nt(h,{get cards(){return e.data.cards},get stones(){return e.data.stones},get wallSeconds(){return e.data.wallSeconds},get cacheHit(){return e.data.cacheHit}});var w=i(h,2);te(w,16,()=>Ae,s=>s,(s,l)=>{fr(s,{get stone(){return l},get cards(){return a(u)[l]},get trace(){return a(d)[l]},get density(){return S()},get provenanceMode(){return _()},get linkedKey(){return n()},get onCite(){return e.onCite},get onLink(){return e.onLink}})});var y=i(w,2);{var o=s=>{yr(s,{get density(){return S()}})};A(y,s=>{M()&&s(o)})}t(x),v(L,x),J()}const xr={cornerstone:[{id:"CORN-001",name:"sandy_inundation.lookup",stepNames:["sandy_inundation","sandy_nta"],tier:"empirical",skipReason:"Sandy 2012 inundation: query outside NYC bounds"},{id:"CORN-002",name:"dep_stormwater.lookup",stepNames:["dep_stormwater","dep_extreme_2080_nta","dep_moderate_2050_nta","dep_moderate_current_nta"],tier:"modeled",skipReason:"NYC DEP stormwater scenarios: query outside NYC bounds"},{id:"CORN-003",name:"usgs_hwm.spatial_join",stepNames:["ida_hwm_2021"],tier:"empirical",skipReason:"USGS Ida HWMs: no marks within 800 m of address"},{id:"CORN-004",name:"prithvi_water.lookup",stepNames:["prithvi_eo_v2"],tier:"modeled",skipReason:"Prithvi-EO Ida polygons: no polygons within 500 m"},{id:"CORN-005",name:"microtopo.dem_hand_twi",stepNames:["microtopo_lidar","microtopo_nta"],tier:"proxy",skipReason:"USGS 3DEP DEM: query outside NYC raster coverage"}],keystone:[{id:"KEY-001",name:"mta_entrance_exposure",stepNames:["mta_entrance_exposure"],tier:"empirical",skipReason:"no entrances within radius"},{id:"KEY-002",name:"nycha.development_join",stepNames:["nycha_development_exposure"],tier:"empirical",skipReason:"no NYCHA developments within 1.0 mi"},{id:"KEY-003",name:"doe.school_join",stepNames:["doe_school_exposure"],tier:"empirical",skipReason:"no DOE schools within 1.0 mi"},{id:"KEY-004",name:"doh.facility_join",stepNames:["doh_hospital_exposure"],tier:"empirical",skipReason:"no acute-care hospitals within 1.0 mi"},{id:"KEY-005",name:"pluto.lot_lookup",stepNames:["pluto_lookup"],tier:"empirical",skipReason:"PLUTO join skipped: queried address not in NYC PLUTO dataset"},{id:"KEY-006",name:"terramind.buildings",stepNames:["terramind_buildings","terramind_synthesis"],tier:"modeled",skipReason:"TerraMind Buildings adapter: heavy specialist disabled (RIPRAP_HEAVY_SPECIALISTS=0)"}],touchstone:[{id:"TCH-001",name:"floodnet.history",stepNames:["floodnet"],tier:"empirical",skipReason:"FloodNet sensor: no deployments within 600 m"},{id:"TCH-002",name:"nyc311.flood_complaints",stepNames:["nyc311","nyc311_nta"],tier:"proxy",skipReason:"NYC 311: no flood-relevant complaints within 200 m"},{id:"TCH-003",name:"nws_obs.metar",stepNames:["nws_obs"],tier:"empirical",skipReason:"NWS hourly METAR: nearest ASOS reports no precipitation"},{id:"TCH-004",name:"noaa_coops.recent",stepNames:["noaa_tides"],tier:"empirical",skipReason:"NOAA tide gauge: nearest station >25 km from address"},{id:"TCH-005",name:"prithvi_nyc_pluvial",stepNames:["prithvi_eo_live"],tier:"modeled",skipReason:"Prithvi-NYC-Pluvial: live segmentation specialist disabled or no <30% cloud Sentinel-2 in last 120 d"},{id:"TCH-006",name:"terramind.lulc",stepNames:["terramind_lulc"],tier:"synthetic",skipReason:"TerraMind LULC adapter: heavy specialist disabled or eo_chip fetch silent"}],lodestone:[{id:"LOD-001",name:"nws_alerts.flood_relevant",stepNames:["nws_alerts"],tier:"modeled",skipReason:"NWS public alerts: no active flood-relevant alerts at this address"},{id:"LOD-002",name:"ttm_battery_surge.zero_shot",stepNames:["ttm_forecast"],tier:"modeled",skipReason:"Granite TTM r2 zero-shot: forecast not interesting (peak |residual| < 0.3 ft)"},{id:"LOD-003",name:"ttm_battery_surge.fine_tune",stepNames:["ttm_battery_surge"],tier:"modeled",skipReason:"Granite TTM Battery fine-tune: forecast not interesting (peak |residual| < 0.3 m)"},{id:"LOD-004",name:"ttm_311_forecast",stepNames:["ttm_311_forecast"],tier:"modeled",skipReason:"NYC 311 weekly forecast: no per-address history to extrapolate"},{id:"LOD-005",name:"floodnet_forecast",stepNames:["floodnet_forecast"],tier:"modeled",skipReason:"FloodNet sensor recurrence: sensor has < silent-floor historical events; forecast omitted"},{id:"LOD-006",name:"npcc4.slr_projection",stepNames:["npcc4_projection"],tier:"modeled",skipReason:"NPCC4 SLR projection: not yet wired into FSM (static reference card on hold)"}],capstone:[{id:"CAP-001",name:"rag.granite_embedding",stepNames:["rag_granite_embedding"],tier:"proxy",skipReason:"Granite Embedding RAG: no policy retrieval (out-of-NYC scope)"},{id:"CAP-002",name:"gliner.typed_extraction",stepNames:["gliner_extract"],tier:"proxy",skipReason:"GLiNER typed extraction: no RAG hits to extract over"},{id:"CAP-003",name:"granite41.compose_briefing",stepNames:["reconcile_granite41","mellea_reconcile_address","reconcile_neighborhood","reconcile_development","reconcile_live_now"],tier:"modeled",skipReason:"Reconciler did not run (no grounded data available)"},{id:"CAP-004",name:"mellea.grounding_check",stepNames:["mellea_grounding"],tier:"modeled",skipReason:"Mellea grounding-check: rolled into reconcile step on this run"}]};function Fr(L,e){const S=xr[L]??[],_=new Map;for(const u of e)_.set(u.name,u);const M=[],n=new Set;for(const u of S){let d;for(const x of u.stepNames){const h=_.get(x);if(h){d=h,n.add(x);break}}d?M.push({...d,id:u.id,name:u.name,tier:d.tier??u.tier??null}):M.push({id:u.id,name:u.name,status:"not_invoked",tier:u.tier??null,note:u.skipReason})}for(const u of e)n.has(u.name)||M.push(u);return M}export{Br as C,Er as F,Lr as M,Rr as R,Fr as f};