[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"cycle-doc-design-c134-initial-prompt.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":16},{"id":5,"title":6},"c134","Control Plane Web App",{"id":8,"label":9},"design","Design","initial-prompt.md","c134. Control Plane Web App",[13,14,15],"From c130's initial prompt","New Web App","Pointers",{"type":17,"children":18},"root",[19,65,71,78,83,98,103,124,142,147,209],{"type":20,"tag":21,"props":22,"children":23},"element","p",{},[24],{"type":20,"tag":25,"props":26,"children":27},"em",{},[28,31,43,45,55,57,63],{"type":29,"value":30},"text","Stage 1, split from c130's initial prompt on 2026-11-09. The passages below are Mark's words from ",{"type":20,"tag":32,"props":33,"children":35},"a",{"href":34},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Finitial-prompt",[36],{"type":20,"tag":37,"props":38,"children":40},"code",{"className":39},[],[41],{"type":29,"value":42},"..\u002Fc130.native-app\u002Finitial-prompt.md",{"type":29,"value":44},", unchanged. Program plan: ",{"type":20,"tag":32,"props":46,"children":48},{"href":47},"\u002Fcycles\u002Fdesign\u002Fc130\u002Fdoc\u002Fplan",[49],{"type":20,"tag":37,"props":50,"children":52},{"className":51},[],[53],{"type":29,"value":54},"..\u002Fc130.native-app\u002Fplan.md",{"type":29,"value":56},". Tyler's plan for the control plane (\"Qplane\") is in session ",{"type":20,"tag":37,"props":58,"children":60},{"className":59},[],[61],{"type":29,"value":62},"1b21a3ce",{"type":29,"value":64}," (2026-11-05): the Pulse backend repurposed with a new data model by Kamal, no Firebase, Postgres and ClickHouse, one Docker image with the UI and the Go app, offered as SaaS and self-hosted, API first.",{"type":20,"tag":66,"props":67,"children":69},"h2",{"id":68},"from-c130s-initial-prompt",[70],{"type":29,"value":13},{"type":20,"tag":72,"props":73,"children":75},"h3",{"id":74},"roadmap",[76],{"type":29,"value":77},"Roadmap",{"type":20,"tag":21,"props":79,"children":80},{},[81],{"type":29,"value":82},"We are removing qdash from ..\u002Fqcontrol. It will be an optionally installable web app for intrspecting and governing a company wide ai ecosystem.",{"type":20,"tag":84,"props":85,"children":86},"ul",{},[87,93],{"type":20,"tag":88,"props":89,"children":90},"li",{},[91],{"type":29,"value":92},"We are re-purposing the ..\u002Fapp.qpoint.io backend and vue patterns.",{"type":20,"tag":88,"props":94,"children":95},{},[96],{"type":29,"value":97},"we'll neatly slip our ..\u002Fqcontrol app \u002F prototype in to the current ..app.qpoint.io slot.",{"type":20,"tag":66,"props":99,"children":101},{"id":100},"new-web-app",[102],{"type":29,"value":14},{"type":20,"tag":84,"props":104,"children":105},{},[106,119],{"type":20,"tag":88,"props":107,"children":108},{},[109,111,117],{"type":29,"value":110},"The new web app is already perfectly modeled with ",{"type":20,"tag":37,"props":112,"children":114},{"className":113},[],[115],{"type":29,"value":116},"..\u002Fapp.qpoint.io",{"type":29,"value":118},". We are replicating it directly–including the back-end \u002F database (caveat, we're currently using firebase, but that's not an option because we need self hosting, this will be replaced with something).",{"type":20,"tag":88,"props":120,"children":121},{},[122],{"type":29,"value":123},"The app will be self-hosted by the company.",{"type":20,"tag":84,"props":125,"children":126},{},[127,132,137],{"type":20,"tag":88,"props":128,"children":129},{},[130],{"type":29,"value":131},"greater data trust",{"type":20,"tag":88,"props":133,"children":134},{},[135],{"type":29,"value":136},"we are less liable for the uptime thus reducing our technical responsibility surface area",{"type":20,"tag":88,"props":138,"children":139},{},[140],{"type":29,"value":141},"we lose some ability to see problems, but can offset in other ways.",{"type":20,"tag":66,"props":143,"children":145},{"id":144},"pointers",[146],{"type":29,"value":15},{"type":20,"tag":84,"props":148,"children":149},{},[150,161,188],{"type":20,"tag":88,"props":151,"children":152},{},[153,159],{"type":20,"tag":37,"props":154,"children":156},{"className":155},[],[157],{"type":29,"value":158},"..\u002F..\u002F..\u002Fapp.qpoint.io",{"type":29,"value":160}," (the model: Nuxt 4 SPA, Pinia, the layer, Firebase auth and Firestore, the Pulse API plugin, org and context middleware, SAML routes, alerting, wizards).",{"type":20,"tag":88,"props":162,"children":163},{},[164,170,172,178,180,186],{"type":20,"tag":37,"props":165,"children":167},{"className":166},[],[168],{"type":29,"value":169},"..\u002F..\u002F..\u002Fqcontrol\u002Fcrates\u002Fqdash\u002Fui",{"type":29,"value":171}," on ",{"type":20,"tag":37,"props":173,"children":175},{"className":174},[],[176],{"type":29,"value":177},"feat\u002Fnew-pages",{"type":29,"value":179}," (the pages that move in) and its ",{"type":20,"tag":37,"props":181,"children":183},{"className":182},[],[184],{"type":29,"value":185},"docs\u002Fdata-interface.md",{"type":29,"value":187}," (the contract).",{"type":20,"tag":88,"props":189,"children":190},{},[191,193,199,201,207],{"type":29,"value":192},"c113 (baked demo worlds), c125 (wizard kit), c128 (the shared time window and the ",{"type":20,"tag":37,"props":194,"children":196},{"className":195},[],[197],{"type":29,"value":198},"from",{"type":29,"value":200},"\u002F",{"type":20,"tag":37,"props":202,"children":204},{"className":203},[],[205],{"type":29,"value":206},"to",{"type":29,"value":208}," the backend needs).",{"type":20,"tag":21,"props":210,"children":211},{},[212],{"type":29,"value":213},"Create a plan, ask any clarifying questions, suggest patterns I may not be considering.",1794599399716]