[{"data":1,"prerenderedAt":1713},["ShallowReactive",2],{"$fQ4edH9btRpFrBuo0U1yxsGdSX8T3oTizcGbumMz68U0":3},{"newThing":4,"project":5,"cycle":9,"sections":26,"threads":1553,"otherDocs":1558,"documents":1561,"images":1575,"archiveItems":1705,"links":1706},"Before: endpoints in adoption — J1\u002FJ2, coverage without a journey around it",{"id":6,"label":7,"liveBase":8},"design","Design",null,{"id":10,"num":11,"dir":12,"name":13,"title":14,"focus":15,"status":16,"statusNote":17,"created":18,"completed":8,"mode":19,"report":8,"recordless":20,"thumbnail":21,"imageCount":22,"artifactCount":23,"lastActivity":24,"hasPickup":20,"hasInitialPrompt":25},"c125",125,"c125.operations-wizard","operations-wizard","Operations Wizard","A tour-guide and self-documenting tool that attaches cleanly to any part of the UI, so the UI becomes the documentation. It has a hover help mode (after Ableton Live's Info View), a numbered-marker overlay for explaining a screen, step-by-step tours that move across pages and highlight what matters, and an AI tour guide over MCP from the start. Its first tour is the operations journey from the 2026-10-26 product session: install to enforcing on a pilot team.","active","kicked off 2026-10-27 — tour layer prototyped in the lab; the MCP guide, scripted and unscripted, deployed 2026-10-29 and drives a page on the dev server only; in-app chat split off to c127; prior-art survey and the wizard-kit replica not done","2026-10-27","alchemy for the tool and the MCP guide, which are new ground for us. Assemblage for the content, which is already spread across a dozen records.",false,"\u002Fcycles\u002Fdesign\u002Fc125-before-endpoints-adoption.png",25,7,"2026-11-04",true,[27,76,220,453,1445],{"key":28,"title":29,"empty":20,"ast":30},"why","Why",{"type":31,"children":32},"root",[33,41,46,71],{"type":34,"tag":35,"props":36,"children":37},"element","p",{},[38],{"type":39,"value":40},"text","Trials and pilots will run with little or no onboarding team. Peterson put it as \"That makes the wizard all the more important, because we won't have the sort of white glove… guidance\". The product has to carry the onboarding itself.",{"type":34,"tag":35,"props":42,"children":43},{},[44],{"type":39,"value":45},"The session described a journey that takes weeks: people and endpoints, deploy, visibility, a recommended baseline at Observe, frameworks, a pilot through an exception, then expand. A checklist alone can't explain why each step comes next, or what the thing on screen means once you get there. Mark's answer is to make the UI explain itself.",{"type":34,"tag":47,"props":48,"children":49},"ul",{},[50,56,61,66],{"type":34,"tag":51,"props":52,"children":53},"li",{},[54],{"type":39,"value":55},"Hover anything in help mode to learn what it is and how to use it.",{"type":34,"tag":51,"props":57,"children":58},{},[59],{"type":39,"value":60},"Drop numbered markers on a screen to walk someone through it.",{"type":34,"tag":51,"props":62,"children":63},{},[64],{"type":39,"value":65},"Step through a task across pages, with the relevant part of the screen highlighted.",{"type":34,"tag":51,"props":67,"children":68},{},[69],{"type":39,"value":70},"Let an AI harness give the tour: \"fire up our dashboard and your favorite harness\".",{"type":34,"tag":35,"props":72,"children":73},{},[74],{"type":39,"value":75},"Written once, the same explanations serve every mode, the docs and the agent.",{"key":77,"title":78,"empty":20,"ast":79},"objective","Objective",{"type":31,"children":80},[81,86],{"type":34,"tag":35,"props":82,"children":83},{},[84],{"type":39,"value":85},"Done looks like this, on the design site first:",{"type":34,"tag":87,"props":88,"children":89},"ol",{},[90,101,111,121,148,158,192,202],{"type":34,"tag":51,"props":91,"children":92},{},[93,99],{"type":34,"tag":94,"props":95,"children":96},"strong",{},[97],{"type":39,"value":98},"One annotation model and one attach protocol.",{"type":39,"value":100}," Any element can carry a help id. Each id has a title, a body, optional \"how to use\", a docs link and related ids. The internals stay free, but the protocol is small enough that attaching help never touches the component's own props (modularity = purpose + protocol).",{"type":34,"tag":51,"props":102,"children":103},{},[104,109],{"type":34,"tag":94,"props":105,"children":106},{},[107],{"type":39,"value":108},"Help mode.",{"type":39,"value":110}," A toggle and a fixed help panel, as in Ableton's Info View. Hovering an annotated element fills the panel. Nothing pops over the content you're trying to read.",{"type":34,"tag":51,"props":112,"children":113},{},[114,119],{"type":34,"tag":94,"props":115,"children":116},{},[117],{"type":39,"value":118},"Marker overlay.",{"type":39,"value":120}," Brightly coloured numbered circles with a white outline and a subtle drop shadow, pinned to parts of the screen, with a legend that explains each one. Usable live and in captures, so a screenshot can explain itself too.",{"type":34,"tag":51,"props":122,"children":123},{},[124,129,131,138,140,146],{"type":34,"tag":94,"props":125,"children":126},{},[127],{"type":39,"value":128},"The linear wizard, brought forward.",{"type":39,"value":130}," app.qpoint.io's ",{"type":34,"tag":132,"props":133,"children":135},"code",{"className":134},[],[136],{"type":39,"value":137},"WizardSteps",{"type":39,"value":139}," + ",{"type":34,"tag":132,"props":141,"children":143},{"className":142},[],[144],{"type":39,"value":145},"Sequin",{"type":39,"value":147}," kit is replicated first, then optimized (the layer's rule for extraction), and becomes the step container that tours and in-page tasks share. A task like \"track a framework\" or \"stage the recommended baseline\" is a short linear wizard. A tour is a wizard whose steps can live on different pages.",{"type":34,"tag":51,"props":149,"children":150},{},[151,156],{"type":34,"tag":94,"props":152,"children":153},{},[154],{"type":39,"value":155},"Tours.",{"type":39,"value":157}," Ordered steps that navigate between pages, highlight a target, show text and wait for a condition (\"first signal arrived\") when a step needs one. Progress comes from real state rather than ticked boxes, and it survives leaving and coming back.",{"type":34,"tag":51,"props":159,"children":160},{},[161,166,168,174,176,182,184,190],{"type":34,"tag":94,"props":162,"children":163},{},[164],{"type":39,"value":165},"The operations journey as the first tour.",{"type":39,"value":167}," J1–J7 from the brief, with Observe before Enforce as the easy path, not a lock. It runs on the lab's fixture worlds (c113 ",{"type":34,"tag":132,"props":169,"children":171},{"className":170},[],[172],{"type":39,"value":173},"first-run@*",{"type":39,"value":175},", c121 ",{"type":34,"tag":132,"props":177,"children":179},{"className":178},[],[180],{"type":39,"value":181},"adoption",{"type":39,"value":183}," → ",{"type":34,"tag":132,"props":185,"children":187},{"className":186},[],[188],{"type":39,"value":189},"established",{"type":39,"value":191},").",{"type":34,"tag":51,"props":193,"children":194},{},[195,200],{"type":34,"tag":94,"props":196,"children":197},{},[198],{"type":39,"value":199},"An AI tour guide over MCP.",{"type":39,"value":201}," An MCP server any harness can connect to. It lists tours, reads a page's annotations, starts a tour, moves to a step, highlights a target and explains it. The dashboard on screen follows along. It is demoed end to end with Claude Code against the design site.",{"type":34,"tag":51,"props":203,"children":204},{},[205,210,212,218],{"type":34,"tag":94,"props":206,"children":207},{},[208],{"type":39,"value":209},"Every mode demoed on one lab page",{"type":39,"value":211}," (likely ",{"type":34,"tag":132,"props":213,"children":215},{"className":214},[],[216],{"type":39,"value":217},"\u002Fpages\u002Fphase4\u002Fmock\u002Fpolicies",{"type":39,"value":219},") with empty, minimal, typical, overflow and error cases, before anything is extracted to the layer or ported to qdash.",{"key":221,"title":222,"empty":20,"ast":223},"scope","Scope",{"type":31,"children":224},[225,230,357,362,385,390],{"type":34,"tag":35,"props":226,"children":227},{},[228],{"type":39,"value":229},"In:",{"type":34,"tag":47,"props":231,"children":232},{},[233,273,294,307,312,347,352],{"type":34,"tag":51,"props":234,"children":235},{},[236,238,243,245,251,252,258,259,265,266,271],{"type":39,"value":237},"replicating app.qpoint.io's wizard kit (",{"type":34,"tag":132,"props":239,"children":241},{"className":240},[],[242],{"type":39,"value":137},{"type":39,"value":244},", ",{"type":34,"tag":132,"props":246,"children":248},{"className":247},[],[249],{"type":39,"value":250},"EduHarness",{"type":39,"value":244},{"type":34,"tag":132,"props":253,"children":255},{"className":254},[],[256],{"type":39,"value":257},"PingListener",{"type":39,"value":244},{"type":34,"tag":132,"props":260,"children":262},{"className":261},[],[263],{"type":39,"value":264},"FinalStep",{"type":39,"value":244},{"type":34,"tag":132,"props":267,"children":269},{"className":268},[],[270],{"type":39,"value":145},{"type":39,"value":272},") on the design site as the starting point for linear tasks and tour steps; its layer extraction comes after the demo holds;",{"type":34,"tag":51,"props":274,"children":275},{},[276,278,284,286,292],{"type":39,"value":277},"a prior-art survey: Ableton Info View; product-tour libraries (Shepherd, Driver.js, Intro.js) and adoption tools (Pendo, Appcues); annotation and redline tools; c30 ",{"type":34,"tag":132,"props":279,"children":281},{"className":280},[],[282],{"type":39,"value":283},"\u002Ftour",{"type":39,"value":285},"; the qdash and app.qpoint.io checklists; c121 07; c81's ",{"type":34,"tag":132,"props":287,"children":289},{"className":288},[],[290],{"type":39,"value":291},"adoptionSteps",{"type":39,"value":293},";",{"type":34,"tag":51,"props":295,"children":296},{},[297,299,305],{"type":39,"value":298},"the annotation registry and its content, written in the same voice as ",{"type":34,"tag":132,"props":300,"children":302},{"className":301},[],[303],{"type":39,"value":304},"phase4\u002Fgovernance-model.vue",{"type":39,"value":306},", which is the doc each journey step links to;",{"type":34,"tag":51,"props":308,"children":309},{},[310],{"type":39,"value":311},"the attach protocol (a directive, a data attribute or a wrapper, decided in Phase 1);",{"type":34,"tag":51,"props":313,"children":314},{},[315,317,323,324,330,331,337,339,345],{"type":39,"value":316},"help mode, the marker overlay and the tour runner on the design site, composed from the layer's ",{"type":34,"tag":132,"props":318,"children":320},{"className":319},[],[321],{"type":39,"value":322},"UxPopover",{"type":39,"value":244},{"type":34,"tag":132,"props":325,"children":327},{"className":326},[],[328],{"type":39,"value":329},"UxHelpText",{"type":39,"value":244},{"type":34,"tag":132,"props":332,"children":334},{"className":333},[],[335],{"type":39,"value":336},"UxHoverBox",{"type":39,"value":338}," and ",{"type":34,"tag":132,"props":340,"children":342},{"className":341},[],[343],{"type":39,"value":344},"UxStickyBand",{"type":39,"value":346}," before anything new is made;",{"type":34,"tag":51,"props":348,"children":349},{},[350],{"type":39,"value":351},"the tour MCP server and the page channel it drives;",{"type":34,"tag":51,"props":353,"children":354},{},[355],{"type":39,"value":356},"the operations-journey tour content (J1–J7) and its progress model.",{"type":34,"tag":35,"props":358,"children":359},{},[360],{"type":39,"value":361},"Out:",{"type":34,"tag":47,"props":363,"children":364},{},[365,370,375,380],{"type":34,"tag":51,"props":366,"children":367},{},[368],{"type":39,"value":369},"the qdash port and layer extraction. They follow once the demo holds and get their own cycle or thread.",{"type":34,"tag":51,"props":371,"children":372},{},[373],{"type":39,"value":374},"the tray-only (self-install, no central UI) journey beyond a pointer. Brief open question 5.",{"type":34,"tag":51,"props":376,"children":377},{},[378],{"type":39,"value":379},"Peterson's journey\u002Fwizard intent. We draw against it when it lands, not ahead of it. Until then the brief's J1–J7 is the working order.",{"type":34,"tag":51,"props":381,"children":382},{},[383],{"type":39,"value":384},"frameworks and policy page content. c123 and c126 own those pages; this cycle only annotates them.",{"type":34,"tag":35,"props":386,"children":387},{},[388],{"type":39,"value":389},"Rough phases:",{"type":34,"tag":47,"props":391,"children":392},{},[393,403,413,423,433,443],{"type":34,"tag":51,"props":394,"children":395},{},[396,401],{"type":34,"tag":94,"props":397,"children":398},{},[399],{"type":39,"value":400},"0. Kick-off.",{"type":39,"value":402}," Before captures of the pages the first tour touches, and the prior-art survey.",{"type":34,"tag":51,"props":404,"children":405},{},[406,411],{"type":34,"tag":94,"props":407,"children":408},{},[409],{"type":39,"value":410},"1. The model.",{"type":39,"value":412}," The annotation model, the attach protocol and the registry. The app.qpoint.io wizard kit is replicated on the design site.",{"type":34,"tag":51,"props":414,"children":415},{},[416,421],{"type":34,"tag":94,"props":417,"children":418},{},[419],{"type":39,"value":420},"2. The three on-screen modes",{"type":39,"value":422},", built on one lab page.",{"type":34,"tag":51,"props":424,"children":425},{},[426,431],{"type":34,"tag":94,"props":427,"children":428},{},[429],{"type":39,"value":430},"3. The operations tour.",{"type":39,"value":432}," J1–J7 across lab pages and fixture worlds.",{"type":34,"tag":51,"props":434,"children":435},{},[436,441],{"type":34,"tag":94,"props":437,"children":438},{},[439],{"type":39,"value":440},"4. The MCP tour guide",{"type":39,"value":442},", driving the same page.",{"type":34,"tag":51,"props":444,"children":445},{},[446,451],{"type":34,"tag":94,"props":447,"children":448},{},[449],{"type":39,"value":450},"5. Review",{"type":39,"value":452},", then plan the extraction and port.",{"key":454,"title":455,"empty":20,"ast":456},"key-changes","Key Changes",{"type":31,"children":457},[458],{"type":34,"tag":47,"props":459,"children":460},{},[461,471,497,560,591,670,736,761,823,869,918,1036,1101,1167,1229,1262,1324,1380,1428],{"type":34,"tag":51,"props":462,"children":463},{},[464,469],{"type":34,"tag":94,"props":465,"children":466},{},[467],{"type":39,"value":468},"kick-off (2026-10-27):",{"type":39,"value":470}," Stage 1 and Stage 2 written together from Mark's direction and the market-analyst brief, alongside c123 (frameworks) and c126 (policies). Nothing built yet.",{"type":34,"tag":51,"props":472,"children":473},{},[474,479,481,487,489,495],{"type":34,"tag":94,"props":475,"children":476},{},[477],{"type":39,"value":478},"prior art located (2026-10-27):",{"type":39,"value":480}," Mark named app.qpoint.io's simple linear wizard as the prior art and thought it might be in q-nuxt-layer. It isn't: the kit is still app-local in ",{"type":34,"tag":132,"props":482,"children":484},{"className":483},[],[485],{"type":39,"value":486},"app.qpoint.io\u002Fapp\u002Fcomponents\u002Fwizard\u002F",{"type":39,"value":488}," with ",{"type":34,"tag":132,"props":490,"children":492},{"className":491},[],[493],{"type":39,"value":494},"utils\u002Fsequin.js",{"type":39,"value":496},", unchanged since c23 classed it app-local. Objective 4 and Phase 1 now replicate it first.",{"type":34,"tag":51,"props":498,"children":499},{},[500,505,507,513,515,521,522,528,529,535,536,542,544,550,552,558],{"type":34,"tag":94,"props":501,"children":502},{},[503],{"type":39,"value":504},"before captures (2026-10-27):",{"type":39,"value":506}," thread ",{"type":34,"tag":132,"props":508,"children":510},{"className":509},[],[511],{"type":39,"value":512},"c125-before",{"type":39,"value":514},": ",{"type":34,"tag":132,"props":516,"children":518},{"className":517},[],[519],{"type":39,"value":520},"c125-before-home-adoption",{"type":39,"value":244},{"type":34,"tag":132,"props":523,"children":525},{"className":524},[],[526],{"type":39,"value":527},"-endpoints-adoption",{"type":39,"value":244},{"type":34,"tag":132,"props":530,"children":532},{"className":531},[],[533],{"type":39,"value":534},"-policies-adoption",{"type":39,"value":338},{"type":34,"tag":132,"props":537,"children":539},{"className":538},[],[540],{"type":39,"value":541},"-governance-model",{"type":39,"value":543}," in ",{"type":34,"tag":132,"props":545,"children":547},{"className":546},[],[548],{"type":39,"value":549},"public\u002Fcycles\u002Fdesign\u002F",{"type":39,"value":551},". Program ",{"type":34,"tag":132,"props":553,"children":555},{"className":554},[],[556],{"type":39,"value":557},"scripts\u002Fshot-programs\u002Fc125-before.json",{"type":39,"value":559},". They show the lab in adoption with no help, markers or tour: the pages the journey would start on. The app.qpoint.io wizard kit isn't shot yet, because its dev server isn't running and the project is stale.",{"type":34,"tag":51,"props":561,"children":562},{},[563,568,570,575,577,582,584,589],{"type":34,"tag":94,"props":564,"children":565},{},[566],{"type":39,"value":567},"rulings (2026-10-27):",{"type":39,"value":569}," Mark answered two kick-off questions. (1) The MCP tour guide drives the ",{"type":34,"tag":94,"props":571,"children":572},{},[573],{"type":39,"value":574},"design-site lab first",{"type":39,"value":576},"; qdash comes after. That settles Phase 4's target, though the transport question (open question 1) stays open. (2) The app.qpoint.io wizard kit is ",{"type":34,"tag":94,"props":578,"children":579},{},[580],{"type":39,"value":581},"documented first",{"type":39,"value":583}," (its own dev server, captures, a prior-art note), ",{"type":34,"tag":94,"props":585,"children":586},{},[587],{"type":39,"value":588},"then copied",{"type":39,"value":590}," onto the design site.",{"type":34,"tag":51,"props":592,"children":593},{},[594,599,601,607,609,615,617,628,630,636,638,644,646,652,654,660,662,668],{"type":34,"tag":94,"props":595,"children":596},{},[597],{"type":39,"value":598},"wizard kit, documented then copied (2026-10-27):",{"type":39,"value":600}," app.qpoint.io ran on :3301, since its content watcher holds :3300. Thread ",{"type":34,"tag":132,"props":602,"children":604},{"className":603},[],[605],{"type":39,"value":606},"c125-wizard-kit",{"type":39,"value":608}," shot the A–D demo in tab mode, the only ",{"type":34,"tag":132,"props":610,"children":612},{"className":611},[],[613],{"type":39,"value":614},"\u002Fdev\u002Fwizards",{"type":39,"value":616}," page that still resolves. ",{"type":34,"tag":618,"props":619,"children":621},"a",{"href":620},"\u002Fcycles\u002Fdesign\u002Fc125\u002Fdoc\u002Fprior-art-wizard-kit",[622],{"type":34,"tag":132,"props":623,"children":625},{"className":624},[],[626],{"type":39,"value":627},"prior-art-wizard-kit.md",{"type":39,"value":629}," records the anatomy (Sequin, per-step overrides, the form, listener and end modes), the seven flows it shipped in, what it hands c125, and what was found while copying. The kit is replicated verbatim except for named changes in ",{"type":34,"tag":132,"props":631,"children":633},{"className":632},[],[634],{"type":39,"value":635},"app\u002Fcomponents\u002Freplicas\u002Fwizard\u002F",{"type":39,"value":637}," (",{"type":34,"tag":132,"props":639,"children":641},{"className":640},[],[642],{"type":39,"value":643},"ReplicasWizard*",{"type":39,"value":645},", plus the app-local LinkBack) and ",{"type":34,"tag":132,"props":647,"children":649},{"className":648},[],[650],{"type":39,"value":651},"app\u002Futils\u002Fsequin.js",{"type":39,"value":653},". It's demoed at ",{"type":34,"tag":132,"props":655,"children":657},{"className":656},[],[658],{"type":39,"value":659},"\u002Fpages\u002Fphase4\u002Fwizard-kit",{"type":39,"value":661}," (tab, centred and linear modes, the listener → end install shape, the pieces alone), and thread ",{"type":34,"tag":132,"props":663,"children":665},{"className":664},[],[666],{"type":39,"value":667},"c125-wizard-replica",{"type":39,"value":669}," holds five shots of it working.",{"type":34,"tag":51,"props":671,"children":672},{},[673,678,680,686,687,693,694,700,702,708,710,716,718,724,726,734],{"type":34,"tag":94,"props":674,"children":675},{},[676],{"type":39,"value":677},"the richer radar (2026-10-27):",{"type":39,"value":679}," Mark's old branch was app.qpoint.io ",{"type":34,"tag":132,"props":681,"children":683},{"className":682},[],[684],{"type":39,"value":685},"origin\u002Fmask-image",{"type":39,"value":637},{"type":34,"tag":132,"props":688,"children":690},{"className":689},[],[691],{"type":39,"value":692},"d82388d",{"type":39,"value":338},{"type":34,"tag":132,"props":695,"children":697},{"className":696},[],[698],{"type":39,"value":699},"0bfe673",{"type":39,"value":701},", 2024-06-05, never merged). The twelve radar assets are lifted into ",{"type":34,"tag":132,"props":703,"children":705},{"className":704},[],[706],{"type":39,"value":707},"app\u002Fassets\u002Fimages\u002Fwizard\u002Fmask-image\u002F",{"type":39,"value":709},". Its ",{"type":34,"tag":132,"props":711,"children":713},{"className":712},[],[714],{"type":39,"value":715},"Radar.vue",{"type":39,"value":717}," is now ",{"type":34,"tag":132,"props":719,"children":721},{"className":720},[],[722],{"type":39,"value":723},"ReplicasWizardRadar",{"type":39,"value":725},", a black disc with line and sweep layers turning at 12 s and 6 s, and it's grafted into the replica PingListener as the branch had it. See ",{"type":34,"tag":618,"props":727,"children":728},{"href":620},[729],{"type":34,"tag":132,"props":730,"children":732},{"className":731},[],[733],{"type":39,"value":627},{"type":39,"value":735}," § The richer radar. Checked on :3000: both layers load and turn, and the console shows no errors.",{"type":34,"tag":51,"props":737,"children":738},{},[739,744,746,751,753,759],{"type":34,"tag":94,"props":740,"children":741},{},[742],{"type":39,"value":743},"radar sizes (2026-10-27):",{"type":39,"value":745}," ",{"type":34,"tag":132,"props":747,"children":749},{"className":748},[],[750],{"type":39,"value":723},{"type":39,"value":752}," takes ",{"type":34,"tag":132,"props":754,"children":756},{"className":755},[],[757],{"type":39,"value":758},"size",{"type":39,"value":760}," (px, default 38, as on the branch), and both layers fill the disc. The wizard-kit page's pieces section shows it at 38, 96, 160 and 280 px. The SVG layers stay crisp at 280.",{"type":34,"tag":51,"props":762,"children":763},{},[764,769,770,775,776,782,784,790,792,798,799,805,807,813,815,821],{"type":34,"tag":94,"props":765,"children":766},{},[767],{"type":39,"value":768},"radar line colour (2026-10-27):",{"type":39,"value":745},{"type":34,"tag":132,"props":771,"children":773},{"className":772},[],[774],{"type":39,"value":723},{"type":39,"value":752},{"type":34,"tag":132,"props":777,"children":779},{"className":778},[],[780],{"type":39,"value":781},"lineColor",{"type":39,"value":783}," (white, leaf, grape, grape-400 (added on request) or grey-500; default white, as on the branch). The two SVG layers are now inlined via ",{"type":34,"tag":132,"props":785,"children":787},{"className":786},[],[788],{"type":39,"value":789},"?raw",{"type":39,"value":791},", with ",{"type":34,"tag":132,"props":793,"children":795},{"className":794},[],[796],{"type":39,"value":797},"#fff",{"type":39,"value":183},{"type":34,"tag":132,"props":800,"children":802},{"className":801},[],[803],{"type":39,"value":804},"currentColor",{"type":39,"value":806}," and their ",{"type":34,"tag":132,"props":808,"children":810},{"className":809},[],[811],{"type":39,"value":812},"cls-*",{"type":39,"value":814}," classes prefixed per layer, because inline SVG ",{"type":34,"tag":132,"props":816,"children":818},{"className":817},[],[819],{"type":39,"value":820},"\u003Cstyle>",{"type":39,"value":822}," is document-global and the two files' classes collide. The grey rings (#545454) stay grey. There's a select for it on the wizard-kit radar card. On leaf and grape, a hairline seam sometimes shows at the sweep's edge. It's in the branch artwork, and white hides it.",{"type":34,"tag":51,"props":824,"children":825},{},[826,831,833,839,841,847,849,855,857,867],{"type":34,"tag":94,"props":827,"children":828},{},[829],{"type":39,"value":830},"the tour layer, prototyped from c123 (2026-10-27):",{"type":39,"value":832}," c123's addressable OWASP® tour needed a tour runtime before this cycle's Phase 1, so a working prototype is in the lab. Pages carry ",{"type":34,"tag":132,"props":834,"children":836},{"className":835},[],[837],{"type":39,"value":838},"data-qp-id",{"type":39,"value":840}," (and an optional ",{"type":34,"tag":132,"props":842,"children":844},{"className":843},[],[845],{"type":39,"value":846},"data-qp-key",{"type":39,"value":848}," for rows) and nothing else. ",{"type":34,"tag":132,"props":850,"children":852},{"className":851},[],[853],{"type":39,"value":854},"\u003CTourHost \u002F>",{"type":39,"value":856}," is mounted once in a layout. The panel floats in its own dark-grape material, the ring and callouts follow targets by ID, and Examples float real components with example props over their live counterparts. Drills send a simulated violation through the alert path and are kept in the delivery log, never in findings. Content is data, and an adapter is the one seam to the app. ",{"type":34,"tag":618,"props":858,"children":860},{"href":859},"\u002Fcycles\u002Fdesign\u002Fc125\u002Fdoc\u002Ftour-layer",[861],{"type":34,"tag":132,"props":862,"children":864},{"className":863},[],[865],{"type":39,"value":866},"tour-layer.md",{"type":39,"value":868}," has the protocol, the materials, the drill rules and six work packages (W1–W6), each with where to pick it up and what done looks like. It answers Objective 1's attach protocol in favour of a data attribute; Phase 1 should confirm that or replace it.",{"type":34,"tag":51,"props":870,"children":871},{},[872,877,878,884,885,891,892,898,900,908,910,916],{"type":34,"tag":94,"props":873,"children":874},{},[875],{"type":39,"value":876},"mcp-guide, written up (2026-10-29):",{"type":39,"value":506},{"type":34,"tag":132,"props":879,"children":881},{"className":880},[],[882],{"type":39,"value":883},"mcp-guide",{"type":39,"value":637},{"type":34,"tag":618,"props":886,"children":888},{"href":887},"\u002Fcycles\u002Fdesign\u002Fc125\u002Fdoc\u002Fmcp-guide-prompt",[889],{"type":39,"value":890},"prompt",{"type":39,"value":244},{"type":34,"tag":618,"props":893,"children":895},{"href":894},"\u002Fcycles\u002Fdesign\u002Fc125\u002Fdoc\u002Fmcp-guide-plan",[896],{"type":39,"value":897},"plan",{"type":39,"value":899},"), raised from c123's session: tours a person's own agent can drive over MCP. The plan proposes an answer to OQ1, with three rules: actions stay with the person, the person's clicks win, and no dashboard changes. Its test ladder runs on the design site before anything reaches qdash: a demo page, a Playwright walk of every step, an MCP contract script, error and safety cases, Claude Code end to end, then the same script against qdash. Added as W7 in ",{"type":34,"tag":618,"props":901,"children":902},{"href":859},[903],{"type":34,"tag":132,"props":904,"children":906},{"className":905},[],[907],{"type":39,"value":866},{"type":39,"value":909},". Nothing built: the panel-iterations thread (",{"type":34,"tag":132,"props":911,"children":913},{"className":912},[],[914],{"type":39,"value":915},"tour-panel-iterations-prompt.md",{"type":39,"value":917},") is in the tour files the same day, so the build waits for them to be quiet.",{"type":34,"tag":51,"props":919,"children":920},{},[921,926,928,934,935,941,943,949,951,956,958,964,965,971,973,979,981,987,988,994,996,1002,1004,1010,1012,1018,1020,1026,1028,1034],{"type":34,"tag":94,"props":922,"children":923},{},[924],{"type":39,"value":925},"mcp-guide, built (2026-10-29):",{"type":39,"value":927}," the same day, once the tour files had been quiet for about 12 minutes. ",{"type":34,"tag":132,"props":929,"children":931},{"className":930},[],[932],{"type":39,"value":933},"window.qpTour",{"type":39,"value":637},{"type":34,"tag":132,"props":936,"children":938},{"className":937},[],[939],{"type":39,"value":940},"useTourApi",{"type":39,"value":942},"), ",{"type":34,"tag":132,"props":944,"children":946},{"className":945},[],[947],{"type":39,"value":948},"\u003CTourAgent \u002F>",{"type":39,"value":950}," beside ",{"type":34,"tag":132,"props":952,"children":954},{"className":953},[],[955],{"type":39,"value":854},{"type":39,"value":957},", a dev-only relay (",{"type":34,"tag":132,"props":959,"children":961},{"className":960},[],[962],{"type":39,"value":963},"server\u002Fapi\u002Ftour\u002F*",{"type":39,"value":244},{"type":34,"tag":132,"props":966,"children":968},{"className":967},[],[969],{"type":39,"value":970},"server\u002Futils\u002FtourRelay.ts",{"type":39,"value":972},") and the MCP endpoint ",{"type":34,"tag":132,"props":974,"children":976},{"className":975},[],[977],{"type":39,"value":978},"\u002Fapi\u002Ftour\u002Fmcp",{"type":39,"value":980},", with 11 tools and no verb for a step's action. ",{"type":34,"tag":132,"props":982,"children":984},{"className":983},[],[985],{"type":39,"value":986},"TourHost",{"type":39,"value":338},{"type":34,"tag":132,"props":989,"children":991},{"className":990},[],[992],{"type":39,"value":993},"useTour",{"type":39,"value":995}," are unchanged; the panel-iterations thread had them open. The demo page is ",{"type":34,"tag":132,"props":997,"children":999},{"className":998},[],[1000],{"type":39,"value":1001},"\u002Fpages\u002Fphase4\u002Ftour-mcp",{"type":39,"value":1003},". ",{"type":34,"tag":132,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":39,"value":1009},"scripts\u002Ftour-drive-check.mjs",{"type":39,"value":1011}," passes 62 checks across rungs 1–4. In rung 5, Claude Code walked stop 2 on the embedded lab and left Stage and Simulate violation to the person (",{"type":34,"tag":618,"props":1013,"children":1015},{"href":1014},"\u002Fcycles\u002Fdesign\u002Fc125\u002Fdoc\u002Fmcp-guide-rung5",[1016],{"type":39,"value":1017},"transcript",{"type":39,"value":1019},"). The plan's § Built lists what's left: a recorded capture, a second harness, the no-tab case, and ",{"type":34,"tag":132,"props":1021,"children":1023},{"className":1022},[],[1024],{"type":39,"value":1025},"nuxt generate",{"type":39,"value":1027}," with the new SDK dependency. Committed in ",{"type":34,"tag":132,"props":1029,"children":1031},{"className":1030},[],[1032],{"type":39,"value":1033},"f351ccdf7c",{"type":39,"value":1035},".",{"type":34,"tag":51,"props":1037,"children":1038},{},[1039,1044,1046,1052,1054,1060,1062,1068,1070,1076,1078,1084,1086,1092,1094,1099],{"type":34,"tag":94,"props":1040,"children":1041},{},[1042],{"type":39,"value":1043},"mcp-guide, the unscripted guide written up (2026-10-29):",{"type":39,"value":1045}," Mark asked whether an agent could answer ",{"type":34,"tag":1047,"props":1048,"children":1049},"em",{},[1050],{"type":39,"value":1051},"\"Where do I go to add a Slack integration?\"",{"type":39,"value":1053}," with no tour, using the callout. It can. The plan's ",{"type":34,"tag":618,"props":1055,"children":1057},{"href":1056},"\u002Fcycles\u002Fdesign\u002Fc125\u002Fdoc\u002Fmcp-guide-plan#the-unscripted-guide-written-up-2026-10-29-not-built",[1058],{"type":39,"value":1059},"§ The unscripted guide",{"type":39,"value":1061}," adds three tools: ",{"type":34,"tag":132,"props":1063,"children":1065},{"className":1064},[],[1066],{"type":39,"value":1067},"find-in-app",{"type":39,"value":1069}," (searches an app map on the server), ",{"type":34,"tag":132,"props":1071,"children":1073},{"className":1072},[],[1074],{"type":39,"value":1075},"open-page",{"type":39,"value":1077}," (any page) and ",{"type":34,"tag":132,"props":1079,"children":1081},{"className":1080},[],[1082],{"type":39,"value":1083},"point",{"type":39,"value":1085}," (a ring plus a ",{"type":34,"tag":132,"props":1087,"children":1089},{"className":1088},[],[1090],{"type":39,"value":1091},"TourCallout",{"type":39,"value":1093}," with one sentence). It also adds IDs on the rail and the Connect button. The app map is Objective 1's annotation registry, started from the agent's side. One rule changes: ",{"type":34,"tag":132,"props":1095,"children":1097},{"className":1096},[],[1098],{"type":39,"value":1083},{"type":39,"value":1100}," puts a short label on screen, and the explanation stays in chat. The plan has rungs U0–U4, and U4 asks the exact question in Claude Code. Not built.",{"type":34,"tag":51,"props":1102,"children":1103},{},[1104,1109,1110,1116,1118,1123,1124,1130,1131,1136,1138,1143,1145,1151,1153,1159,1161,1166],{"type":34,"tag":94,"props":1105,"children":1106},{},[1107],{"type":39,"value":1108},"mcp-guide, the unscripted guide built (2026-10-29):",{"type":39,"value":745},{"type":34,"tag":132,"props":1111,"children":1113},{"className":1112},[],[1114],{"type":39,"value":1115},"app\u002Fdata\u002Fapp-map.ts",{"type":39,"value":1117},", which covers 29 pages and 66 regions and is checked against the pages by U1. Four tools: ",{"type":34,"tag":132,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":39,"value":1067},{"type":39,"value":244},{"type":34,"tag":132,"props":1125,"children":1127},{"className":1126},[],[1128],{"type":39,"value":1129},"read-page",{"type":39,"value":244},{"type":34,"tag":132,"props":1132,"children":1134},{"className":1133},[],[1135],{"type":39,"value":1075},{"type":39,"value":1137}," (rings the rail, then goes) and ",{"type":34,"tag":132,"props":1139,"children":1141},{"className":1140},[],[1142],{"type":39,"value":1083},{"type":39,"value":1144}," (a ring and v4's callout). Rail IDs, plus Connect and connector IDs. ",{"type":34,"tag":132,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":39,"value":1150},"scripts\u002Ftour-guide-ask.mjs",{"type":39,"value":1152}," asks a real harness any question. 166 checks pass. In Claude Code, three questions asked exactly as written each found the page, rang the way and read the region before answering; none pressed anything. For Slack it said \"already connected; config changes it\" (",{"type":34,"tag":618,"props":1154,"children":1156},{"href":1155},"mcp-guide-u4\u002F",[1157],{"type":39,"value":1158},"answers and captures",{"type":39,"value":1160},"). The map followed c123's port of qdash's pages, which landed mid-build. Committed in ",{"type":34,"tag":132,"props":1162,"children":1164},{"className":1163},[],[1165],{"type":39,"value":1033},{"type":39,"value":1035},{"type":34,"tag":51,"props":1168,"children":1169},{},[1170,1183,1185,1191,1193,1198,1200,1206,1208,1214,1216,1221,1223,1228],{"type":34,"tag":94,"props":1171,"children":1172},{},[1173,1175,1181],{"type":39,"value":1174},"lab knob ",{"type":34,"tag":132,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":39,"value":1180},"?draft=empty",{"type":39,"value":1182}," (2026-10-29):",{"type":39,"value":1184}," Mark asked to clear the seed's proposed changes from every page (and noted that demo mode, Shift+D, already hides the tray and the theme editor). ",{"type":34,"tag":132,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":39,"value":1190},"useGovernanceMock",{"type":39,"value":1192}," gains ",{"type":34,"tag":132,"props":1194,"children":1196},{"className":1195},[],[1197],{"type":39,"value":1180},{"type":39,"value":1199},": the stage's world with no lines in the shared draft and no saves in the log that made them. ",{"type":34,"tag":132,"props":1201,"children":1203},{"className":1202},[],[1204],{"type":39,"value":1205},"?draft=seeded",{"type":39,"value":1207}," brings the twelve back. It's kept in lab links like ",{"type":34,"tag":132,"props":1209,"children":1211},{"className":1210},[],[1212],{"type":39,"value":1213},"?stage",{"type":39,"value":1215},", and it's sticky: a link without it leaves the draft as it is. The query is now watched, so a page that doesn't call ",{"type":34,"tag":132,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":39,"value":1190},{"type":39,"value":1222}," itself still reseeds on a stage or draft change. Committed in ",{"type":34,"tag":132,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":39,"value":1033},{"type":39,"value":1035},{"type":34,"tag":51,"props":1230,"children":1231},{},[1232,1237,1239,1245,1247,1252,1254,1260],{"type":34,"tag":94,"props":1233,"children":1234},{},[1235],{"type":39,"value":1236},"tour runtime, from c123's tours (2026-10-29):",{"type":39,"value":1238}," c123's five tours (",{"type":34,"tag":618,"props":1240,"children":1242},{"href":1241},"\u002Fcycles\u002Fdesign\u002Fc123\u002Fdoc\u002FCYCLE",[1243],{"type":39,"value":1244},"c123 CYCLE.md § tours",{"type":39,"value":1246},") added to ",{"type":34,"tag":132,"props":1248,"children":1250},{"className":1249},[],[1251],{"type":39,"value":986},{"type":39,"value":1253}," and the v5 panel, with the panel thread's go-ahead. Follow the page: the person's own click onto the next step's page advances the tour. Clickable stop markers. Spots: buttons in the panel, each ringing one area. A safe area that stacks pinned chrome. The glide is ease-in-out quint. A step's ",{"type":34,"tag":132,"props":1255,"children":1257},{"className":1256},[],[1258],{"type":39,"value":1259},"short",{"type":39,"value":1261}," names it on the Next button, in place of its beat. Committed with this cycle's panel and mcp-guide work on 2026-10-29.",{"type":34,"tag":51,"props":1263,"children":1264},{},[1265,1270,1271,1277,1279,1285,1286,1292,1294,1300,1302,1307,1308,1314,1316,1322],{"type":34,"tag":94,"props":1266,"children":1267},{},[1268],{"type":39,"value":1269},"mcp-guide knows the dashboard (2026-10-29):",{"type":39,"value":745},{"type":34,"tag":132,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":39,"value":1276},"guide-knowledge.ts",{"type":39,"value":1278}," makes the policy catalog (19 policies) and the frameworks (5, with 44 requirements) searchable in a customer's words, through rows on ",{"type":34,"tag":132,"props":1280,"children":1282},{"className":1281},[],[1283],{"type":39,"value":1284},"policies.row",{"type":39,"value":338},{"type":34,"tag":132,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":39,"value":1291},"compliance.framework",{"type":39,"value":1293},". It adds a hand-written word list per policy, 17 concepts, and an ",{"type":34,"tag":132,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":39,"value":1299},"explain",{"type":39,"value":1301}," tool. ",{"type":34,"tag":132,"props":1303,"children":1305},{"className":1304},[],[1306],{"type":39,"value":1075},{"type":39,"value":752},{"type":34,"tag":132,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":39,"value":1313},"{ policyId }",{"type":39,"value":1315},". New IDs on the Control Center's rows and eight on the policy page's sections. The server is renamed ",{"type":34,"tag":132,"props":1317,"children":1319},{"className":1318},[],[1320],{"type":39,"value":1321},"qpoint-guide",{"type":39,"value":1323},". 189 checks pass. In Claude Code, SSH keys went to the P-FILES row, and DeepSeek went to P-PROVIDERS' Mode with its live state.",{"type":34,"tag":51,"props":1325,"children":1326},{},[1327,1332,1334,1340,1342,1348,1349,1354,1356,1362,1364,1369,1371,1379],{"type":34,"tag":94,"props":1328,"children":1329},{},[1330],{"type":39,"value":1331},"focus only what's specific (2026-10-29):",{"type":39,"value":1333}," Mark: \"I don't know that we gain anything by highlighting the whole page.\" A cloud session's ",{"type":34,"tag":132,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":39,"value":1339},"b3ebf9106f",{"type":39,"value":1341},": a step rings the one region that answers its question, and Dim and Fade fall back to the ring past about half the viewport (",{"type":34,"tag":132,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":39,"value":1347},"effectiveFocus",{"type":39,"value":543},{"type":34,"tag":132,"props":1350,"children":1352},{"className":1351},[],[1353],{"type":39,"value":986},{"type":39,"value":1355},"). It was written against an older ",{"type":34,"tag":132,"props":1357,"children":1359},{"className":1358},[],[1360],{"type":39,"value":1361},"Host.vue",{"type":39,"value":1363}," and reapplied by hand in ",{"type":34,"tag":132,"props":1365,"children":1367},{"className":1366},[],[1368],{"type":39,"value":1033},{"type":39,"value":1370},". Rule in ",{"type":34,"tag":618,"props":1372,"children":1373},{"href":859},[1374],{"type":34,"tag":132,"props":1375,"children":1377},{"className":1376},[],[1378],{"type":39,"value":866},{"type":39,"value":1035},{"type":34,"tag":51,"props":1381,"children":1382},{},[1383,1388,1390,1395,1397,1403,1405,1410,1412,1418,1420,1426],{"type":34,"tag":94,"props":1384,"children":1385},{},[1386],{"type":39,"value":1387},"mcp-guide, committed and deployed (2026-10-29):",{"type":39,"value":1389}," the c123 tours session's commit needed these files to build, so Mark approved including them: ",{"type":34,"tag":132,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":39,"value":1033},{"type":39,"value":1396}," on ",{"type":34,"tag":132,"props":1398,"children":1400},{"className":1399},[],[1401],{"type":39,"value":1402},"c123\u002Fowasp-agentic-tour",{"type":39,"value":1404},", pushed and deployed. ",{"type":34,"tag":132,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":39,"value":1025},{"type":39,"value":1411}," passed with the MCP SDK and needed no prerender exclusions. The live ",{"type":34,"tag":132,"props":1413,"children":1415},{"className":1414},[],[1416],{"type":39,"value":1417},"_deploy.json",{"type":39,"value":1419}," showed ",{"type":34,"tag":132,"props":1421,"children":1423},{"className":1422},[],[1424],{"type":39,"value":1425},"f351ccdf",{"type":39,"value":1427}," with 0 uncommitted. The guide only drives a page on the dev server; deployed, the relay isn't there.",{"type":34,"tag":51,"props":1429,"children":1430},{},[1431,1436,1438,1444],{"type":34,"tag":94,"props":1432,"children":1433},{},[1434],{"type":39,"value":1435},"in-app chat, split off (2026-10-29):",{"type":39,"value":1437}," Mark asked how a chat window in the web app would work, then asked for a new cycle with initial thoughts and no plan: ",{"type":34,"tag":618,"props":1439,"children":1441},{"href":1440},"\u002Fcycles\u002Fdesign\u002Fc127\u002Fdoc\u002Finitial-prompt",[1442],{"type":39,"value":1443},"c127 Guide Chat",{"type":39,"value":1035},{"key":1446,"title":1447,"empty":20,"ast":1448},"extra","Open questions",{"type":31,"children":1449},[1450],{"type":34,"tag":87,"props":1451,"children":1452},{},[1453,1487,1497,1507,1525,1535],{"type":34,"tag":51,"props":1454,"children":1455},{},[1456,1461,1463,1468,1469,1478,1480,1485],{"type":34,"tag":94,"props":1457,"children":1458},{},[1459],{"type":39,"value":1460},"How does a harness drive the page on screen?",{"type":39,"value":1462}," MCP tools on one side and the browser on the other: a local channel (SSE or WebSocket) from the MCP server to the open dashboard, the dashboard hosting the MCP endpoint itself, or the harness driving a browser it controls. This decides the architecture, so Phase 4 starts with a spike. ",{"type":34,"tag":1047,"props":1464,"children":1465},{},[1466],{"type":39,"value":1467},"Proposed 2026-10-29",{"type":39,"value":637},{"type":34,"tag":618,"props":1470,"children":1471},{"href":894},[1472],{"type":34,"tag":132,"props":1473,"children":1475},{"className":1474},[],[1476],{"type":39,"value":1477},"mcp-guide-plan.md",{"type":39,"value":1479},"): both, in order. First a page API (",{"type":34,"tag":132,"props":1481,"children":1483},{"className":1482},[],[1484],{"type":39,"value":933},{"type":39,"value":1486},"), which any agent with a browser can drive. Then the dashboard hosts the MCP endpoint and relays to the open tab over SSE. Not yet ruled.",{"type":34,"tag":51,"props":1488,"children":1489},{},[1490,1495],{"type":34,"tag":94,"props":1491,"children":1492},{},[1493],{"type":39,"value":1494},"Where does the journey live?",{"type":39,"value":1496}," A persistent progress element in the shell, a Home panel, its own page, inline nudges, or a mix (brief OQ2).",{"type":34,"tag":51,"props":1498,"children":1499},{},[1500,1505],{"type":34,"tag":94,"props":1501,"children":1502},{},[1503],{"type":39,"value":1504},"Is \"recommended baseline\" the same artifact",{"type":39,"value":1506}," as Rob's minimum built-in set and the \"standard\" starter config? This is shared with c126 O2\u002FO7.",{"type":34,"tag":51,"props":1508,"children":1509},{},[1510,1515,1517,1523],{"type":34,"tag":94,"props":1511,"children":1512},{},[1513],{"type":39,"value":1514},"What counts as done for each stage?",{"type":39,"value":1516}," This matters most for J6 → J7, which is ",{"type":34,"tag":132,"props":1518,"children":1520},{"className":1519},[],[1521],{"type":39,"value":1522},"problem:safe-to-enforce",{"type":39,"value":1524}," (brief OQ4).",{"type":34,"tag":51,"props":1526,"children":1527},{},[1528,1533],{"type":34,"tag":94,"props":1529,"children":1530},{},[1531],{"type":39,"value":1532},"How big is the beta version?",{"type":39,"value":1534}," A checklist plus annotated pages may be enough for the pilot (brief OQ1).",{"type":34,"tag":51,"props":1536,"children":1537},{},[1538,1543,1545,1551],{"type":34,"tag":94,"props":1539,"children":1540},{},[1541],{"type":39,"value":1542},"Do markers belong in the capture system too,",{"type":39,"value":1544}," so ",{"type":34,"tag":132,"props":1546,"children":1548},{"className":1547},[],[1549],{"type":39,"value":1550},"\u002Fcapture",{"type":39,"value":1552}," can shoot an annotated screen for docs and briefs?",[1554,1556],{"name":883,"prompt":1555,"plan":1477},"mcp-guide-prompt.md",{"name":1557,"prompt":915,"plan":8},"tour-panel-iterations",[1559,1560,627,866],"initial-prompt.md","mcp-guide-rung5.md",[1562,1563,1565,1567,1569,1571,1573],{"file":1559,"title":14},{"file":1477,"title":1564},"The MCP tour guide: plan and test ladder",{"file":1555,"title":1566},"Thread `mcp-guide` — prompts (verbatim)",{"file":1560,"title":1568},"Rung 5: Claude Code walks stop 2 through the MCP tour guide",{"file":627,"title":1570},"Prior art: app.qpoint.io's linear wizard kit",{"file":866,"title":1572},"The tour layer: IDs, a floating panel, Examples and Drills",{"file":915,"title":1574},"Tour panel iterations — prompt (2026-10-29)",[1576,1586,1593,1600,1607,1611,1615,1624,1628,1632,1640,1644,1649,1655,1659,1663,1667,1671,1675,1679,1683,1687,1692,1695,1700],{"src":1577,"kind":1578,"order":1579,"caption":1580,"thread":1581,"capturedAt":1583,"subject":1584,"route":1585},"\u002Fcycles\u002Fdesign\u002Fc125-before-home-adoption.png","hero",0,"Before: the lab's landing in adoption, with no guidance on what comes next",{"id":512,"label":1582,"date":18},"c125 — before the operations wizard","2026-10-27T15:52:24.685Z","page\u002Fgovernance-home","\u002Fpages\u002Fphase4\u002Fmock?stage=adoption",{"src":1587,"kind":1578,"order":1579,"caption":1588,"thread":1589,"capturedAt":1591,"subject":1592,"route":659},"\u002Fcycles\u002Fdesign\u002Fc125-replica-wizard-kit.png","The replica page: Steps in tab mode (A–D), the install shape, the pieces alone",{"id":667,"label":1590,"date":18},"c125 — the app.qpoint.io wizard kit, replicated on the design site","2026-10-27T16:38:34.837Z","page\u002Fwizard-kit",{"src":1594,"kind":1578,"order":1579,"caption":1595,"thread":1596,"capturedAt":1598,"subject":1599,"route":614},"\u002Fcycles\u002Fdesign\u002Fc125-wizard-steps-tabs-a.png","WizardSteps with tabs: Step A → D across the top, the step title under them, Continue on the right",{"id":606,"label":1597,"date":18},"c125 — prior art: app.qpoint.io's linear wizard kit","2026-10-27T16:25:29.934Z","component\u002Fwizard-steps",{"src":21,"kind":1578,"order":1601,"caption":1602,"thread":1603,"capturedAt":1583,"subject":1604,"route":1605,"evolution":1606},1,"Before (J1–J2): endpoints in adoption — coverage shown, but no next step",{"id":512,"label":1582,"date":18},"page\u002Fendpoints","\u002Fpages\u002Fphase4\u002Fmock\u002Forganization\u002Fendpoints?stage=adoption",{"subject":1604,"moments":23},{"src":1608,"kind":1578,"order":1601,"caption":1609,"thread":1610,"capturedAt":1591,"subject":1592,"route":659},"\u002Fcycles\u002Fdesign\u002Fc125-replica-steps-edu.png","Step C: EduHarness with its edu slot (instruction, h1, p, tip, caution)",{"id":667,"label":1590,"date":18},{"src":1612,"kind":1578,"order":1601,"caption":1613,"thread":1614,"capturedAt":1598,"subject":1599,"route":614},"\u002Fcycles\u002Fdesign\u002Fc125-wizard-steps-tabs-c.png","Step C: WizardEduHarness puts the form on the left and the edu panel (hints, tips) on the right",{"id":606,"label":1597,"date":18},{"src":1616,"kind":1578,"order":1617,"caption":1618,"thread":1619,"capturedAt":1583,"subject":1620,"route":1621,"evolution":1622},"\u002Fcycles\u002Fdesign\u002Fc125-before-policies-adoption.png",2,"Before (J4–J6): Policies in adoption — the page help mode, markers and the tour will first attach to",{"id":512,"label":1582,"date":18},"page\u002Fpolicies","\u002Fpages\u002Fphase4\u002Fmock\u002Fpolicies?stage=adoption",{"subject":1620,"moments":1623},6,{"src":1625,"kind":1578,"order":1617,"caption":1626,"thread":1627,"capturedAt":1591,"subject":1592,"route":659},"\u002Fcycles\u002Fdesign\u002Fc125-replica-steps-linear.png","Linear mode: the title, Back, \"Next : Step C\" and Continue",{"id":667,"label":1590,"date":18},{"src":1629,"kind":1578,"order":1617,"caption":1630,"thread":1631,"capturedAt":1598,"subject":1599,"route":614},"\u002Fcycles\u002Fdesign\u002Fc125-wizard-steps-tabs-d.png","Step D, the last: Continue gives way to Submit, which submits the whole wizard",{"id":606,"label":1597,"date":18},{"src":1633,"kind":1578,"order":1634,"caption":1635,"thread":1636,"capturedAt":1583,"subject":1637,"route":1638,"evolution":1639},"\u002Fcycles\u002Fdesign\u002Fc125-before-governance-model.png",3,"Before: the governance-model page — the docs each journey step links to",{"id":512,"label":1582,"date":18},"page\u002Fgovernance-model","\u002Fpages\u002Fphase4\u002Fgovernance-model",{"subject":1637,"moments":1634},{"src":1641,"kind":1578,"order":1634,"caption":1642,"thread":1643,"capturedAt":1591,"subject":1592,"route":659},"\u002Fcycles\u002Fdesign\u002Fc125-replica-install-listening.png","Install shape, step 2: listener mode with block — Continue hidden while the radar waits for the first signal",{"id":667,"label":1590,"date":18},{"src":1645,"kind":1578,"order":1646,"caption":1647,"thread":1648,"capturedAt":1591,"subject":1592,"route":659},"\u002Fcycles\u002Fdesign\u002Fc125-replica-install-complete.png",4,"Traffic detected: the radar turns to \"Qtap Online\", Continue appears, and the end step shows FinalStep",{"id":667,"label":1590,"date":18},{"src":1650,"kind":1578,"order":1651,"capturedAt":1652,"subject":1653,"route":1654},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v1-grape.png",4999,"2026-10-29T16:11:49.202Z","page\u002Fphase4-tour-panel","\u002Fpages\u002Fphase4\u002Fmock\u002Finventory\u002Fsources?tour=owasp-agentic&step=s1-watch&tourLayout=float&tourFocus=ring&tourVariant=grape",{"src":1656,"kind":1578,"order":1651,"capturedAt":1657,"subject":1653,"route":1658},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v2-cyan.png","2026-10-29T16:11:56.411Z","\u002Fpages\u002Fphase4\u002Fmock\u002Finventory\u002Fsources?tour=owasp-agentic&step=s1-watch&tourLayout=split&tourFocus=ringdim&tourVariant=cyan",{"src":1660,"kind":1578,"order":1651,"capturedAt":1661,"subject":1653,"route":1662},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v3-brief.png","2026-10-29T16:21:23.272Z","\u002Fpages\u002Fphase4\u002Fmock\u002Finventory\u002Fsources?tour=owasp-agentic&step=s1-watch&tourLayout=split&tourFocus=ringdim&tourVariant=brief",{"src":1664,"kind":1578,"order":1651,"capturedAt":1665,"subject":1653,"route":1666},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v4-examples-page.png","2026-10-29T17:21:14.041Z","\u002Fpages\u002Fphase4\u002Fmock\u002Fhome?tour=common-risks&step=s1-drill&tourLayout=split&tourFocus=dim&tourVariant=tuned&tourExamples=page",{"src":1668,"kind":1578,"order":1651,"capturedAt":1669,"subject":1653,"route":1670},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v4-examples-panel.png","2026-10-29T17:21:21.126Z","\u002Fpages\u002Fphase4\u002Fmock\u002Fhome?tour=common-risks&step=s1-drill&tourLayout=split&tourFocus=dim&tourVariant=tuned&tourExamples=panel",{"src":1672,"kind":1578,"order":1651,"capturedAt":1673,"subject":1653,"route":1674},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v4-examples-simulate.png","2026-10-29T17:54:28.668Z","\u002Fpages\u002Fphase4\u002Fmock\u002Fhome?tour=common-risks&step=s1-drill&tourLayout=split&tourFocus=dim&tourVariant=tuned",{"src":1676,"kind":1578,"order":1651,"capturedAt":1677,"subject":1653,"route":1678},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v4-tuned.png","2026-10-29T18:31:50.935Z","\u002Fpages\u002Fphase4\u002Fmock\u002Finventory\u002Fsources?tour=owasp-agentic&step=s1-watch&tourLayout=split&tourFocus=dim&tourVariant=tuned",{"src":1680,"kind":1578,"order":1651,"capturedAt":1681,"subject":1653,"route":1682},"\u002Fcycles\u002Fdesign\u002Fc125-tour-panel-v5-panel.png","2026-10-29T18:31:43.656Z","\u002Fpages\u002Fphase4\u002Fmock\u002Fhome?tour=common-risks&step=s1-drill&tourLayout=split&tourFocus=dim&tourVariant=panel",{"src":1684,"kind":1578,"order":1651,"capturedAt":1685,"subject":1653,"route":1686},"\u002Fcycles\u002Fdesign\u002Fc125-tour-v4-start-here-open.png","2026-10-29T17:54:42.805Z","\u002Fpages\u002Fphase4\u002Fmock\u002Forganization\u002Fendpoints?tour=start-here&step=open&tourLayout=split&tourFocus=dim&tourVariant=tuned",{"src":1688,"kind":1689,"order":1690,"thread":1691,"capturedAt":1583,"subject":1584,"route":1585},"\u002Fcycles\u002Fdesign\u002Fc125-before-home-adoption-full.png","full",9000,{"id":512,"label":1582,"date":18},{"src":1693,"kind":1689,"order":1690,"thread":1694,"capturedAt":1591,"subject":1592,"route":659},"\u002Fcycles\u002Fdesign\u002Fc125-replica-wizard-kit-full.png",{"id":667,"label":1590,"date":18},{"src":1696,"kind":1689,"order":1697,"thread":1698,"capturedAt":1583,"subject":1604,"route":1605,"evolution":1699},"\u002Fcycles\u002Fdesign\u002Fc125-before-endpoints-adoption-full.png",9001,{"id":512,"label":1582,"date":18},{"subject":1604,"moments":23},{"src":1701,"kind":1689,"order":1702,"thread":1703,"capturedAt":1583,"subject":1620,"route":1621,"evolution":1704},"\u002Fcycles\u002Fdesign\u002Fc125-before-policies-adoption-full.png",9002,{"id":512,"label":1582,"date":18},{"subject":1620,"moments":1623},[],[1707,1708,1709,1710,1711,1712],{"route":1605,"href":1605},{"route":1638,"href":1638},{"route":1585,"href":1585},{"route":1621,"href":1621},{"route":659,"href":659},{"route":614,"href":8},1794599418186]