[{"data":1,"prerenderedAt":1912},["ShallowReactive",2],{"cycle-doc-design-c132-plan.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":21},{"id":5,"title":6},"c132","Native Design Prototyping",{"id":8,"label":9},"design","Design","plan.md","c132 plan: Native Design Prototyping (draft, before kick-off)",[13,14,15,16,17,18,19,20],"Why","What we have today","Candidate media (the bake-off)","Deliverables","Phases","Decisions (defaults)","Clarifying questions","Patterns to consider",{"type":22,"children":23},"root",[24,45,51,65,70,215,220,413,425,430,634,639,646,667,739,1088,1094,1099,1105,1110,1134,1140,1151,1313,1319,1324,1342,1368,1393,1441,1474,1480,1485,1516,1521,1822,1827,1856,1861],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,36,38,43],{"type":25,"tag":30,"props":31,"children":32},"strong",{},[33],{"type":34,"value":35},"text","Gate:",{"type":34,"value":37}," c130 Phase 1 (the primer) written. Runs beside c131 Phase 1–2 so the first page uses the process.\n",{"type":25,"tag":30,"props":39,"children":40},{},[41],{"type":34,"value":42},"Reader:",{"type":34,"value":44}," Mark, then the designers who will mock native screens, then c131's executor.",{"type":25,"tag":46,"props":47,"children":49},"h2",{"id":48},"why",[50],{"type":34,"value":13},{"type":25,"tag":26,"props":52,"children":53},{},[54,56,63],{"type":34,"value":55},"Design works in a loop: prototype on the design site, experiment in the lab, refine with Mark, push into the real app (the phase-4 lab → qdash port is the current form). The native app breaks the loop's tools: no DOM, no Vue, no Tailwind classes to transcribe, no ",{"type":25,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":34,"value":62},"capture.mts",{"type":34,"value":64}," against a URL. This cycle finds the medium and rebuilds the loop so native screens can be mocked, reviewed and pushed with the same rhythm, by designers who may not write Rust.",{"type":25,"tag":46,"props":66,"children":68},{"id":67},"what-we-have-today",[69],{"type":34,"value":14},{"type":25,"tag":71,"props":72,"children":73},"ul",{},[74,138,164,205],{"type":25,"tag":75,"props":76,"children":77},"li",{},[78,83,85,91,93,99,101,107,109,115,116,122,124,130,131,136],{"type":25,"tag":30,"props":79,"children":80},{},[81],{"type":34,"value":82},"Media:",{"type":34,"value":84}," Vue mocks on the design site (",{"type":25,"tag":57,"props":86,"children":88},{"className":87},[],[89],{"type":34,"value":90},"app\u002Fpages\u002Fpages\u002Fphase*\u002F",{"type":34,"value":92},"), Figma through the Figma MCP (",{"type":25,"tag":57,"props":94,"children":96},{"className":95},[],[97],{"type":34,"value":98},"\u002Ffigma-to-vue",{"type":34,"value":100},", ",{"type":25,"tag":57,"props":102,"children":104},{"className":103},[],[105],{"type":34,"value":106},"\u002Ffigma-to-component",{"type":34,"value":108},"), Illustrator from a page's DOM (",{"type":25,"tag":57,"props":110,"children":112},{"className":111},[],[113],{"type":34,"value":114},"\u002Fillustrator",{"type":34,"value":100},{"type":25,"tag":57,"props":117,"children":119},{"className":118},[],[120],{"type":34,"value":121},"scripts\u002Fillustrator-export.mjs",{"type":34,"value":123},"), the baked lab worlds, the review walk and the cycle atlas (",{"type":25,"tag":57,"props":125,"children":127},{"className":126},[],[128],{"type":34,"value":129},"\u002Fcapture",{"type":34,"value":100},{"type":25,"tag":57,"props":132,"children":134},{"className":133},[],[135],{"type":34,"value":62},{"type":34,"value":137},").",{"type":25,"tag":75,"props":139,"children":140},{},[141,146,148,154,156,162],{"type":25,"tag":30,"props":142,"children":143},{},[144],{"type":34,"value":145},"Tokens:",{"type":34,"value":147}," ",{"type":25,"tag":57,"props":149,"children":151},{"className":150},[],[152],{"type":34,"value":153},"brand\u002Fdesign_tokens.md",{"type":34,"value":155},", the layer's Tailwind tokens (",{"type":25,"tag":57,"props":157,"children":159},{"className":158},[],[160],{"type":34,"value":161},"--qp-*",{"type":34,"value":163}," RGB triplets).",{"type":25,"tag":75,"props":165,"children":166},{},[167,172,174,180,181,187,189,195,197,203],{"type":25,"tag":30,"props":168,"children":169},{},[170],{"type":34,"value":171},"The kit's side:",{"type":34,"value":173}," semantic theme tokens (",{"type":25,"tag":57,"props":175,"children":177},{"className":176},[],[178],{"type":34,"value":179},"Theme",{"type":34,"value":100},{"type":25,"tag":57,"props":182,"children":184},{"className":183},[],[185],{"type":34,"value":186},"ThemeColor",{"type":34,"value":188},"), many built-in themes, a component gallery, headless tests that render a view, a wasm build (nightly), design guides and coding guides, ",{"type":25,"tag":57,"props":190,"children":192},{"className":191},[],[193],{"type":34,"value":194},"\u002Fskills",{"type":34,"value":196}," and ",{"type":25,"tag":57,"props":198,"children":200},{"className":199},[],[201],{"type":34,"value":202},"\u002Fllms-full.txt",{"type":34,"value":204},".",{"type":25,"tag":75,"props":206,"children":207},{},[208,213],{"type":25,"tag":30,"props":209,"children":210},{},[211],{"type":34,"value":212},"Native Shell:",{"type":34,"value":214}," a browser playground and gallery; TSX that targets GPUI among others.",{"type":25,"tag":46,"props":216,"children":218},{"id":217},"candidate-media-the-bake-off",[219],{"type":34,"value":15},{"type":25,"tag":221,"props":222,"children":223},"table",{},[224,253],{"type":25,"tag":225,"props":226,"children":227},"thead",{},[228],{"type":25,"tag":229,"props":230,"children":231},"tr",{},[232,238,243,248],{"type":25,"tag":233,"props":234,"children":235},"th",{},[236],{"type":34,"value":237},"#",{"type":25,"tag":233,"props":239,"children":240},{},[241],{"type":34,"value":242},"Medium",{"type":25,"tag":233,"props":244,"children":245},{},[246],{"type":34,"value":247},"For",{"type":25,"tag":233,"props":249,"children":250},{},[251],{"type":34,"value":252},"Against",{"type":25,"tag":254,"props":255,"children":256},"tbody",{},[257,286,314,357,385],{"type":25,"tag":229,"props":258,"children":259},{},[260,266,276,281],{"type":25,"tag":261,"props":262,"children":263},"td",{},[264],{"type":34,"value":265},"A",{"type":25,"tag":261,"props":267,"children":268},{},[269,274],{"type":25,"tag":30,"props":270,"children":271},{},[272],{"type":34,"value":273},"Vue mocks in a \"native skin\"",{"type":34,"value":275}," on the design site: a theme that mirrors the kit's tokens and chrome",{"type":25,"tag":261,"props":277,"children":278},{},[279],{"type":34,"value":280},"our fastest muscle; every existing tool works; reviewers need nothing",{"type":25,"tag":261,"props":282,"children":283},{},[284],{"type":34,"value":285},"a second implementation that can drift from what the kit can draw; the transcription step remains",{"type":25,"tag":229,"props":287,"children":288},{},[289,294,304,309],{"type":25,"tag":261,"props":290,"children":291},{},[292],{"type":34,"value":293},"B",{"type":25,"tag":261,"props":295,"children":296},{},[297,302],{"type":25,"tag":30,"props":298,"children":299},{},[300],{"type":34,"value":301},"A stories crate in the c131 repo",{"type":34,"value":303},": one Rust story per page state, screenshotted by headless tests",{"type":25,"tag":261,"props":305,"children":306},{},[307],{"type":34,"value":308},"the real thing; the stories double as tests (R6); no transcription",{"type":25,"tag":261,"props":310,"children":311},{},[312],{"type":34,"value":313},"a Rust build loop; captures by test harness, not by URL; designers need the toolchain or a CI artifact",{"type":25,"tag":229,"props":315,"children":316},{},[317,322,340,352],{"type":25,"tag":261,"props":318,"children":319},{},[320],{"type":34,"value":321},"C",{"type":25,"tag":261,"props":323,"children":324},{},[325,330,332,338],{"type":25,"tag":30,"props":326,"children":327},{},[328],{"type":34,"value":329},"The kit's wasm build embedded in the lab",{"type":34,"value":331},": the real UI in a ",{"type":25,"tag":57,"props":333,"children":335},{"className":334},[],[336],{"type":34,"value":337},"\u003Ccanvas>",{"type":34,"value":339}," on a design-site page",{"type":25,"tag":261,"props":341,"children":342},{},[343,345,350],{"type":34,"value":344},"the real thing, reviewable in the browser; ",{"type":25,"tag":57,"props":346,"children":348},{"className":347},[],[349],{"type":34,"value":62},{"type":34,"value":351}," and the review walk work unchanged",{"type":25,"tag":261,"props":353,"children":354},{},[355],{"type":34,"value":356},"nightly toolchain; unknown fidelity (text input, tables, fonts) in wasm; build size",{"type":25,"tag":229,"props":358,"children":359},{},[360,365,375,380],{"type":25,"tag":261,"props":361,"children":362},{},[363],{"type":34,"value":364},"D",{"type":25,"tag":261,"props":366,"children":367},{},[368,373],{"type":25,"tag":30,"props":369,"children":370},{},[371],{"type":34,"value":372},"Figma",{"type":34,"value":374},", with a kit-shaped library",{"type":25,"tag":261,"props":376,"children":377},{},[378],{"type":34,"value":379},"designers' native tool; the MCP already exists",{"type":25,"tag":261,"props":381,"children":382},{},[383],{"type":34,"value":384},"no Figma library for GPUI Kit is known; Figma → Rust has no skill yet",{"type":25,"tag":229,"props":386,"children":387},{},[388,393,403,408],{"type":25,"tag":261,"props":389,"children":390},{},[391],{"type":34,"value":392},"E",{"type":25,"tag":261,"props":394,"children":395},{},[396,401],{"type":25,"tag":30,"props":397,"children":398},{},[399],{"type":34,"value":400},"Native Shell's playground \u002F TSX",{"type":34,"value":402}," targeting GPUI",{"type":25,"tag":261,"props":404,"children":405},{},[406],{"type":34,"value":407},"a browser playground; TSX is near Vue for our designers",{"type":25,"tag":261,"props":409,"children":410},{},[411],{"type":34,"value":412},"a second framework in the stack; its GPUI target's maturity is unknown",{"type":25,"tag":26,"props":414,"children":415},{},[416,418,423],{"type":34,"value":417},"Default to test first: ",{"type":25,"tag":30,"props":419,"children":420},{},[421],{"type":34,"value":422},"C if it renders our screens, else B with A for early ideation only.",{"type":34,"value":424}," D is evaluated as an input (a kit-shaped Figma library) rather than the medium. E is noted unless the primer finds it strong.",{"type":25,"tag":46,"props":426,"children":428},{"id":427},"deliverables",[429],{"type":34,"value":16},{"type":25,"tag":431,"props":432,"children":433},"ol",{},[434,454,491,529,580,595],{"type":25,"tag":75,"props":435,"children":436},{},[437,446,448],{"type":25,"tag":30,"props":438,"children":439},{},[440],{"type":25,"tag":57,"props":441,"children":443},{"className":442},[],[444],{"type":34,"value":445},"process.md",{"type":34,"value":447}," — the loop for native screens: brief → mock (medium) → experiment (states and worlds) → refine (review stop, Illustrator if hand work is wanted) → push (the port into c131, with the record in the cycle). Who does which step and with what. ",{"type":25,"tag":449,"props":450,"children":451},"em",{},[452],{"type":34,"value":453},"Written 2026-11-11 (Phase 3).",{"type":25,"tag":75,"props":455,"children":456},{},[457,462,464,469,471],{"type":25,"tag":30,"props":458,"children":459},{},[460],{"type":34,"value":461},"The token bridge",{"type":34,"value":463}," — ",{"type":25,"tag":57,"props":465,"children":467},{"className":466},[],[468],{"type":34,"value":153},{"type":34,"value":470}," → a kit theme file (Qpoint light and dark), generated by a script so the web and native tokens come from one source. Includes the type decision: Inter, bundled (c131 D14, ruled 2026-11-09). ",{"type":25,"tag":449,"props":472,"children":473},{},[474,476,482,484,489],{"type":34,"value":475},"Exists: ",{"type":25,"tag":57,"props":477,"children":479},{"className":478},[],[480],{"type":34,"value":481},"scripts\u002Ftokens-to-kit.mjs",{"type":34,"value":483},", built in qnative c2 (2026-11-10), documented in ",{"type":25,"tag":57,"props":485,"children":487},{"className":486},[],[488],{"type":34,"value":445},{"type":34,"value":490}," (Phase 3).",{"type":25,"tag":75,"props":492,"children":493},{},[494,499,501,507,509,514,516],{"type":25,"tag":30,"props":495,"children":496},{},[497],{"type":34,"value":498},"Captures for native",{"type":34,"value":500}," — a ",{"type":25,"tag":57,"props":502,"children":504},{"className":503},[],[505],{"type":34,"value":506},"native",{"type":34,"value":508}," mode for ",{"type":25,"tag":57,"props":510,"children":512},{"className":511},[],[513],{"type":34,"value":62},{"type":34,"value":515}," (wasm page, or the stories' screenshots collected into the same manifest), so the cycle atlas shows native screens beside web ones. ",{"type":25,"tag":449,"props":517,"children":518},{},[519,521,527],{"type":34,"value":520},"Built 2026-11-11 (Phase 3): ",{"type":25,"tag":57,"props":522,"children":524},{"className":523},[],[525],{"type":34,"value":526},"--native \u003Cprogram.json>",{"type":34,"value":528},", the stories per world.",{"type":25,"tag":75,"props":530,"children":531},{},[532,537,539,545,547,553,555,561,563],{"type":25,"tag":30,"props":533,"children":534},{},[535],{"type":34,"value":536},"Skills",{"type":34,"value":538}," — the kit's skills installed into design's ",{"type":25,"tag":57,"props":540,"children":542},{"className":541},[],[543],{"type":34,"value":544},".claude\u002Fskills",{"type":34,"value":546}," (from the primer), plus ours: a ",{"type":25,"tag":57,"props":548,"children":550},{"className":549},[],[551],{"type":34,"value":552},"\u002Fgpui-story",{"type":34,"value":554}," (page state → story + test) and, if D holds, a ",{"type":25,"tag":57,"props":556,"children":558},{"className":557},[],[559],{"type":34,"value":560},"\u002Ffigma-to-gpui",{"type":34,"value":562},". Only what the worked example needed. ",{"type":25,"tag":449,"props":564,"children":565},{},[566,571,573,578],{"type":25,"tag":57,"props":567,"children":569},{"className":568},[],[570],{"type":34,"value":552},{"type":34,"value":572}," written 2026-11-11 (Phase 3); the kit's skills not installed yet; no ",{"type":25,"tag":57,"props":574,"children":576},{"className":575},[],[577],{"type":34,"value":560},{"type":34,"value":579}," (Q2 open).",{"type":25,"tag":75,"props":581,"children":582},{},[583,588,590],{"type":25,"tag":30,"props":584,"children":585},{},[586],{"type":34,"value":587},"One worked example",{"type":34,"value":589}," — the Inventory page (or Status) taken through the whole loop and into c131. ",{"type":25,"tag":449,"props":591,"children":592},{},[593],{"type":34,"value":594},"Status, picked 2026-11-11: through the loop in A the same day; the push into c131 handed to qnative c2 (Phase 4).",{"type":25,"tag":75,"props":596,"children":597},{},[598,603,605,611,613],{"type":25,"tag":30,"props":599,"children":600},{},[601],{"type":34,"value":602},"A design-site page",{"type":34,"value":604}," — the process documented where the other processes live (",{"type":25,"tag":57,"props":606,"children":608},{"className":607},[],[609],{"type":34,"value":610},"\u002Fmethod",{"type":34,"value":612}," or the components docs), with the bake-off record. ",{"type":25,"tag":449,"props":614,"children":615},{},[616,618,624,626,632],{"type":34,"value":617},"Done 2026-11-11 (Phase 5): the ",{"type":25,"tag":57,"props":619,"children":621},{"className":620},[],[622],{"type":34,"value":623},"CLAUDE.md",{"type":34,"value":625}," section and ",{"type":25,"tag":57,"props":627,"children":629},{"className":628},[],[630],{"type":34,"value":631},"\u002Fpages\u002Fnative",{"type":34,"value":633},", with the bake-off page as the record.",{"type":25,"tag":46,"props":635,"children":637},{"id":636},"phases",[638],{"type":34,"value":17},{"type":25,"tag":640,"props":641,"children":643},"h3",{"id":642},"_0-survey",[644],{"type":34,"value":645},"0. Survey",{"type":25,"tag":26,"props":647,"children":648},{},[649,651,657,659,665],{"type":34,"value":650},"Read the primer. List what each medium needs installed. Pick the page for the bake-off (Inventory: tables, lists, empty and overflow states, the hardest common case). Adopt the named synthetic worlds (ruled 2026-11-11, c131 D15): one composable, ",{"type":25,"tag":57,"props":652,"children":654},{"className":653},[],[655],{"type":34,"value":656},"useNativeWorld(name)",{"type":34,"value":658},", reads ",{"type":25,"tag":57,"props":660,"children":662},{"className":661},[],[663],{"type":34,"value":664},"..\u002Fqnative\u002Fcrates\u002Ffixtures\u002Fworld\u002F\u003Cname>.json",{"type":34,"value":666}," by request key, so every native-skin mock draws the rows the app draws and invents none.",{"type":25,"tag":26,"props":668,"children":669},{},[670,675,677,683,684,690,692,698,700,706,708,714,715,721,723,729,731,737],{"type":25,"tag":30,"props":671,"children":672},{},[673],{"type":34,"value":674},"Done 2026-11-11.",{"type":34,"value":676}," The page is Inventory (ruled): the landing, the Harnesses listing and the harness page, in three states by world. The worlds are copied into the lab (",{"type":25,"tag":57,"props":678,"children":680},{"className":679},[],[681],{"type":34,"value":682},"app\u002Fdata\u002Fworlds\u002F",{"type":34,"value":100},{"type":25,"tag":57,"props":685,"children":687},{"className":686},[],[688],{"type":34,"value":689},"scripts\u002Fsync-worlds.sh",{"type":34,"value":691},", the deploy builds here so the copies must live here) and read by ",{"type":25,"tag":57,"props":693,"children":695},{"className":694},[],[696],{"type":34,"value":697},"app\u002Fcomposables\u002FuseNativeWorld.ts",{"type":34,"value":699},": one dynamic import per world (only the named one is bundled), the manifest, and ",{"type":25,"tag":57,"props":701,"children":703},{"className":702},[],[704],{"type":34,"value":705},"get(route, params?)",{"type":34,"value":707}," building the nozzle's key (",{"type":25,"tag":57,"props":709,"children":711},{"className":710},[],[712],{"type":34,"value":713},"route?sorted-query",{"type":34,"value":100},{"type":25,"tag":57,"props":716,"children":718},{"className":717},[],[719],{"type":34,"value":720},"period=all",{"type":34,"value":722}," dropped, ",{"type":25,"tag":57,"props":724,"children":726},{"className":725},[],[727],{"type":34,"value":728},"quote_plus",{"type":34,"value":730}," encoding, from ",{"type":25,"tag":57,"props":732,"children":734},{"className":733},[],[735],{"type":34,"value":736},"types::Request::key",{"type":34,"value":738}," and the keys in the files); loaded on the client so the server renders the honest loading state and the payload carries no rows. What each medium needs installed, as found:",{"type":25,"tag":221,"props":740,"children":741},{},[742,767],{"type":25,"tag":225,"props":743,"children":744},{},[745],{"type":25,"tag":229,"props":746,"children":747},{},[748,752,757,762],{"type":25,"tag":233,"props":749,"children":750},{},[751],{"type":34,"value":242},{"type":25,"tag":233,"props":753,"children":754},{},[755],{"type":34,"value":756},"A person who mocks needs",{"type":25,"tag":233,"props":758,"children":759},{},[760],{"type":34,"value":761},"An agent that mocks needs",{"type":25,"tag":233,"props":763,"children":764},{},[765],{"type":34,"value":766},"Captures",{"type":25,"tag":254,"props":768,"children":769},{},[770,842,982,1024,1054],{"type":25,"tag":229,"props":771,"children":772},{},[773,782,795,824],{"type":25,"tag":261,"props":774,"children":775},{},[776,780],{"type":25,"tag":30,"props":777,"children":778},{},[779],{"type":34,"value":265},{"type":34,"value":781}," Vue mocks in a native skin",{"type":25,"tag":261,"props":783,"children":784},{},[785,787,793],{"type":34,"value":786},"a browser on ",{"type":25,"tag":57,"props":788,"children":790},{"className":789},[],[791],{"type":34,"value":792},":3000",{"type":34,"value":794},", or the static site",{"type":25,"tag":261,"props":796,"children":797},{},[798,800,806,808,814,816,822],{"type":34,"value":799},"the design repo (",{"type":25,"tag":57,"props":801,"children":803},{"className":802},[],[804],{"type":34,"value":805},"npm install",{"type":34,"value":807},", Node 22), the layer (",{"type":25,"tag":57,"props":809,"children":811},{"className":810},[],[812],{"type":34,"value":813},"@qpoint-io\u002Fq-nuxt-layer",{"type":34,"value":815}," or ",{"type":25,"tag":57,"props":817,"children":819},{"className":818},[],[820],{"type":34,"value":821},"NUXT_LOCAL_LAYER",{"type":34,"value":823},"), the worlds synced",{"type":25,"tag":261,"props":825,"children":826},{},[827,832,834,840],{"type":25,"tag":57,"props":828,"children":830},{"className":829},[],[831],{"type":34,"value":62},{"type":34,"value":833}," unchanged (Playwright's Chromium, in the repo); a shot program names the world per shot (",{"type":25,"tag":57,"props":835,"children":837},{"className":836},[],[838],{"type":34,"value":839},"scripts\u002Fshot-programs\u002Fc132-bake-off.json",{"type":34,"value":841},")",{"type":25,"tag":229,"props":843,"children":844},{},[845,860,873,933],{"type":25,"tag":261,"props":846,"children":847},{},[848,852,854],{"type":25,"tag":30,"props":849,"children":850},{},[851],{"type":34,"value":293},{"type":34,"value":853}," the stories crate in ",{"type":25,"tag":57,"props":855,"children":857},{"className":856},[],[858],{"type":34,"value":859},"..\u002Fqnative",{"type":25,"tag":261,"props":861,"children":862},{},[863,865,871],{"type":34,"value":864},"a built binary (a CI artifact or ",{"type":25,"tag":57,"props":866,"children":868},{"className":867},[],[869],{"type":34,"value":870},"cargo run -p stories --show",{"type":34,"value":872},"), or the PNGs",{"type":25,"tag":261,"props":874,"children":875},{},[876,878,884,886,892,894,900,902,908,910,916,917,923,925,931],{"type":34,"value":877},"Rust 1.95 or later (Homebrew's 1.99.1; the kit calls ",{"type":25,"tag":57,"props":879,"children":881},{"className":880},[],[882],{"type":34,"value":883},"std::hint::cold_path",{"type":34,"value":885},"), the workspace (",{"type":25,"tag":57,"props":887,"children":889},{"className":888},[],[890],{"type":34,"value":891},"cargo build",{"type":34,"value":893},": about 3 min clean, 424 crates; 2–5 s incremental), ",{"type":25,"tag":57,"props":895,"children":897},{"className":896},[],[898],{"type":34,"value":899},"gpui-kit",{"type":34,"value":901}," pinned ",{"type":25,"tag":57,"props":903,"children":905},{"className":904},[],[906],{"type":34,"value":907},"=0.9.1",{"type":34,"value":909},", Python 3 for ",{"type":25,"tag":57,"props":911,"children":913},{"className":912},[],[914],{"type":34,"value":915},"ts-to-rust.py",{"type":34,"value":196},{"type":25,"tag":57,"props":918,"children":920},{"className":919},[],[921],{"type":34,"value":922},"cut-world.py",{"type":34,"value":924}," (the latter needs the qdash binary from ",{"type":25,"tag":57,"props":926,"children":928},{"className":927},[],[929],{"type":34,"value":930},"..\u002Fqcontrol",{"type":34,"value":932}," for a recut)",{"type":25,"tag":261,"props":934,"children":935},{},[936,942,944,950,952,958,960,966,968,974,976],{"type":25,"tag":57,"props":937,"children":939},{"className":938},[],[940],{"type":34,"value":941},"cargo run -p stories",{"type":34,"value":943}," writes ",{"type":25,"tag":57,"props":945,"children":947},{"className":946},[],[948],{"type":34,"value":949},"target\u002Fstories\u002F\u003Cstory>-\u003Cmode>.png",{"type":34,"value":951}," at 2× off-screen (",{"type":25,"tag":57,"props":953,"children":955},{"className":954},[],[956],{"type":34,"value":957},"Window::render_to_image",{"type":34,"value":959},", no Screen Recording); ",{"type":25,"tag":57,"props":961,"children":963},{"className":962},[],[964],{"type":34,"value":965},"scripts\u002Fpublish-stories.py",{"type":34,"value":967}," copies chosen PNGs into ",{"type":25,"tag":57,"props":969,"children":971},{"className":970},[],[972],{"type":34,"value":973},"public\u002Fcycles\u002Fqnative\u002F",{"type":34,"value":975}," with ",{"type":25,"tag":57,"props":977,"children":979},{"className":978},[],[980],{"type":34,"value":981},"surface: native",{"type":25,"tag":229,"props":983,"children":984},{},[985,994,999,1012],{"type":25,"tag":261,"props":986,"children":987},{},[988,992],{"type":25,"tag":30,"props":989,"children":990},{},[991],{"type":34,"value":321},{"type":34,"value":993}," the kit's wasm build in the lab",{"type":25,"tag":261,"props":995,"children":996},{},[997],{"type":34,"value":998},"a browser",{"type":25,"tag":261,"props":1000,"children":1001},{},[1002,1004,1010],{"type":34,"value":1003},"nightly Rust, the ",{"type":25,"tag":57,"props":1005,"children":1007},{"className":1006},[],[1008],{"type":34,"value":1009},"wasm32",{"type":34,"value":1011}," target, the kit's showcase build",{"type":25,"tag":261,"props":1013,"children":1014},{},[1015,1017,1022],{"type":34,"value":1016},"would be ",{"type":25,"tag":57,"props":1018,"children":1020},{"className":1019},[],[1021],{"type":34,"value":62},{"type":34,"value":1023}," unchanged",{"type":25,"tag":229,"props":1025,"children":1026},{},[1027,1036,1040,1045],{"type":25,"tag":261,"props":1028,"children":1029},{},[1030,1034],{"type":25,"tag":30,"props":1031,"children":1032},{},[1033],{"type":34,"value":364},{"type":34,"value":1035}," Figma with a kit-shaped library",{"type":25,"tag":261,"props":1037,"children":1038},{},[1039],{"type":34,"value":372},{"type":25,"tag":261,"props":1041,"children":1042},{},[1043],{"type":34,"value":1044},"the Figma MCP (connected in this session); no kit-shaped library exists to install",{"type":25,"tag":261,"props":1046,"children":1047},{},[1048],{"type":25,"tag":57,"props":1049,"children":1051},{"className":1050},[],[1052],{"type":34,"value":1053},"get_screenshot",{"type":25,"tag":229,"props":1055,"children":1056},{},[1057,1066,1070,1083],{"type":25,"tag":261,"props":1058,"children":1059},{},[1060,1064],{"type":25,"tag":30,"props":1061,"children":1062},{},[1063],{"type":34,"value":392},{"type":34,"value":1065}," Native Shell's playground \u002F TSX",{"type":25,"tag":261,"props":1067,"children":1068},{},[1069],{"type":34,"value":998},{"type":25,"tag":261,"props":1071,"children":1072},{},[1073,1075,1081],{"type":34,"value":1074},"Node and the Native Shell repo at ",{"type":25,"tag":57,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":34,"value":1080},"main",{"type":34,"value":1082}," (its desktop features are unreleased)",{"type":25,"tag":261,"props":1084,"children":1085},{},[1086],{"type":34,"value":1087},"none into the atlas",{"type":25,"tag":640,"props":1089,"children":1091},{"id":1090},"_1-bake-off",[1092],{"type":34,"value":1093},"1. Bake-off",{"type":25,"tag":26,"props":1095,"children":1096},{},[1097],{"type":34,"value":1098},"The same page in A, B and C (and D as an input if a library turns up), each with three states. Captures side by side on a lab page. Time and friction recorded per medium.",{"type":25,"tag":640,"props":1100,"children":1102},{"id":1101},"_2-mark-picks-the-medium",[1103],{"type":34,"value":1104},"2. Mark picks the medium",{"type":25,"tag":26,"props":1106,"children":1107},{},[1108],{"type":34,"value":1109},"Review stop. The pick and its reasons recorded here and in CYCLE.md.",{"type":25,"tag":26,"props":1111,"children":1112},{},[1113,1125,1127,1132],{"type":25,"tag":30,"props":1114,"children":1115},{},[1116,1118,1124],{"type":34,"value":1117},"Ruled 2026-11-11 (evening), from ",{"type":25,"tag":57,"props":1119,"children":1121},{"className":1120},[],[1122],{"type":34,"value":1123},"review.md",{"type":34,"value":204},{"type":34,"value":1126}," B, the stories crate in ",{"type":25,"tag":57,"props":1128,"children":1130},{"className":1129},[],[1131],{"type":34,"value":859},{"type":34,"value":1133},", is the medium of record for a native screen: the real thing, the stories are the page's tests, the captures are solved. A, Vue mocks in a native skin on the design site, is the medium to sketch and to review: for a person without a toolchain and for an agent sketching before Rust. D6 holds: an A mock names its world and the story that follows is checked against it row for row. The review's amendment stands: A is not \"ideation only\" but the review medium for people. Two more rulings: the chrome (D7) and the mock's lifetime (D8), below.",{"type":25,"tag":640,"props":1135,"children":1137},{"id":1136},"_3-build-the-loop",[1138],{"type":34,"value":1139},"3. Build the loop",{"type":25,"tag":26,"props":1141,"children":1142},{},[1143,1145,1150],{"type":34,"value":1144},"The token bridge, the capture mode, the skills, ",{"type":25,"tag":57,"props":1146,"children":1148},{"className":1147},[],[1149],{"type":34,"value":445},{"type":34,"value":204},{"type":25,"tag":26,"props":1152,"children":1153},{},[1154,1167,1169,1175,1177,1183,1185,1190,1191,1197,1198,1204,1206,1212,1214,1220,1222,1227,1229,1235,1237,1243,1245,1251,1253,1258,1260,1266,1268,1274,1276,1281,1283,1289,1291,1297,1299,1304,1306,1311],{"type":25,"tag":30,"props":1155,"children":1156},{},[1157,1159,1166],{"type":34,"value":1158},"Done 2026-11-11 (evening), at its review stop (",{"type":25,"tag":1160,"props":1161,"children":1163},"a",{"href":1162},"\u002Fcycles\u002Fdesign\u002Fc132\u002Fdoc\u002Freview-phase3",[1164],{"type":34,"value":1165},"review-phase3.md",{"type":34,"value":137},{"type":34,"value":1168}," The native capture mode: ",{"type":25,"tag":57,"props":1170,"children":1172},{"className":1171},[],[1173],{"type":34,"value":1174},"scripts\u002Fcapture.mts --native \u003Cprogram.json>",{"type":34,"value":1176}," runs the stories binary once per shot with ",{"type":25,"tag":57,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":34,"value":1182},"QPOINT_WORLD",{"type":34,"value":1184}," set and merges the PNGs into the atlas with ",{"type":25,"tag":57,"props":1186,"children":1188},{"className":1187},[],[1189],{"type":34,"value":981},{"type":34,"value":100},{"type":25,"tag":57,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":34,"value":1196},"subject: native\u002F\u003Cstory>",{"type":34,"value":100},{"type":25,"tag":57,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":34,"value":1203},"variant: world=\u003Cname>",{"type":34,"value":1205}," (D3); ",{"type":25,"tag":57,"props":1207,"children":1209},{"className":1208},[],[1210],{"type":34,"value":1211},"scripts\u002Fshot-programs\u002Fc132-native-worlds.json",{"type":34,"value":1213}," took the three Inventory views in all three worlds (13 captures, thread ",{"type":25,"tag":57,"props":1215,"children":1217},{"className":1216},[],[1218],{"type":34,"value":1219},"worlds",{"type":34,"value":1221},"), which closed B's side of the bake-off. The stories read ",{"type":25,"tag":57,"props":1223,"children":1225},{"className":1224},[],[1226],{"type":34,"value":1182},{"type":34,"value":1228}," through a one-line patch, applied in a scratch copy for the first captures and handed to qnative c2, which landed it the same evening (",{"type":25,"tag":57,"props":1230,"children":1232},{"className":1231},[],[1233],{"type":34,"value":1234},"b4cbc23",{"type":34,"value":1236},") together with the recut (",{"type":25,"tag":57,"props":1238,"children":1240},{"className":1239},[],[1241],{"type":34,"value":1242},"meridian-day90",{"type":34,"value":1244}," = nina-mbp, ",{"type":25,"tag":57,"props":1246,"children":1248},{"className":1247},[],[1249],{"type":34,"value":1250},"pilot",{"type":34,"value":1252}," = priya-x1); the lab re-synced and both media were recaptured across four worlds. ",{"type":25,"tag":57,"props":1254,"children":1256},{"className":1255},[],[1257],{"type":34,"value":62},{"type":34,"value":1259}," also gained ",{"type":25,"tag":57,"props":1261,"children":1263},{"className":1262},[],[1264],{"type":34,"value":1265},"scale",{"type":34,"value":1267}," (device scale factor) and ",{"type":25,"tag":57,"props":1269,"children":1271},{"className":1270},[],[1272],{"type":34,"value":1273},"clip",{"type":34,"value":1275}," (one element as the picture) for programs and single shots, so A is captured as the window at the app's 2× (the eleven bake-off captures retaken). The skill ",{"type":25,"tag":57,"props":1277,"children":1279},{"className":1278},[],[1280],{"type":34,"value":552},{"type":34,"value":1282}," (",{"type":25,"tag":57,"props":1284,"children":1286},{"className":1285},[],[1287],{"type":34,"value":1288},".claude\u002Fskills\u002Fgpui-story\u002F",{"type":34,"value":1290},"): a page state → a ",{"type":25,"tag":57,"props":1292,"children":1294},{"className":1293},[],[1295],{"type":34,"value":1296},"Story",{"type":34,"value":1298},", its test, the per-world capture, and the path from a Vue mock to a story. ",{"type":25,"tag":57,"props":1300,"children":1302},{"className":1301},[],[1303],{"type":34,"value":445},{"type":34,"value":1305},": the five steps, who does which with what, the two media exactly, the native capture mode, the token bridge documented (",{"type":25,"tag":57,"props":1307,"children":1309},{"className":1308},[],[1310],{"type":34,"value":481},{"type":34,"value":1312},", built in qnative c2; not rebuilt). Not done: the kit's own skills are not installed (install from the repo at the pinned tag when a cycle needs them); no dark variant per world for A.",{"type":25,"tag":640,"props":1314,"children":1316},{"id":1315},"_4-the-worked-example",[1317],{"type":34,"value":1318},"4. The worked example",{"type":25,"tag":26,"props":1320,"children":1321},{},[1322],{"type":34,"value":1323},"Status or Inventory through the loop and pushed into c131 Phase 2.",{"type":25,"tag":26,"props":1325,"children":1326},{},[1327,1332,1334,1340],{"type":25,"tag":30,"props":1328,"children":1329},{},[1330],{"type":34,"value":1331},"Mark picked Status (2026-11-11, at the Phase 3 review stop).",{"type":34,"value":1333}," Status has no page in either medium yet, so it exercises the loop end to end: the brief (",{"type":25,"tag":1160,"props":1335,"children":1337},{"href":1336},"\u002Fcycles\u002Fdesign\u002Fc132\u002Fdoc\u002Fstatus-brief",[1338],{"type":34,"value":1339},"status-brief.md",{"type":34,"value":1341},"), the mock in A on the four worlds, the experiment, the review stop, the push into c131 as a story. The brief names the one fork the page has: the sensor's own shapes (state, resources, effective config, logs; c131 D17) are served by no route yet, so no world carries them and the mock cannot draw them without inventing (D6).",{"type":25,"tag":26,"props":1343,"children":1344},{},[1345,1358,1360,1366],{"type":25,"tag":30,"props":1346,"children":1347},{},[1348,1350,1356],{"type":34,"value":1349},"Built 2026-11-11, at its review stop (",{"type":25,"tag":1160,"props":1351,"children":1353},{"href":1352},"\u002Fcycles\u002Fdesign\u002Fc132\u002Fdoc\u002Freview-phase4",[1354],{"type":34,"value":1355},"review-phase4.md",{"type":34,"value":1357},"):",{"type":34,"value":1359}," the mock on four worlds with a knob for the states no world carries and ",{"type":25,"tag":57,"props":1361,"children":1363},{"className":1362},[],[1364],{"type":34,"value":1365},"degraded",{"type":34,"value":1367}," derived from the coverage counters; eight captures; the calls S1–S6 taken by default; the push handed to qnative c2 as a story per state.",{"type":25,"tag":26,"props":1369,"children":1370},{},[1371,1376,1378,1383,1385,1391],{"type":25,"tag":30,"props":1372,"children":1373},{},[1374],{"type":34,"value":1375},"Ruled 2026-11-11 (evening, from review-phase3.md, before the Phase 4 note was read):",{"type":34,"value":1377}," Status is the page, through the ",{"type":25,"tag":449,"props":1379,"children":1380},{},[1381],{"type":34,"value":1382},"whole",{"type":34,"value":1384}," loop: sketch in A on the four worlds, then the story and the page in B, captures per world into both atlases (D9), the page into c131. The six endpoint-only shapes get the bridge of D10 instead of the mock's \"not served yet\" (S3 overturned) and the state knob narrows to the states no world or bridge carries (S2 narrowed). B is built in this session once qnative c2 has closed (S6 overturned): ",{"type":25,"tag":57,"props":1386,"children":1388},{"className":1387},[],[1389],{"type":34,"value":1390},"pages\u002Fstatus.rs",{"type":34,"value":1392},", the nozzle requests for the six shapes behind the bridge, the story; committing only its own paths there, small commits with a message to the other sessions on shared files, never a push.",{"type":25,"tag":26,"props":1394,"children":1395},{},[1396,1401,1403,1409,1411,1416,1418,1424,1425,1431,1433,1439],{"type":25,"tag":30,"props":1397,"children":1398},{},[1399],{"type":34,"value":1400},"Built the same evening, at its review stop:",{"type":34,"value":1402}," the bridge per world (",{"type":25,"tag":57,"props":1404,"children":1406},{"className":1405},[],[1407],{"type":34,"value":1408},"app\u002Fdata\u002Fworlds\u002Fbridge\u002F",{"type":34,"value":1410},"), the mock reading it, the mirror (D9) retro-applied, and Status in B in qnative (",{"type":25,"tag":57,"props":1412,"children":1414},{"className":1413},[],[1415],{"type":34,"value":1390},{"type":34,"value":1417},", the bridge in ",{"type":25,"tag":57,"props":1419,"children":1421},{"className":1420},[],[1422],{"type":34,"value":1423},"types",{"type":34,"value":196},{"type":25,"tag":57,"props":1426,"children":1428},{"className":1427},[],[1429],{"type":34,"value":1430},"fixtures",{"type":34,"value":1432},", the nozzle, the route, four stories, the composed asset source), captured per world into design's atlas (",{"type":25,"tag":57,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":34,"value":1438},"p4-status-b",{"type":34,"value":1440},"); the bake-off page's Phase 4 section wipes A over B for seven states.",{"type":25,"tag":26,"props":1442,"children":1443},{},[1444,1449,1451,1457,1459,1465,1466,1472],{"type":25,"tag":30,"props":1445,"children":1446},{},[1447],{"type":34,"value":1448},"S1–S6 ruled (c131 D21, the same evening):",{"type":34,"value":1450}," Status is the landing with the overview's micros below; a \"This machine\" group (Status, Sensor, Activity) before Inventory; a Sensor page for the five facts in full and the log; an Activity page for sessions over time; the knob kept; the push is qnative c5 on design's first cut. The lab followed: ",{"type":25,"tag":57,"props":1452,"children":1454},{"className":1453},[],[1455],{"type":34,"value":1456},"\u002Fpages\u002Fnative\u002Fstatus",{"type":34,"value":1458}," reshaped, ",{"type":25,"tag":57,"props":1460,"children":1462},{"className":1461},[],[1463],{"type":34,"value":1464},"\u002Fpages\u002Fnative\u002Fsensor",{"type":34,"value":196},{"type":25,"tag":57,"props":1467,"children":1469},{"className":1468},[],[1470],{"type":34,"value":1471},"\u002Fpages\u002Fnative\u002Factivity",{"type":34,"value":1473}," built on the four worlds and captured.",{"type":25,"tag":640,"props":1475,"children":1477},{"id":1476},"_5-document",[1478],{"type":34,"value":1479},"5. Document",{"type":25,"tag":26,"props":1481,"children":1482},{},[1483],{"type":34,"value":1484},"The design-site page; CYCLES.md and c130's record updated.",{"type":25,"tag":26,"props":1486,"children":1487},{},[1488,1493,1495,1500,1502,1507,1509,1514],{"type":25,"tag":30,"props":1489,"children":1490},{},[1491],{"type":34,"value":1492},"Done 2026-11-11:",{"type":34,"value":1494}," the loop documented in ",{"type":25,"tag":57,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":34,"value":623},{"type":34,"value":1501}," (a section after Sketches and stories, where the other processes live) and on ",{"type":25,"tag":57,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":34,"value":631},{"type":34,"value":1508}," (the design-site page), with ",{"type":25,"tag":57,"props":1510,"children":1512},{"className":1511},[],[1513],{"type":34,"value":445},{"type":34,"value":1515}," as the full text; CYCLES.md in line; c130's record left to its own session with a suggested line.",{"type":25,"tag":46,"props":1517,"children":1519},{"id":1518},"decisions-defaults",[1520],{"type":34,"value":18},{"type":25,"tag":221,"props":1522,"children":1523},{},[1524,1544],{"type":25,"tag":225,"props":1525,"children":1526},{},[1527],{"type":25,"tag":229,"props":1528,"children":1529},{},[1530,1534,1539],{"type":25,"tag":233,"props":1531,"children":1532},{},[1533],{"type":34,"value":237},{"type":25,"tag":233,"props":1535,"children":1536},{},[1537],{"type":34,"value":1538},"Question",{"type":25,"tag":233,"props":1540,"children":1541},{},[1542],{"type":34,"value":1543},"Default",{"type":25,"tag":254,"props":1545,"children":1546},{},[1547,1569,1592,1648,1666,1684,1709,1739,1761,1791],{"type":25,"tag":229,"props":1548,"children":1549},{},[1550,1555,1559],{"type":25,"tag":261,"props":1551,"children":1552},{},[1553],{"type":34,"value":1554},"D1",{"type":25,"tag":261,"props":1556,"children":1557},{},[1558],{"type":34,"value":242},{"type":25,"tag":261,"props":1560,"children":1561},{},[1562,1567],{"type":25,"tag":30,"props":1563,"children":1564},{},[1565],{"type":34,"value":1566},"Ruled 2026-11-11:",{"type":34,"value":1568}," B (the stories crate) of record; A (Vue mocks in a native skin) to sketch and to review, for a person without a toolchain and for an agent sketching before Rust. The default had been C if it works, else B, A for ideation only; the primer removed C and the bake-off promoted A to the person's review medium.",{"type":25,"tag":229,"props":1570,"children":1571},{},[1572,1577,1582],{"type":25,"tag":261,"props":1573,"children":1574},{},[1575],{"type":34,"value":1576},"D2",{"type":25,"tag":261,"props":1578,"children":1579},{},[1580],{"type":34,"value":1581},"Token source",{"type":25,"tag":261,"props":1583,"children":1584},{},[1585,1590],{"type":25,"tag":57,"props":1586,"children":1588},{"className":1587},[],[1589],{"type":34,"value":153},{"type":34,"value":1591}," stays the source; the kit theme is generated, never hand-edited.",{"type":25,"tag":229,"props":1593,"children":1594},{},[1595,1600,1605],{"type":25,"tag":261,"props":1596,"children":1597},{},[1598],{"type":34,"value":1599},"D3",{"type":25,"tag":261,"props":1601,"children":1602},{},[1603],{"type":34,"value":1604},"Where native captures live",{"type":25,"tag":261,"props":1606,"children":1607},{},[1608,1610,1615,1617],{"type":34,"value":1609},"the same manifest and atlas as web captures, with a ",{"type":25,"tag":57,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":34,"value":981},{"type":34,"value":1616}," field. ",{"type":25,"tag":449,"props":1618,"children":1619},{},[1620,1622,1628,1629,1634,1635,1640,1641,1647],{"type":34,"value":1621},"Built (Phase 3): the native capture mode merges per-world story captures into ",{"type":25,"tag":57,"props":1623,"children":1625},{"className":1624},[],[1626],{"type":34,"value":1627},"public\u002Fcycles\u002F\u003Cproject>\u002Fmanifest.json",{"type":34,"value":975},{"type":25,"tag":57,"props":1630,"children":1632},{"className":1631},[],[1633],{"type":34,"value":981},{"type":34,"value":100},{"type":25,"tag":57,"props":1636,"children":1638},{"className":1637},[],[1639],{"type":34,"value":1203},{"type":34,"value":100},{"type":25,"tag":57,"props":1642,"children":1644},{"className":1643},[],[1645],{"type":34,"value":1646},"world",{"type":34,"value":204},{"type":25,"tag":229,"props":1649,"children":1650},{},[1651,1656,1661],{"type":25,"tag":261,"props":1652,"children":1653},{},[1654],{"type":34,"value":1655},"D4",{"type":25,"tag":261,"props":1657,"children":1658},{},[1659],{"type":34,"value":1660},"Review stop form",{"type":25,"tag":261,"props":1662,"children":1663},{},[1664],{"type":34,"value":1665},"the lab's review walk for C; a captures page for B.",{"type":25,"tag":229,"props":1667,"children":1668},{},[1669,1674,1679],{"type":25,"tag":261,"props":1670,"children":1671},{},[1672],{"type":34,"value":1673},"D5",{"type":25,"tag":261,"props":1675,"children":1676},{},[1677],{"type":34,"value":1678},"Illustrator",{"type":25,"tag":261,"props":1680,"children":1681},{},[1682],{"type":34,"value":1683},"available from captures (raster) only; the DOM-based export doesn't apply to native.",{"type":25,"tag":229,"props":1685,"children":1686},{},[1687,1692,1697],{"type":25,"tag":261,"props":1688,"children":1689},{},[1690],{"type":34,"value":1691},"D6",{"type":25,"tag":261,"props":1693,"children":1694},{},[1695],{"type":34,"value":1696},"Rows in mocks",{"type":25,"tag":261,"props":1698,"children":1699},{},[1700,1702,1707],{"type":34,"value":1701},"Never invented (ruled 2026-11-11): the lab reads the same named worlds as the app through ",{"type":25,"tag":57,"props":1703,"children":1705},{"className":1704},[],[1706],{"type":34,"value":656},{"type":34,"value":1708},"; a mock names its world the way a story does.",{"type":25,"tag":229,"props":1710,"children":1711},{},[1712,1717,1722],{"type":25,"tag":261,"props":1713,"children":1714},{},[1715],{"type":34,"value":1716},"D7",{"type":25,"tag":261,"props":1718,"children":1719},{},[1720],{"type":34,"value":1721},"The native skin's chrome",{"type":25,"tag":261,"props":1723,"children":1724},{},[1725,1729,1731,1737],{"type":25,"tag":30,"props":1726,"children":1727},{},[1728],{"type":34,"value":1566},{"type":34,"value":1730}," keep the imitation in ",{"type":25,"tag":57,"props":1732,"children":1734},{"className":1733},[],[1735],{"type":34,"value":1736},"app\u002Fcomponents\u002Fnative\u002F",{"type":34,"value":1738}," (the kit's shell drawn with our tokens), re-checked at each review stop by a wipe against a capture of the real shell; no Vue port of the kit's Shell, no compositing of mocks into shell PNGs.",{"type":25,"tag":229,"props":1740,"children":1741},{},[1742,1747,1752],{"type":25,"tag":261,"props":1743,"children":1744},{},[1745],{"type":34,"value":1746},"D8",{"type":25,"tag":261,"props":1748,"children":1749},{},[1750],{"type":34,"value":1751},"A mock's lifetime",{"type":25,"tag":261,"props":1753,"children":1754},{},[1755,1759],{"type":25,"tag":30,"props":1756,"children":1757},{},[1758],{"type":34,"value":1566},{"type":34,"value":1760}," when a page exists as a story, its Vue mock stays as the person's medium, naming its world so the story stays checkable against it.",{"type":25,"tag":229,"props":1762,"children":1763},{},[1764,1769,1774],{"type":25,"tag":261,"props":1765,"children":1766},{},[1767],{"type":34,"value":1768},"D9",{"type":25,"tag":261,"props":1770,"children":1771},{},[1772],{"type":34,"value":1773},"Native captures in design's atlas",{"type":25,"tag":261,"props":1775,"children":1776},{},[1777,1782,1784,1789],{"type":25,"tag":30,"props":1778,"children":1779},{},[1780],{"type":34,"value":1781},"Ruled 2026-11-11 (evening, from review-phase3.md):",{"type":34,"value":1783}," the native capture mode also copies each native capture into design's own atlas under the cycle's thread, the qnative atlas keeping the originals, so a design cycle's visual record shows B beside A without crossing projects. Retro-applied to the ",{"type":25,"tag":57,"props":1785,"children":1787},{"className":1786},[],[1788],{"type":34,"value":1219},{"type":34,"value":1790}," thread.",{"type":25,"tag":229,"props":1792,"children":1793},{},[1794,1799,1804],{"type":25,"tag":261,"props":1795,"children":1796},{},[1797],{"type":34,"value":1798},"D10",{"type":25,"tag":261,"props":1800,"children":1801},{},[1802],{"type":34,"value":1803},"The bridge for the six endpoint-only shapes",{"type":25,"tag":261,"props":1805,"children":1806},{},[1807,1812,1814,1820],{"type":25,"tag":30,"props":1808,"children":1809},{},[1810],{"type":34,"value":1811},"Ruled 2026-11-11 (evening):",{"type":34,"value":1813}," until c131 D17's routes exist (engineering took the ask the same day), the sensor's six shapes get a clearly marked bridge fixture per world beside the world copies (",{"type":25,"tag":57,"props":1815,"children":1817},{"className":1816},[],[1818],{"type":34,"value":1819},"app\u002Fdata\u002Fworlds\u002Fbridge\u002F\u003Cworld>.json",{"type":34,"value":1821},", never inside the world files, which stay copies of qnative's), typed from synthetic-data.md's shapes; the footer and the record say it is a bridge; the same bridge feeds the story in qnative.",{"type":25,"tag":46,"props":1823,"children":1825},{"id":1824},"clarifying-questions",[1826],{"type":34,"value":19},{"type":25,"tag":431,"props":1828,"children":1829},{},[1830,1841,1846],{"type":25,"tag":75,"props":1831,"children":1832},{},[1833,1839],{"type":25,"tag":1834,"props":1835,"children":1836},"del",{},[1837],{"type":34,"value":1838},"Who mocks native screens?",{"type":34,"value":1840}," Answered 2026-11-09: both. Mark and agents will each mock various aspects at different times, and being able to mock is crucial to any plan. Consequence: the medium must serve a person without a Rust toolchain and an agent with one; C (the real UI in the browser) and B (stories as tests) are both pursued, and whichever wins, a captured, reviewable artifact per page state is non-negotiable.",{"type":25,"tag":75,"props":1842,"children":1843},{},[1844],{"type":34,"value":1845},"Is a kit-shaped Figma library worth building if none exists, or is Figma out for native?",{"type":25,"tag":75,"props":1847,"children":1848},{},[1849,1854],{"type":25,"tag":1834,"props":1850,"children":1851},{},[1852],{"type":34,"value":1853},"Brand type on native?",{"type":34,"value":1855}," Answered 2026-11-09: Inter, bundled (c131 D14); the bridge carries the type scale.",{"type":25,"tag":46,"props":1857,"children":1859},{"id":1858},"patterns-to-consider",[1860],{"type":34,"value":20},{"type":25,"tag":71,"props":1862,"children":1863},{},[1864,1874,1884,1894],{"type":25,"tag":75,"props":1865,"children":1866},{},[1867,1872],{"type":25,"tag":30,"props":1868,"children":1869},{},[1870],{"type":34,"value":1871},"Stories as both the design site and the tests",{"type":34,"value":1873}," (c131 R6): one artifact, two readers.",{"type":25,"tag":75,"props":1875,"children":1876},{},[1877,1882],{"type":25,"tag":30,"props":1878,"children":1879},{},[1880],{"type":34,"value":1881},"The wasm build as the lab's embed",{"type":34,"value":1883},": the native app's screens reviewed in the browser, captured with the tools we have.",{"type":25,"tag":75,"props":1885,"children":1886},{},[1887,1892],{"type":25,"tag":30,"props":1888,"children":1889},{},[1890],{"type":34,"value":1891},"Tokens generated from one file",{"type":34,"value":1893}," into Tailwind and the kit theme: the seam between the two component systems (c130 Risks).",{"type":25,"tag":75,"props":1895,"children":1896},{},[1897,1910],{"type":25,"tag":30,"props":1898,"children":1899},{},[1900,1902,1908],{"type":34,"value":1901},"The kit's ",{"type":25,"tag":57,"props":1903,"children":1905},{"className":1904},[],[1906],{"type":34,"value":1907},"llms-full.txt",{"type":34,"value":1909}," as the executor's ground",{"type":34,"value":1911},", installed once, versioned with the kit.",1794599381250]