[{"data":1,"prerenderedAt":155},["ShallowReactive",2],{"$fzU6wXQM2fFzvu5viLHNnoHtmtAfHYG8Ps8R0l5j3Tx4":3},{"id":4,"project":5,"kind":6,"slug":7,"label":8,"note":9,"captureCount":10,"momentCount":11,"cycles":12,"origins":15,"surfaces":18,"variants":20,"first":24,"last":27,"moments":30},"page\u002Fsecurity-posture","design","page","security-posture","Security posture",null,11,6,[13,14],"c107","c108",[16,17],"Gen-1 prototype","Gen-2 qdash ui (archived)",[19],"app",[21,22,23],"state=failed","state=loading","state=ready",{"date":25,"src":26},"2026-07-01","\u002Fcycles\u002Fdesign\u002Fgen1-security-posture.png",{"date":28,"src":29},"2026-10-02","\u002Fcycles\u002Fdesign\u002Fc108-final-posture-loading.png",[31,49,70,84,112,137],{"id":32,"cycle":9,"cycleNum":9,"origin":33,"thread":9,"date":25,"capturedAt":36,"surface":19,"paths":37,"variants":39,"newThing":9,"captures":40},"gen1~_~2026-07-01~app",{"id":34,"label":16,"note":35},"gen1","The vibe-coded qdash prototype rebuilt from qcontrol PR 521 (4af0e01dc, 2026-07-01) and fed replayed run + scan events (three users, four agents, one untapped install) so every view renders populated. Captured 2026-09-25.","2026-07-01T12:00:00.000Z",[38],"\u002F",[],[41],{"file":42,"src":26,"full":43,"slices":44,"route":38,"path":38,"caption":45,"capturedAt":46,"asOf":36,"cycle":9,"seq":47,"local":48},"gen1-security-posture.png","\u002Fcycles\u002Fdesign\u002Fgen1-security-posture-full.png",[],"Security Posture — fleet gauge, per-agent score with factor breakdown, shadow-AI coverage","2026-09-25T17:37:13.404Z",7,true,{"id":50,"cycle":13,"cycleNum":51,"origin":52,"thread":55,"date":28,"capturedAt":58,"surface":19,"paths":59,"variants":61,"newThing":62,"captures":63},"c107~gen2-final~2026-10-02~app",107,{"id":53,"label":17,"note":54},"gen2","The Nuxt app at crates\u002Fqdash\u002Fui as archived in tag archive\u002Fqdash-ui-gen2 (d52ff77b): the release binary built from the tag, serving its committed dist, on a copy of the Meridian seed. Captured 2026-10-02 at the c107 cutover, beside the promoted app on the same seed.",{"id":56,"label":57,"date":28},"gen2-final","Gen 2 as archived","2026-10-02T16:56:26.790Z",[60],"\u002Fposture",[],"",[64],{"file":65,"src":66,"full":9,"slices":67,"route":60,"path":60,"caption":68,"capturedAt":58,"cycle":13,"seq":69,"local":48},"c107-gen2-posture.png","\u002Fcycles\u002Fdesign\u002Fc107-gen2-posture.png",[],"Gen 2 (archived) \u002Fposture on the Meridian seed",2,{"id":71,"cycle":13,"cycleNum":51,"origin":9,"thread":72,"date":28,"capturedAt":75,"surface":19,"paths":76,"variants":77,"newThing":62,"captures":78},"c107~cutover~2026-10-02~app",{"id":73,"label":74,"date":28},"cutover","Promoted app (cutover)","2026-10-02T16:58:29.496Z",[60],[],[79],{"file":80,"src":81,"full":9,"slices":82,"route":60,"path":60,"caption":83,"capturedAt":75,"cycle":13,"seq":69,"local":48},"c107-new-posture.png","\u002Fcycles\u002Fdesign\u002Fc107-new-posture.png",[],"Promoted app \u002Fposture on the Meridian seed",{"id":85,"cycle":14,"cycleNum":86,"origin":9,"thread":87,"date":28,"capturedAt":90,"surface":19,"paths":91,"variants":92,"newThing":93,"captures":94},"c108~states-before~2026-10-02~app",108,{"id":88,"label":89,"date":28},"states-before","Honest states — before (pre-c108 build)","2026-10-02T18:31:02.445Z",[60],[21,22,23],"Pre-c108: loading and a dead backend read as empty — 'Fleet is clean', posture 100, 'No spend yet'.",[95,101,107],{"file":96,"src":97,"full":9,"slices":98,"route":60,"path":60,"caption":99,"variant":22,"capturedAt":90,"cycle":14,"seq":100,"local":48},"c108-before-posture-loading.png","\u002Fcycles\u002Fdesign\u002Fc108-before-posture-loading.png",[],"Before · \u002Fposture · loading (\u002Fapi held open)",0,{"file":102,"src":103,"full":9,"slices":104,"route":60,"path":60,"caption":105,"variant":21,"capturedAt":90,"cycle":14,"seq":106,"local":48},"c108-before-posture-failed.png","\u002Fcycles\u002Fdesign\u002Fc108-before-posture-failed.png",[],"Before · \u002Fposture · failed (\u002Fapi answering 503)",1,{"file":108,"src":109,"full":9,"slices":110,"route":60,"path":60,"caption":111,"variant":23,"capturedAt":90,"cycle":14,"seq":69,"local":48},"c108-before-posture-ready.png","\u002Fcycles\u002Fdesign\u002Fc108-before-posture-ready.png",[],"Before · \u002Fposture · ready",{"id":113,"cycle":14,"cycleNum":86,"origin":9,"thread":114,"date":28,"capturedAt":117,"surface":19,"paths":118,"variants":119,"newThing":120,"captures":121},"c108~states-after~2026-10-02~app",{"id":115,"label":116,"date":28},"states-after","Honest states — after (R31)","2026-10-02T18:38:15.331Z",[60],[21,22,23],"R31 applied: '—' and skeleton rows while loading, one banner when qdash is unreachable, the all-clear only after the data loads, 'No agents reporting' instead of 100.",[122,127,132],{"file":123,"src":124,"full":9,"slices":125,"route":60,"path":60,"caption":126,"variant":22,"capturedAt":117,"cycle":14,"seq":100,"local":48},"c108-after-posture-loading.png","\u002Fcycles\u002Fdesign\u002Fc108-after-posture-loading.png",[],"After · \u002Fposture · loading (\u002Fapi held open)",{"file":128,"src":129,"full":9,"slices":130,"route":60,"path":60,"caption":131,"variant":21,"capturedAt":117,"cycle":14,"seq":106,"local":48},"c108-after-posture-failed.png","\u002Fcycles\u002Fdesign\u002Fc108-after-posture-failed.png",[],"After · \u002Fposture · failed (\u002Fapi answering 503)",{"file":133,"src":134,"full":9,"slices":135,"route":60,"path":60,"caption":136,"variant":23,"capturedAt":117,"cycle":14,"seq":69,"local":48},"c108-after-posture-ready.png","\u002Fcycles\u002Fdesign\u002Fc108-after-posture-ready.png",[],"After · \u002Fposture · ready",{"id":138,"cycle":14,"cycleNum":86,"origin":9,"thread":139,"date":28,"capturedAt":142,"surface":19,"paths":143,"variants":144,"newThing":62,"captures":145},"c108~final~2026-10-02~app",{"id":140,"label":141,"date":28},"final","Honest states — final (parts 1–3)","2026-10-02T21:46:49.005Z",[60],[21,22],[146,150],{"file":147,"src":29,"full":9,"slices":148,"route":60,"path":60,"caption":149,"variant":22,"capturedAt":142,"cycle":14,"seq":106,"local":48},"c108-final-posture-loading.png",[],"Posture loading: \"—\" tiles, skeleton factors and risk table — no score of 100, no \"all hardened\"",{"file":151,"src":152,"full":9,"slices":153,"route":60,"path":60,"caption":154,"variant":21,"capturedAt":142,"cycle":14,"seq":69,"local":48},"c108-final-posture-failed.png","\u002Fcycles\u002Fdesign\u002Fc108-final-posture-failed.png",[],"Posture with qdash unreachable: banner + \"—\" in every tile and panel",1794599372994]