[{"data":1,"prerenderedAt":3347},["ShallowReactive",2],{"cycle-doc-design-c131-phase2-plan.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":25},{"id":5,"title":6},"c131","Native App V1",{"id":8,"label":9},"design","Design","phase2-plan.md","c131 Phase 2: Inventory in the Qpoint skin (plan, before kick-off)",[13,14,15,16,17,18,19,20,21,22,23,24],"Why","What we are replicating","Fleet → personal","How it is built","Steps","Stretch: the Tour guide","Extra stretch: the expand row at full fidelity","Correlation with work in motion","Rulings this phase bends","Decisions (defaults)","Questions (answered by Mark, 2026-11-10)","Risks",{"type":26,"children":27},"root",[28,105,111,124,129,150,178,199,204,285,292,365,370,375,380,486,491,874,884,948,953,958,1195,1200,1205,1211,1244,1258,1460,1466,1635,1647,1660,1883,1889,1935,1941,1989,1994,2000,2082,2087,2092,2110,2115,2381,2386,2406,2504,2509,2857,2862,2912,2917,3183,3188,3268,3273],{"type":29,"tag":30,"props":31,"children":32},"element","p",{},[33,40,42,54,56,61,63,68,69,75,77,82,84,89,91,96,98,103],{"type":29,"tag":34,"props":35,"children":36},"strong",{},[37],{"type":38,"value":39},"text","Prompt:",{"type":38,"value":41}," ",{"type":29,"tag":43,"props":44,"children":46},"a",{"href":45},"\u002Fcycles\u002Fdesign\u002Fc131\u002Fdoc\u002Fphase2-prompt",[47],{"type":29,"tag":48,"props":49,"children":51},"code",{"className":50},[],[52],{"type":38,"value":53},"phase2-prompt.md",{"type":38,"value":55}," (Mark, 2026-11-10). ",{"type":29,"tag":34,"props":57,"children":58},{},[59],{"type":38,"value":60},"Written:",{"type":38,"value":62}," 2026-11-10, from two surveys of the code (the qdash Inventory section field by field; the Tour, Data Machine and expand-row components) and a read of the kit's source at 0.9.1.\n",{"type":29,"tag":34,"props":64,"children":65},{},[66],{"type":38,"value":67},"Runs in:",{"type":38,"value":41},{"type":29,"tag":48,"props":70,"children":72},{"className":71},[],[73],{"type":38,"value":74},"..\u002Fqnative",{"type":38,"value":76}," as its cycle ",{"type":29,"tag":34,"props":78,"children":79},{},[80],{"type":38,"value":81},"c2",{"type":38,"value":83}," (the spike was c1, the phase Mark calls the first). Recorded here as c131 Phase 2. It takes the parts of the plan's Phase 1 (skeleton) that Inventory needs.\n",{"type":29,"tag":34,"props":85,"children":86},{},[87],{"type":38,"value":88},"Mode:",{"type":38,"value":90}," alchemy (how far the kit stretches) inside evolution (a port of pages that exist, on data that exists).\n",{"type":29,"tag":34,"props":92,"children":93},{},[94],{"type":38,"value":95},"Reader:",{"type":38,"value":97}," Mark, then the executor in ",{"type":29,"tag":48,"props":99,"children":101},{"className":100},[],[102],{"type":38,"value":74},{"type":38,"value":104},".",{"type":29,"tag":106,"props":107,"children":109},"h2",{"id":108},"why",[110],{"type":38,"value":13},{"type":29,"tag":30,"props":112,"children":113},{},[114,116,122],{"type":38,"value":115},"The spike showed that the kit draws a clean window cheaply: 52–80 MB, 264 ms to first render, nothing drawn by hand. It did not show whether the kit can carry ",{"type":29,"tag":117,"props":118,"children":119},"em",{},[120],{"type":38,"value":121},"our",{"type":38,"value":123}," way of building a page. On the web, that way is the layer's composed vocabulary: Data Machines in aligned bands, ledgers with pills and logos, jump pills that pin, a skill file shown in an editor frame. Phase 2 is the test of that expressive range. We replicate one whole section, Inventory, in the Qpoint skin, on the same data the web pages show, cut to one machine. We record per component how close it came and what it cost.",{"type":29,"tag":106,"props":125,"children":127},{"id":126},"what-we-are-replicating",[128],{"type":38,"value":14},{"type":29,"tag":30,"props":130,"children":131},{},[132,134,140,142,148],{"type":38,"value":133},"The Inventory submenu in qdash (",{"type":29,"tag":48,"props":135,"children":137},{"className":136},[],[138],{"type":38,"value":139},"AppSidebar.vue:137",{"type":38,"value":141},", ",{"type":29,"tag":48,"props":143,"children":145},{"className":144},[],[146],{"type":38,"value":147},"lib\u002Fworking-nav.ts:24-30",{"type":38,"value":149},") has seven listings, in nav order: Providers, Harnesses, Models, MCP Servers, Skills, Tools, Repos & Workspaces. Under them are nine detail pages:",{"type":29,"tag":151,"props":152,"children":153},"ul",{},[154,160,165],{"type":29,"tag":155,"props":156,"children":157},"li",{},[158],{"type":38,"value":159},"the seven details;",{"type":29,"tag":155,"props":161,"children":162},{},[163],{"type":38,"value":164},"Account detail (reached from a provider);",{"type":29,"tag":155,"props":166,"children":167},{},[168,170,176],{"type":38,"value":169},"Harness install detail (",{"type":29,"tag":48,"props":171,"children":173},{"className":172},[],[174],{"type":38,"value":175},"\u002Finventory\u002Fagents\u002Fdetail",{"type":38,"value":177},"). It is not in the nav, but nine ledgers link to it.",{"type":29,"tag":30,"props":179,"children":180},{},[181,183,189,191,197],{"type":38,"value":182},"The section's landing is the Inventory section of Home: 20 ",{"type":29,"tag":48,"props":184,"children":186},{"className":185},[],[187],{"type":38,"value":188},"DataMachineMicro",{"type":38,"value":190}," cards, one per band machine (",{"type":29,"tag":48,"props":192,"children":194},{"className":193},[],[195],{"type":38,"value":196},"lib\u002Findex-micros.ts:96",{"type":38,"value":198},"). Every Inventory breadcrumb leads there.",{"type":29,"tag":30,"props":200,"children":201},{},[202],{"type":38,"value":203},"About 30 layer components carry it:",{"type":29,"tag":151,"props":205,"children":206},{},[207,217,235,245,255,265,275],{"type":29,"tag":155,"props":208,"children":209},{},[210,215],{"type":29,"tag":34,"props":211,"children":212},{},[213],{"type":38,"value":214},"Overview and data devices:",{"type":38,"value":216}," PageHeader, DataMachineGroup, DataMachine, DataMachineMicro, DataIndexSection, DataRankedBars, DataSegmentBar, DataDonutChart.",{"type":29,"tag":155,"props":218,"children":219},{},[220,225,227,233],{"type":29,"tag":34,"props":221,"children":222},{},[223],{"type":38,"value":224},"Tables and empty states:",{"type":38,"value":226}," DataTable (with ",{"type":29,"tag":48,"props":228,"children":230},{"className":229},[],[231],{"type":38,"value":232},"#details",{"type":38,"value":234}," expand), DataListingBar (quick filter plus column picker), StateEmpty, FilterNoMatches.",{"type":29,"tag":155,"props":236,"children":237},{},[238,243],{"type":29,"tag":34,"props":239,"children":240},{},[241],{"type":38,"value":242},"Headers and navigation:",{"type":38,"value":244}," NavJumpPills (sticky), ActorHeader, ActorHeaderCell.",{"type":29,"tag":155,"props":246,"children":247},{},[248,253],{"type":29,"tag":34,"props":249,"children":250},{},[251],{"type":38,"value":252},"People, agents and badges:",{"type":38,"value":254}," AgentAvatar, AgentPawn, PeopleOwnerCard, UxPill, UxIcon, UxAvatar, ProjectedBadge.",{"type":29,"tag":155,"props":256,"children":257},{},[258,263],{"type":29,"tag":34,"props":259,"children":260},{},[261],{"type":38,"value":262},"Controls:",{"type":38,"value":264}," UxSelectInline, UxTabGroup.",{"type":29,"tag":155,"props":266,"children":267},{},[268,273],{"type":29,"tag":34,"props":269,"children":270},{},[271],{"type":38,"value":272},"The skill file:",{"type":38,"value":274}," UxEditorFrame, UxFileTree, UxCodeBlock.",{"type":29,"tag":155,"props":276,"children":277},{},[278,283],{"type":29,"tag":34,"props":279,"children":280},{},[281],{"type":38,"value":282},"Surface:",{"type":38,"value":284}," DataSurfaceSection, DataSurfacePanel.",{"type":29,"tag":286,"props":287,"children":289},"h3",{"id":288},"the-three-goals-read-against-the-code",[290],{"type":38,"value":291},"The three goals, read against the code",{"type":29,"tag":151,"props":293,"children":294},{},[295,305,331],{"type":29,"tag":155,"props":296,"children":297},{},[298,303],{"type":29,"tag":34,"props":299,"children":300},{},[301],{"type":38,"value":302},"The Data Machine is on the main path, not beside it.",{"type":38,"value":304}," It is the band on every listing and the tiles on every detail page; 15 of the Inventory components use it. The landing is 20 micros. It is in the core, and its full fidelity is a measured part of the core.",{"type":29,"tag":155,"props":306,"children":307},{},[308,313,315,321,323,329],{"type":29,"tag":34,"props":309,"children":310},{},[311],{"type":38,"value":312},"The expand row is on the main path too.",{"type":38,"value":314}," Recent invocations on Tool detail (",{"type":29,"tag":48,"props":316,"children":318},{"className":317},[],[319],{"type":38,"value":320},"ToolCalls.vue:44",{"type":38,"value":322},") and Skill detail (",{"type":29,"tag":48,"props":324,"children":326},{"className":325},[],[327],{"type":38,"value":328},"SkillRuntime.vue:47",{"type":38,"value":330},") are the only two expandable tables in Inventory. A basic expand lands with those pages. The extra stretch is the full behaviour, below.",{"type":29,"tag":155,"props":332,"children":333},{},[334,339,341,347,349,355,357,363],{"type":29,"tag":34,"props":335,"children":336},{},[337],{"type":38,"value":338},"The Tour guide is the true stretch.",{"type":38,"value":340}," It exists only in the design lab: ",{"type":29,"tag":48,"props":342,"children":344},{"className":343},[],[345],{"type":38,"value":346},"app\u002Fcomponents\u002Ftour\u002F",{"type":38,"value":348},", the five c123 tours, and the ",{"type":29,"tag":48,"props":350,"children":352},{"className":351},[],[353],{"type":38,"value":354},"qpoint-guide",{"type":38,"value":356}," MCP relay on the dev server. No ",{"type":29,"tag":48,"props":358,"children":360},{"className":359},[],[361],{"type":38,"value":362},"data-qp-id",{"type":38,"value":364}," exists in qdash, and help mode (\"Info View\", after Ableton) was never built.",{"type":29,"tag":106,"props":366,"children":368},{"id":367},"fleet-personal",[369],{"type":38,"value":15},{"type":29,"tag":30,"props":371,"children":372},{},[373],{"type":38,"value":374},"The web Inventory is a fleet bill of materials: what the organisation runs, across endpoints and people. The native app shows the same data from one chair, this machine and its person. Mark's instruction is to show the data those pages show. The work is in the structure: where fleet words stop meaning anything, and what a page about one machine needs that a fleet page hides.",{"type":29,"tag":30,"props":376,"children":377},{},[378],{"type":38,"value":379},"The survey tagged every tile, column and section. The pattern behind the tags gives six rules:",{"type":29,"tag":381,"props":382,"children":383},"ol",{},[384,394,415,425,448,476],{"type":29,"tag":155,"props":385,"children":386},{},[387,392],{"type":29,"tag":34,"props":388,"children":389},{},[390],{"type":38,"value":391},"Activity carries as is.",{"type":38,"value":393}," Sessions, tokens, spend, calls, denied, last used: on one machine, they are yours.",{"type":29,"tag":155,"props":395,"children":396},{},[397,402],{"type":29,"tag":34,"props":398,"children":399},{},[400],{"type":38,"value":401},"\"How many, where\" becomes \"here, at this path\".",{"type":29,"tag":151,"props":403,"children":404},{},[405,410],{"type":29,"tag":155,"props":406,"children":407},{},[408],{"type":38,"value":409},"Install and host counts collapse to a statement: installed or not, monitored or not.",{"type":29,"tag":155,"props":411,"children":412},{},[413],{"type":38,"value":414},"The statement is backed by what the scan already serves: the executable or app path, the config file, the fingerprint.",{"type":29,"tag":155,"props":416,"children":417},{},[418,423],{"type":29,"tag":34,"props":419,"children":420},{},[421],{"type":38,"value":422},"People and places leave the rows.",{"type":38,"value":424}," User, endpoint, team and the people counts are dropped from tables. The header says once whose machine this is and in which state (local or connected).",{"type":29,"tag":155,"props":426,"children":427},{},[428,433,435],{"type":29,"tag":34,"props":429,"children":430},{},[431],{"type":38,"value":432},"Drift moves inward.",{"type":38,"value":434}," Fleet drift is across installs. On one machine it becomes:\n",{"type":29,"tag":151,"props":436,"children":437},{},[438,443],{"type":29,"tag":155,"props":439,"children":440},{},[441],{"type":38,"value":442},"skill copies that disagree between your harnesses' configs;",{"type":29,"tag":155,"props":444,"children":445},{},[446],{"type":38,"value":447},"an MCP server registered in one harness and called from another.",{"type":29,"tag":155,"props":449,"children":450},{},[451,456,458],{"type":29,"tag":34,"props":452,"children":453},{},[454],{"type":38,"value":455},"The served-but-hidden fields come forward.",{"type":38,"value":457}," At fleet scale the web hides each install's long tail. On one machine that tail is the most useful thing on the page:\n",{"type":29,"tag":151,"props":459,"children":460},{},[461,466,471],{"type":29,"tag":155,"props":462,"children":463},{},[464],{"type":38,"value":465},"binary path, fingerprint, config source;",{"type":29,"tag":155,"props":467,"children":468},{},[469],{"type":38,"value":470},"permission, approval and sandbox modes, configured model, auth method, quotas;",{"type":29,"tag":155,"props":472,"children":473},{},[474],{"type":38,"value":475},"MCP command, args, URL and env keys, with OAuth state.",{"type":29,"tag":155,"props":477,"children":478},{},[479,484],{"type":29,"tag":34,"props":480,"children":481},{},[482],{"type":38,"value":483},"Nothing is blanked",{"type":38,"value":485}," (R5). A fleet-only tile is replaced by its personal counterpart, or removed and the band rebalanced. No cell reads \"1\" just because the denominator collapsed.",{"type":29,"tag":30,"props":487,"children":488},{},[489],{"type":38,"value":490},"What the rules do to each page (1M = one machine as is, CM = changes meaning, FO = fleet only; field-level tags in the survey):",{"type":29,"tag":492,"props":493,"children":494},"table",{},[495,529],{"type":29,"tag":496,"props":497,"children":498},"thead",{},[499],{"type":29,"tag":500,"props":501,"children":502},"tr",{},[503,509,514,519,524],{"type":29,"tag":504,"props":505,"children":506},"th",{},[507],{"type":38,"value":508},"Web page",{"type":29,"tag":504,"props":510,"children":511},{},[512],{"type":38,"value":513},"Native page",{"type":29,"tag":504,"props":515,"children":516},{},[517],{"type":38,"value":518},"Carries",{"type":29,"tag":504,"props":520,"children":521},{},[522],{"type":38,"value":523},"Translates",{"type":29,"tag":504,"props":525,"children":526},{},[527],{"type":38,"value":528},"Drops",{"type":29,"tag":530,"props":531,"children":532},"tbody",{},[533,567,595,633,661,697,737,764,792,820,847],{"type":29,"tag":500,"props":534,"children":535},{},[536,542,552,557,562],{"type":29,"tag":537,"props":538,"children":539},"td",{},[540],{"type":38,"value":541},"Home › Inventory (20 micros)",{"type":29,"tag":537,"props":543,"children":544},{},[545,550],{"type":29,"tag":34,"props":546,"children":547},{},[548],{"type":38,"value":549},"Inventory landing",{"type":38,"value":551},", the same 20 micros",{"type":29,"tag":537,"props":553,"children":554},{},[555],{"type":38,"value":556},"providers, tokens, spend, models, MCP, tools, workspaces",{"type":29,"tag":537,"props":558,"children":559},{},[560],{"type":38,"value":561},"Harness installs → harnesses here (monitored · shadow); Skill installs → skills per harness here",{"type":29,"tag":537,"props":563,"children":564},{},[565],{"type":38,"value":566},"Skills by team → by harness",{"type":29,"tag":500,"props":568,"children":569},{},[570,575,580,585,590],{"type":29,"tag":537,"props":571,"children":572},{},[573],{"type":38,"value":574},"Harnesses listing",{"type":29,"tag":537,"props":576,"children":577},{},[578],{"type":38,"value":579},"Harnesses",{"type":29,"tag":537,"props":581,"children":582},{},[583],{"type":38,"value":584},"harness, providers, sessions, spend; plus version, default model, MCP and skills configured, last active (served, hidden on the web)",{"type":29,"tag":537,"props":586,"children":587},{},[588],{"type":38,"value":589},"installs → installed (path); coverage → monitored",{"type":29,"tag":537,"props":591,"children":592},{},[593],{"type":38,"value":594},"endpoints column",{"type":29,"tag":500,"props":596,"children":597},{},[598,610,618,623,628],{"type":29,"tag":537,"props":599,"children":600},{},[601,603,608],{"type":38,"value":602},"Harness detail ",{"type":29,"tag":34,"props":604,"children":605},{},[606],{"type":38,"value":607},"and",{"type":38,"value":609}," Harness install detail",{"type":29,"tag":537,"props":611,"children":612},{},[613],{"type":29,"tag":34,"props":614,"children":615},{},[616],{"type":38,"value":617},"one page: the harness as installed here",{"type":29,"tag":537,"props":619,"children":620},{},[621],{"type":38,"value":622},"header, providers, spend, surface (models, MCP, workspaces, tools); the install's long tail (rule 5); the Sessions ledger from the install page",{"type":29,"tag":537,"props":624,"children":625},{},[626],{"type":38,"value":627},"Versions → the one version; Skills panel → configured here; the Installs ledger appears only when this machine has more than one install of the harness",{"type":29,"tag":537,"props":629,"children":630},{},[631],{"type":38,"value":632},"Users, Teams and Versions-drift panels; host and user columns",{"type":29,"tag":500,"props":634,"children":635},{},[636,641,646,651,656],{"type":29,"tag":537,"props":637,"children":638},{},[639],{"type":38,"value":640},"MCP Servers listing",{"type":29,"tag":537,"props":642,"children":643},{},[644],{"type":38,"value":645},"MCP Servers",{"type":29,"tag":537,"props":647,"children":648},{},[649],{"type":38,"value":650},"all",{"type":29,"tag":537,"props":652,"children":653},{},[654],{"type":38,"value":655},"harnesses and installs → which of your harnesses call it and which register it",{"type":29,"tag":537,"props":657,"children":658},{},[659],{"type":38,"value":660},"none",{"type":29,"tag":500,"props":662,"children":663},{},[664,669,674,687,692],{"type":29,"tag":537,"props":665,"children":666},{},[667],{"type":38,"value":668},"MCP Server detail",{"type":29,"tag":537,"props":670,"children":671},{},[672],{"type":38,"value":673},"MCP Server",{"type":29,"tag":537,"props":675,"children":676},{},[677,679,685],{"type":38,"value":678},"tools ledger, denied, calls; plus ",{"type":29,"tag":48,"props":680,"children":682},{"className":681},[],[683],{"type":38,"value":684},"config[]",{"type":38,"value":686}," (where it is configured, how it starts)",{"type":29,"tag":537,"props":688,"children":689},{},[690],{"type":38,"value":691},"the gap sentence → \"configured here · called here\"; the Installs tile → the configs that register it",{"type":29,"tag":537,"props":693,"children":694},{},[695],{"type":38,"value":696},"host and user columns",{"type":29,"tag":500,"props":698,"children":699},{},[700,705,710,715,732],{"type":29,"tag":537,"props":701,"children":702},{},[703],{"type":38,"value":704},"Models listing · detail",{"type":29,"tag":537,"props":706,"children":707},{},[708],{"type":38,"value":709},"Models",{"type":29,"tag":537,"props":711,"children":712},{},[713],{"type":38,"value":714},"all but users",{"type":29,"tag":537,"props":716,"children":717},{},[718,724,726],{"type":29,"tag":48,"props":719,"children":721},{"className":720},[],[722],{"type":38,"value":723},"default_on",{"type":38,"value":725}," → \"the default in ",{"type":29,"tag":727,"props":728,"children":729},"harness",{},[730],{"type":38,"value":731},"\"",{"type":29,"tag":537,"props":733,"children":734},{},[735],{"type":38,"value":736},"users, endpoints",{"type":29,"tag":500,"props":738,"children":739},{},[740,745,750,754,759],{"type":29,"tag":537,"props":741,"children":742},{},[743],{"type":38,"value":744},"Providers listing · detail",{"type":29,"tag":537,"props":746,"children":747},{},[748],{"type":38,"value":749},"Providers",{"type":29,"tag":537,"props":751,"children":752},{},[753],{"type":38,"value":650},{"type":29,"tag":537,"props":755,"children":756},{},[757],{"type":38,"value":758},"accounts → your accounts on it",{"type":29,"tag":537,"props":760,"children":761},{},[762],{"type":38,"value":763},"users",{"type":29,"tag":500,"props":765,"children":766},{},[767,772,777,782,787],{"type":29,"tag":537,"props":768,"children":769},{},[770],{"type":38,"value":771},"Account detail",{"type":29,"tag":537,"props":773,"children":774},{},[775],{"type":38,"value":776},"Account (smaller)",{"type":29,"tag":537,"props":778,"children":779},{},[780],{"type":38,"value":781},"header, harnesses, sessions",{"type":29,"tag":537,"props":783,"children":784},{},[785],{"type":38,"value":786},"dual use (\"you present a personal and a company account\"), no identity",{"type":29,"tag":537,"props":788,"children":789},{},[790],{"type":38,"value":791},"Users ledger, Shared, people count, endpoints",{"type":29,"tag":500,"props":793,"children":794},{},[795,800,805,810,815],{"type":29,"tag":537,"props":796,"children":797},{},[798],{"type":38,"value":799},"Skills listing · detail",{"type":29,"tag":537,"props":801,"children":802},{},[803],{"type":38,"value":804},"Skills",{"type":29,"tag":537,"props":806,"children":807},{},[808],{"type":38,"value":809},"the definition editor (the strongest carry-over), invocations, runtime",{"type":29,"tag":537,"props":811,"children":812},{},[813],{"type":38,"value":814},"installs → the harnesses here that carry it; Definitions → copies that disagree across your configs; \"canonical\" → the copy most of your harnesses load",{"type":29,"tag":537,"props":816,"children":817},{},[818],{"type":38,"value":819},"team and people pickers; endpoint and user columns",{"type":29,"tag":500,"props":821,"children":822},{},[823,828,833,838,842],{"type":29,"tag":537,"props":824,"children":825},{},[826],{"type":38,"value":827},"Tools listing · detail",{"type":29,"tag":537,"props":829,"children":830},{},[831],{"type":38,"value":832},"Tools",{"type":29,"tag":537,"props":834,"children":835},{},[836],{"type":38,"value":837},"all, with the expandable invocations",{"type":29,"tag":537,"props":839,"children":840},{},[841],{"type":38,"value":660},{"type":29,"tag":537,"props":843,"children":844},{},[845],{"type":38,"value":846},"user and endpoint columns",{"type":29,"tag":500,"props":848,"children":849},{},[850,855,860,864,869],{"type":29,"tag":537,"props":851,"children":852},{},[853],{"type":38,"value":854},"Repos & Workspaces listing · detail",{"type":29,"tag":537,"props":856,"children":857},{},[858],{"type":38,"value":859},"Repos & Workspaces",{"type":29,"tag":537,"props":861,"children":862},{},[863],{"type":38,"value":650},{"type":29,"tag":537,"props":865,"children":866},{},[867],{"type":38,"value":868},"Users chips → you",{"type":29,"tag":537,"props":870,"children":871},{},[872],{"type":38,"value":873},"teams, hosts, the Users ledger, \"shared\"",{"type":29,"tag":30,"props":875,"children":876},{},[877,882],{"type":29,"tag":34,"props":878,"children":879},{},[880],{"type":38,"value":881},"A structural consequence:",{"type":38,"value":883}," the web's orphan, Harness install detail (one harness for one user on one host), is the page that is already about one machine. On the endpoint it becomes the harness page. Nine ledger links stop pointing at a page hidden behind the footer toggle.",{"type":29,"tag":30,"props":885,"children":886},{},[887,892,894,900,902,908,910,916,918,924,926,932,933,939,940,946],{"type":29,"tag":34,"props":888,"children":889},{},[890],{"type":38,"value":891},"Seen from the plane:",{"type":38,"value":893}," a connected app reads the plane, so the same cut must be served there. No Inventory handler takes ",{"type":29,"tag":48,"props":895,"children":897},{"className":896},[],[898],{"type":38,"value":899},"?host=",{"type":38,"value":901}," today (",{"type":29,"tag":48,"props":903,"children":905},{"className":904},[],[906],{"type":38,"value":907},"web.rs",{"type":38,"value":909},": harnesses, mcp-servers, models, providers, skills, tools, workspaces). Only ",{"type":29,"tag":48,"props":911,"children":913},{"className":912},[],[914],{"type":38,"value":915},"\u002Fapi\u002Fendpoints?host=",{"type":38,"value":917}," and ",{"type":29,"tag":48,"props":919,"children":921},{"className":920},[],[922],{"type":38,"value":923},"\u002Fapi\u002Fsurface?host=",{"type":38,"value":925}," take one. c134's Kamal prep already names this as candidate gap row 31; the survey confirms it. On a real endpoint, qcontrol's own local API is already one machine, and the backend has a single-host fallback (",{"type":29,"tag":48,"props":927,"children":929},{"className":928},[],[930],{"type":38,"value":931},"web.rs:1376",{"type":38,"value":141},{"type":29,"tag":48,"props":934,"children":936},{"className":935},[],[937],{"type":38,"value":938},"5130",{"type":38,"value":141},{"type":29,"tag":48,"props":941,"children":943},{"className":942},[],[944],{"type":38,"value":945},"5325",{"type":38,"value":947},").",{"type":29,"tag":106,"props":949,"children":951},{"id":950},"how-it-is-built",[952],{"type":38,"value":16},{"type":29,"tag":30,"props":954,"children":955},{},[956],{"type":38,"value":957},"The web architecture in the bible is page → context component → layer component, with composables over a Transport. It maps one to one:",{"type":29,"tag":492,"props":959,"children":960},{},[961,984],{"type":29,"tag":496,"props":962,"children":963},{},[964],{"type":29,"tag":500,"props":965,"children":966},{},[967,972],{"type":29,"tag":504,"props":968,"children":969},{},[970],{"type":38,"value":971},"Web",{"type":29,"tag":504,"props":973,"children":974},{},[975,977,982],{"type":38,"value":976},"Native (",{"type":29,"tag":48,"props":978,"children":980},{"className":979},[],[981],{"type":38,"value":74},{"type":38,"value":983},")",{"type":29,"tag":530,"props":985,"children":986},{},[987,1018,1075,1131,1156,1169],{"type":29,"tag":500,"props":988,"children":989},{},[990,1007],{"type":29,"tag":537,"props":991,"children":992},{},[993,999,1001,1006],{"type":29,"tag":48,"props":994,"children":996},{"className":995},[],[997],{"type":38,"value":998},"ui\u002Ftypes\u002Fapi\u002F*",{"type":38,"value":1000}," (TS, written from ",{"type":29,"tag":48,"props":1002,"children":1004},{"className":1003},[],[1005],{"type":38,"value":907},{"type":38,"value":983},{"type":29,"tag":537,"props":1008,"children":1009},{},[1010,1016],{"type":29,"tag":48,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":38,"value":1015},"crates\u002Ftypes",{"type":38,"value":1017},": every Inventory listing and detail shape, serde, the wire names",{"type":29,"tag":500,"props":1019,"children":1020},{},[1021,1049],{"type":29,"tag":537,"props":1022,"children":1023},{},[1024,1026,1032,1034,1040,1042,1048],{"type":38,"value":1025},"composables over ",{"type":29,"tag":48,"props":1027,"children":1029},{"className":1028},[],[1030],{"type":38,"value":1031},"Transport",{"type":38,"value":1033}," (",{"type":29,"tag":48,"props":1035,"children":1037},{"className":1036},[],[1038],{"type":38,"value":1039},"http()",{"type":38,"value":1041}," · ",{"type":29,"tag":48,"props":1043,"children":1045},{"className":1044},[],[1046],{"type":38,"value":1047},"local()",{"type":38,"value":983},{"type":29,"tag":537,"props":1050,"children":1051},{},[1052,1058,1060,1066,1067,1073],{"type":29,"tag":48,"props":1053,"children":1055},{"className":1054},[],[1056],{"type":38,"value":1057},"crates\u002Fnozzle",{"type":38,"value":1059},": a repository per resource (",{"type":29,"tag":48,"props":1061,"children":1063},{"className":1062},[],[1064],{"type":38,"value":1065},"harnesses()",{"type":38,"value":141},{"type":29,"tag":48,"props":1068,"children":1070},{"className":1069},[],[1071],{"type":38,"value":1072},"harness(id)",{"type":38,"value":1074},", …) over the three transports",{"type":29,"tag":500,"props":1076,"children":1077},{},[1078,1089],{"type":29,"tag":537,"props":1079,"children":1080},{},[1081,1087],{"type":29,"tag":48,"props":1082,"children":1084},{"className":1083},[],[1085],{"type":38,"value":1086},"q-nuxt-layer",{"type":38,"value":1088}," components",{"type":29,"tag":537,"props":1090,"children":1091},{},[1092,1101,1103,1108,1109,1115,1116,1122,1123,1129],{"type":29,"tag":34,"props":1093,"children":1094},{},[1095],{"type":29,"tag":48,"props":1096,"children":1098},{"className":1097},[],[1099],{"type":38,"value":1100},"crates\u002Flayer",{"type":38,"value":1102},": our components in Rust, ",{"type":29,"tag":34,"props":1104,"children":1105},{},[1106],{"type":38,"value":1107},"with the web names",{"type":38,"value":1033},{"type":29,"tag":48,"props":1110,"children":1112},{"className":1111},[],[1113],{"type":38,"value":1114},"DataMachine",{"type":38,"value":141},{"type":29,"tag":48,"props":1117,"children":1119},{"className":1118},[],[1120],{"type":38,"value":1121},"DataRankedBars",{"type":38,"value":141},{"type":29,"tag":48,"props":1124,"children":1126},{"className":1125},[],[1127],{"type":38,"value":1128},"UxPill",{"type":38,"value":1130},"…), so the parity table reads one to one; the kit's styled components underneath",{"type":29,"tag":500,"props":1132,"children":1133},{},[1134,1145],{"type":29,"tag":537,"props":1135,"children":1136},{},[1137,1143],{"type":29,"tag":48,"props":1138,"children":1140},{"className":1139},[],[1141],{"type":38,"value":1142},"app\u002Fcomponents\u002Finventory\u002F*",{"type":38,"value":1144}," (Band, Ledger, Header, Tiles)",{"type":29,"tag":537,"props":1146,"children":1147},{},[1148,1154],{"type":29,"tag":48,"props":1149,"children":1151},{"className":1150},[],[1152],{"type":38,"value":1153},"crates\u002Fapp\u002Fsrc\u002Finventory\u002F*",{"type":38,"value":1155},": the same context components",{"type":29,"tag":500,"props":1157,"children":1158},{},[1159,1164],{"type":29,"tag":537,"props":1160,"children":1161},{},[1162],{"type":38,"value":1163},"pages + router",{"type":29,"tag":537,"props":1165,"children":1166},{},[1167],{"type":38,"value":1168},"pages + a route enum with history",{"type":29,"tag":500,"props":1170,"children":1171},{},[1172,1184],{"type":29,"tag":537,"props":1173,"children":1174},{},[1175,1177,1183],{"type":38,"value":1176},"design-site demos (",{"type":29,"tag":48,"props":1178,"children":1180},{"className":1179},[],[1181],{"type":38,"value":1182},"\u002Fcomponents\u002F\u003Cname>",{"type":38,"value":983},{"type":29,"tag":537,"props":1185,"children":1186},{},[1187,1193],{"type":29,"tag":48,"props":1188,"children":1190},{"className":1189},[],[1191],{"type":38,"value":1192},"crates\u002Fstories",{"type":38,"value":1194},": one story per component and per page state, rendered headless, captured to PNG",{"type":29,"tag":106,"props":1196,"children":1198},{"id":1197},"steps",[1199],{"type":38,"value":17},{"type":29,"tag":30,"props":1201,"children":1202},{},[1203],{"type":38,"value":1204},"Each step ends in captures. ★ marks a review stop.",{"type":29,"tag":286,"props":1206,"children":1208},{"id":1207},"_0-kick-off",[1209],{"type":38,"value":1210},"0. Kick-off",{"type":29,"tag":151,"props":1212,"children":1213},{},[1214,1226,1231],{"type":29,"tag":155,"props":1215,"children":1216},{},[1217,1219,1225],{"type":38,"value":1218},"Write qnative ",{"type":29,"tag":48,"props":1220,"children":1222},{"className":1221},[],[1223],{"type":38,"value":1224},"cycles\u002Fc2.\u003Cname>\u002FCYCLE.md",{"type":38,"value":104},{"type":29,"tag":155,"props":1227,"children":1228},{},[1229],{"type":38,"value":1230},"Update c131's record.",{"type":29,"tag":155,"props":1232,"children":1233},{},[1234,1236,1242],{"type":38,"value":1235},"Pin ",{"type":29,"tag":48,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":38,"value":1241},"gpui-kit = \"=0.9.1\"",{"type":38,"value":1243}," for the whole phase; no upgrade mid-phase.",{"type":29,"tag":286,"props":1245,"children":1247},{"id":1246},"_1-the-world-cut-to-one-machine-c131-synthetic-datamd-made-real-for-inventory",[1248,1250,1256],{"type":38,"value":1249},"1. The world, cut to one machine (c131 ",{"type":29,"tag":48,"props":1251,"children":1253},{"className":1252},[],[1254],{"type":38,"value":1255},"synthetic-data.md",{"type":38,"value":1257}," made real for Inventory)",{"type":29,"tag":151,"props":1259,"children":1260},{},[1261,1315,1340,1358,1407,1417,1427],{"type":29,"tag":155,"props":1262,"children":1263},{},[1264,1269,1271,1277,1278,1284,1286,1292,1294,1300,1301,1307,1308,1314],{"type":29,"tag":34,"props":1265,"children":1266},{},[1267],{"type":38,"value":1268},"Cut the streams, not the database.",{"type":38,"value":1270}," Filter the seed's ",{"type":29,"tag":48,"props":1272,"children":1274},{"className":1273},[],[1275],{"type":38,"value":1276},"out\u002Fruns.ndjson",{"type":38,"value":917},{"type":29,"tag":48,"props":1279,"children":1281},{"className":1280},[],[1282],{"type":38,"value":1283},"out\u002Fscan.ndjson",{"type":38,"value":1285}," by ",{"type":29,"tag":48,"props":1287,"children":1289},{"className":1288},[],[1290],{"type":38,"value":1291},"hostname",{"type":38,"value":1293},". In the seed each user has one host and each install is keyed agent × host (",{"type":29,"tag":48,"props":1295,"children":1297},{"className":1296},[],[1298],{"type":38,"value":1299},"generate.py:142-187",{"type":38,"value":141},{"type":29,"tag":48,"props":1302,"children":1304},{"className":1303},[],[1305],{"type":38,"value":1306},"436-441",{"type":38,"value":141},{"type":29,"tag":48,"props":1309,"children":1311},{"className":1310},[],[1312],{"type":38,"value":1313},"831-839",{"type":38,"value":947},{"type":29,"tag":155,"props":1316,"children":1317},{},[1318,1323,1324,1330,1332,1338],{"type":29,"tag":34,"props":1319,"children":1320},{},[1321],{"type":38,"value":1322},"Ingest through the real path",{"type":38,"value":1033},{"type":29,"tag":48,"props":1325,"children":1327},{"className":1326},[],[1328],{"type":38,"value":1329},"qdash ingest --from-file",{"type":38,"value":1331},") into a fresh database, as ",{"type":29,"tag":48,"props":1333,"children":1335},{"className":1334},[],[1336],{"type":38,"value":1337},"generate.py",{"type":38,"value":1339}," does with a copied binary.",{"type":29,"tag":155,"props":1341,"children":1342},{},[1343,1348,1350,1356],{"type":29,"tag":34,"props":1344,"children":1345},{},[1346],{"type":38,"value":1347},"Serve and crawl.",{"type":38,"value":1349}," Serve that database and crawl every route the Inventory pages read: listings × the period presets, details × every id. Write the results to ",{"type":29,"tag":48,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":38,"value":1355},"crates\u002Ffixtures\u002Fworld\u002F\u003Cname>\u002F",{"type":38,"value":1357}," with a manifest. This is c113's bake applied to one host. Nothing in qcontrol changes; the cut script lives in qnative.",{"type":29,"tag":155,"props":1359,"children":1360},{},[1361,1366],{"type":29,"tag":34,"props":1362,"children":1363},{},[1364],{"type":38,"value":1365},"The worlds:",{"type":29,"tag":151,"props":1367,"children":1368},{},[1369,1380,1391,1402],{"type":29,"tag":155,"props":1370,"children":1371},{},[1372,1378],{"type":29,"tag":48,"props":1373,"children":1375},{"className":1374},[],[1376],{"type":38,"value":1377},"meridian-day90",{"type":38,"value":1379},": priya-x1. Claude, Codex and Cursor installed, plus an Ollama shadow install. This is the default.",{"type":29,"tag":155,"props":1381,"children":1382},{},[1383,1389],{"type":29,"tag":48,"props":1384,"children":1386},{"className":1385},[],[1387],{"type":38,"value":1388},"first-week",{"type":38,"value":1390},": chen-mba. One instrumented Claude install, one never-monitored Windsurf install. The minimal state.",{"type":29,"tag":155,"props":1392,"children":1393},{},[1394,1400],{"type":29,"tag":48,"props":1395,"children":1397},{"className":1396},[],[1398],{"type":38,"value":1399},"fresh",{"type":38,"value":1401},": empty.",{"type":29,"tag":155,"props":1403,"children":1404},{},[1405],{"type":38,"value":1406},"Overflow waits for a power-user world.",{"type":29,"tag":155,"props":1408,"children":1409},{},[1410,1415],{"type":29,"tag":34,"props":1411,"children":1412},{},[1413],{"type":38,"value":1414},"Types",{"type":38,"value":1416}," for every shape, with a fixtures test that deserialises every crawled file (R3).",{"type":29,"tag":155,"props":1418,"children":1419},{},[1420,1425],{"type":29,"tag":34,"props":1421,"children":1422},{},[1423],{"type":38,"value":1424},"Repositories",{"type":38,"value":1426}," in the nozzle. The fixture plane serves the same directory.",{"type":29,"tag":155,"props":1428,"children":1429},{},[1430,1435,1437,1442,1444,1450,1452,1458],{"type":29,"tag":34,"props":1431,"children":1432},{},[1433],{"type":38,"value":1434},"Check the binary first.",{"type":38,"value":1436}," The seed binary dates from 2026-10-14. If ",{"type":29,"tag":48,"props":1438,"children":1440},{"className":1439},[],[1441],{"type":38,"value":907},{"type":38,"value":1443}," has moved since, rebuild into a scratch ",{"type":29,"tag":48,"props":1445,"children":1447},{"className":1446},[],[1448],{"type":38,"value":1449},"CARGO_TARGET_DIR",{"type":38,"value":1451}," so qcontrol's shared ",{"type":29,"tag":48,"props":1453,"children":1455},{"className":1454},[],[1456],{"type":38,"value":1457},"target\u002F",{"type":38,"value":1459}," is untouched.",{"type":29,"tag":286,"props":1461,"children":1463},{"id":1462},"_2-the-skin",[1464],{"type":38,"value":1465},"2. The skin ★",{"type":29,"tag":151,"props":1467,"children":1468},{},[1469,1540,1571,1587,1597,1623],{"type":29,"tag":155,"props":1470,"children":1471},{},[1472,1477,1479],{"type":29,"tag":34,"props":1473,"children":1474},{},[1475],{"type":38,"value":1476},"The token bridge",{"type":38,"value":1478}," (c132 deliverable 2, built here; c132 D2 holds: generated, never hand-edited).\n",{"type":29,"tag":151,"props":1480,"children":1481},{},[1482,1519],{"type":29,"tag":155,"props":1483,"children":1484},{},[1485,1487,1493,1495,1501,1503,1509,1511,1517],{"type":38,"value":1486},"Source: ",{"type":29,"tag":48,"props":1488,"children":1490},{"className":1489},[],[1491],{"type":38,"value":1492},"q-nuxt-layer\u002Ftokens\u002Ftokens.json",{"type":38,"value":1494}," plus ",{"type":29,"tag":48,"props":1496,"children":1498},{"className":1497},[],[1499],{"type":38,"value":1500},"semantic.mjs",{"type":38,"value":1502},". That is the file ",{"type":29,"tag":48,"props":1504,"children":1506},{"className":1505},[],[1507],{"type":38,"value":1508},"tokens.css",{"type":38,"value":1510}," is generated from: 21 semantic roles, light and dark, documented in ",{"type":29,"tag":48,"props":1512,"children":1514},{"className":1513},[],[1515],{"type":38,"value":1516},"brand\u002Fdesign_tokens.md",{"type":38,"value":1518},", and the roles qdash's pages actually use.",{"type":29,"tag":155,"props":1520,"children":1521},{},[1522,1524,1530,1532,1538],{"type":38,"value":1523},"Generator: design ",{"type":29,"tag":48,"props":1525,"children":1527},{"className":1526},[],[1528],{"type":38,"value":1529},"scripts\u002Ftokens-to-kit.mjs",{"type":38,"value":1531},". Output: ",{"type":29,"tag":48,"props":1533,"children":1535},{"className":1534},[],[1536],{"type":38,"value":1537},"qnative\u002Fcrates\u002Fapp\u002Fthemes\u002Fqpoint.json",{"type":38,"value":1539},", a ThemeSet with light and dark that maps our roles onto the kit's 134.",{"type":29,"tag":155,"props":1541,"children":1542},{},[1543,1548],{"type":29,"tag":34,"props":1544,"children":1545},{},[1546],{"type":38,"value":1547},"Beyond colour:",{"type":29,"tag":151,"props":1549,"children":1550},{},[1551,1556,1561,1566],{"type":29,"tag":155,"props":1552,"children":1553},{},[1554],{"type":38,"value":1555},"the card: radius 12, the two-layer shadow in light, a border in dark;",{"type":29,"tag":155,"props":1557,"children":1558},{},[1559],{"type":38,"value":1560},"hairlines;",{"type":29,"tag":155,"props":1562,"children":1563},{},[1564],{"type":38,"value":1565},"Inter's scale from 11 to 40 and its weights (D14);",{"type":29,"tag":155,"props":1567,"children":1568},{},[1569],{"type":38,"value":1570},"density.",{"type":29,"tag":155,"props":1572,"children":1573},{},[1574,1579,1580,1586],{"type":29,"tag":34,"props":1575,"children":1576},{},[1577],{"type":38,"value":1578},"Dark mode follows the OS",{"type":38,"value":1033},{"type":29,"tag":48,"props":1581,"children":1583},{"className":1582},[],[1584],{"type":38,"value":1585},"Theme::sync_system_appearance",{"type":38,"value":947},{"type":29,"tag":155,"props":1588,"children":1589},{},[1590,1595],{"type":29,"tag":34,"props":1591,"children":1592},{},[1593],{"type":38,"value":1594},"A gallery story:",{"type":38,"value":1596}," the kit's components in the Qpoint skin, light and dark.",{"type":29,"tag":155,"props":1598,"children":1599},{},[1600,1605,1607,1613,1615,1621],{"type":29,"tag":34,"props":1601,"children":1602},{},[1603],{"type":38,"value":1604},"Captures without Screen Recording.",{"type":38,"value":1606}," GPUI 0.3.12 has ",{"type":29,"tag":48,"props":1608,"children":1610},{"className":1609},[],[1611],{"type":38,"value":1612},"VisualTestAppContext::capture_screenshot",{"type":38,"value":1614},": a real macOS window rendered off-screen to an image. Stories become PNGs in the atlas with ",{"type":29,"tag":48,"props":1616,"children":1618},{"className":1617},[],[1619],{"type":38,"value":1620},"surface: native",{"type":38,"value":1622}," (c132 D3). This answers c132's open question of how medium B is captured; confirm the feature flags first.",{"type":29,"tag":155,"props":1624,"children":1625},{},[1626,1628,1633],{"type":38,"value":1627},"★ ",{"type":29,"tag":34,"props":1629,"children":1630},{},[1631],{"type":38,"value":1632},"Review stop 1: the skin",{"type":38,"value":1634},", kit components in Qpoint, light and dark, beside the web.",{"type":29,"tag":286,"props":1636,"children":1638},{"id":1637},"_3-the-layer-in-rust-crateslayer",[1639,1641,1646],{"type":38,"value":1640},"3. The layer in Rust (",{"type":29,"tag":48,"props":1642,"children":1644},{"className":1643},[],[1645],{"type":38,"value":1100},{"type":38,"value":983},{"type":29,"tag":30,"props":1648,"children":1649},{},[1650,1652,1658],{"type":38,"value":1651},"One story per component, captured beside its design-site demo. Props become builder methods; slots become ",{"type":29,"tag":48,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":38,"value":1657},"AnyElement",{"type":38,"value":1659}," children or closures. In build order:",{"type":29,"tag":151,"props":1661,"children":1662},{},[1663,1707,1745,1784,1847,1857],{"type":29,"tag":155,"props":1664,"children":1665},{},[1666,1671],{"type":29,"tag":34,"props":1667,"children":1668},{},[1669],{"type":38,"value":1670},"a. Primitives.",{"type":29,"tag":151,"props":1672,"children":1673},{},[1674,1679,1684,1697,1702],{"type":29,"tag":155,"props":1675,"children":1676},{},[1677],{"type":38,"value":1678},"UxPill and UxIcon (the kit's Lucide icons plus ours).",{"type":29,"tag":155,"props":1680,"children":1681},{},[1682],{"type":38,"value":1683},"UxAvatar and AgentAvatar (logos as PNG).",{"type":29,"tag":155,"props":1685,"children":1686},{},[1687,1689,1695],{"type":38,"value":1688},"AgentPawn: pixel art through ",{"type":29,"tag":48,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":38,"value":1694},"img",{"type":38,"value":1696},", never tinted (the pawn-components rule).",{"type":29,"tag":155,"props":1698,"children":1699},{},[1700],{"type":38,"value":1701},"ProjectedBadge and ProjectedRing.",{"type":29,"tag":155,"props":1703,"children":1704},{},[1705],{"type":38,"value":1706},"StateEmpty and FilterNoMatches, on the kit's Empty and Skeleton.",{"type":29,"tag":155,"props":1708,"children":1709},{},[1710,1715],{"type":29,"tag":34,"props":1711,"children":1712},{},[1713],{"type":38,"value":1714},"b. The Data Machine family.",{"type":29,"tag":151,"props":1716,"children":1717},{},[1718,1723,1728,1733],{"type":29,"tag":155,"props":1719,"children":1720},{},[1721],{"type":38,"value":1722},"DataMachine, DataMachineMicro, and DataMachineGroup with aligned rows. GPUI's layout engine has grid but not subgrid; try a first-frame measure that pins row heights across the band, and row slots sized from the type scale.",{"type":29,"tag":155,"props":1724,"children":1725},{},[1726],{"type":38,"value":1727},"DataIndexSection: the auto-fill grid computed from the container's width.",{"type":29,"tag":155,"props":1729,"children":1730},{},[1731],{"type":38,"value":1732},"The devices: DataRankedBars, DataSegmentBar, DataDonutChart (canvas paths), the spark.",{"type":29,"tag":155,"props":1734,"children":1735},{},[1736,1738,1744],{"type":38,"value":1737},"The fade on ",{"type":29,"tag":48,"props":1739,"children":1741},{"className":1740},[],[1742],{"type":38,"value":1743},"fadeKey",{"type":38,"value":104},{"type":29,"tag":155,"props":1746,"children":1747},{},[1748,1753],{"type":29,"tag":34,"props":1749,"children":1750},{},[1751],{"type":38,"value":1752},"c. Page furniture.",{"type":29,"tag":151,"props":1754,"children":1755},{},[1756,1761,1766,1779],{"type":29,"tag":155,"props":1757,"children":1758},{},[1759],{"type":38,"value":1760},"PageHeader (breadcrumb, title, subtitle).",{"type":29,"tag":155,"props":1762,"children":1763},{},[1764],{"type":38,"value":1765},"ActorHeader and ActorHeaderCell.",{"type":29,"tag":155,"props":1767,"children":1768},{},[1769,1771,1777],{"type":38,"value":1770},"NavJumpPills. GPUI has no ",{"type":29,"tag":48,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":38,"value":1776},"position: sticky",{"type":38,"value":1778},", so the pills re-render pinned once the scroll offset passes them.",{"type":29,"tag":155,"props":1780,"children":1781},{},[1782],{"type":38,"value":1783},"UxTabGroup on the kit's Tabs; UxSelectInline on the kit's Select.",{"type":29,"tag":155,"props":1785,"children":1786},{},[1787,1792],{"type":29,"tag":34,"props":1788,"children":1789},{},[1790],{"type":38,"value":1791},"d. The ledger.",{"type":29,"tag":151,"props":1793,"children":1794},{},[1795,1800,1805],{"type":29,"tag":155,"props":1796,"children":1797},{},[1798],{"type":38,"value":1799},"DataTable as Qpoint draws it: logos, pills, links in cells. The kit's DataTable underneath for plain virtualised ledgers.",{"type":29,"tag":155,"props":1801,"children":1802},{},[1803],{"type":38,"value":1804},"DataListingBar: quick filter and column picker on the kit's Popover and Checkbox.",{"type":29,"tag":155,"props":1806,"children":1807},{},[1808,1810,1816,1818,1824,1826,1832,1833,1839,1840,1846],{"type":38,"value":1809},"The basic expand row: a full-width well under the row. It cannot live in the kit's DataTable, which is a ",{"type":29,"tag":48,"props":1811,"children":1813},{"className":1812},[],[1814],{"type":38,"value":1815},"uniform_list",{"type":38,"value":1817}," with one fixed row height (",{"type":29,"tag":48,"props":1819,"children":1821},{"className":1820},[],[1822],{"type":38,"value":1823},"table\u002Fstate.rs:2856",{"type":38,"value":1825},"). It is built on GPUI's variable-height ",{"type":29,"tag":48,"props":1827,"children":1829},{"className":1828},[],[1830],{"type":38,"value":1831},"list",{"type":38,"value":1033},{"type":29,"tag":48,"props":1834,"children":1836},{"className":1835},[],[1837],{"type":38,"value":1838},"splice",{"type":38,"value":141},{"type":29,"tag":48,"props":1841,"children":1843},{"className":1842},[],[1844],{"type":38,"value":1845},"remeasure",{"type":38,"value":947},{"type":29,"tag":155,"props":1848,"children":1849},{},[1850,1855],{"type":29,"tag":34,"props":1851,"children":1852},{},[1853],{"type":38,"value":1854},"e. Surface.",{"type":38,"value":1856}," DataSurfaceSection and DataSurfacePanel, List view only (qmap stays a link, c130 D8).",{"type":29,"tag":155,"props":1858,"children":1859},{},[1860,1865],{"type":29,"tag":34,"props":1861,"children":1862},{},[1863],{"type":38,"value":1864},"f. The skill file.",{"type":29,"tag":151,"props":1866,"children":1867},{},[1868,1873,1878],{"type":29,"tag":155,"props":1869,"children":1870},{},[1871],{"type":38,"value":1872},"UxEditorFrame.",{"type":29,"tag":155,"props":1874,"children":1875},{},[1876],{"type":38,"value":1877},"UxFileTree, on the kit's Tree.",{"type":29,"tag":155,"props":1879,"children":1880},{},[1881],{"type":38,"value":1882},"UxCodeBlock, on the kit's TextView, or its Editor with syntect. The syntect choice is a binary-size cost to measure (R7).",{"type":29,"tag":286,"props":1884,"children":1886},{"id":1885},"_4-shell-and-router",[1887],{"type":38,"value":1888},"4. Shell and router",{"type":29,"tag":151,"props":1890,"children":1891},{},[1892,1897,1910,1923],{"type":29,"tag":155,"props":1893,"children":1894},{},[1895],{"type":38,"value":1896},"The sidebar: Inventory with its seven listings in nav order.",{"type":29,"tag":155,"props":1898,"children":1899},{},[1900,1902,1908],{"type":38,"value":1901},"A route enum with history (back and forward, ⌘",{"type":29,"tag":1903,"props":1904,"children":1905},"span",{},[1906],{"type":38,"value":1907}," and ⌘",{"type":38,"value":1909},"); breadcrumbs back to the landing.",{"type":29,"tag":155,"props":1911,"children":1912},{},[1913,1915,1921],{"type":38,"value":1914},"The ",{"type":29,"tag":48,"props":1916,"children":1918},{"className":1917},[],[1919],{"type":38,"value":1920},"when:",{"type":38,"value":1922}," pill: the crawled presets, defaulting to 30 days (c128's shared default).",{"type":29,"tag":155,"props":1924,"children":1925},{},[1926,1928,1934],{"type":38,"value":1927},"The footer names the source and the world (",{"type":29,"tag":48,"props":1929,"children":1931},{"className":1930},[],[1932],{"type":38,"value":1933},"data: synthetic · meridian-day90 · priya-x1",{"type":38,"value":947},{"type":29,"tag":286,"props":1936,"children":1938},{"id":1937},"_5-the-pages",[1939],{"type":38,"value":1940},"5. The pages",{"type":29,"tag":381,"props":1942,"children":1943},{},[1944,1949,1959,1964,1969,1974,1979,1984],{"type":29,"tag":155,"props":1945,"children":1946},{},[1947],{"type":38,"value":1948},"The landing.",{"type":29,"tag":155,"props":1950,"children":1951},{},[1952,1954],{"type":38,"value":1953},"Harnesses: the listing and the merged detail. ★ ",{"type":29,"tag":34,"props":1955,"children":1956},{},[1957],{"type":38,"value":1958},"Review stop 2: the first listing and detail, beside the web.",{"type":29,"tag":155,"props":1960,"children":1961},{},[1962],{"type":38,"value":1963},"Providers, with Account.",{"type":29,"tag":155,"props":1965,"children":1966},{},[1967],{"type":38,"value":1968},"Models.",{"type":29,"tag":155,"props":1970,"children":1971},{},[1972],{"type":38,"value":1973},"MCP Servers.",{"type":29,"tag":155,"props":1975,"children":1976},{},[1977],{"type":38,"value":1978},"Tools, with the expand row.",{"type":29,"tag":155,"props":1980,"children":1981},{},[1982],{"type":38,"value":1983},"Skills, with the definition editor and the expand row.",{"type":29,"tag":155,"props":1985,"children":1986},{},[1987],{"type":38,"value":1988},"Repos & Workspaces.",{"type":29,"tag":30,"props":1990,"children":1991},{},[1992],{"type":38,"value":1993},"Each page has stories for typical, minimal, empty and error, plus overflow on the ledgers once that world exists (R6).",{"type":29,"tag":286,"props":1995,"children":1997},{"id":1996},"_6-how-close-we-got",[1998],{"type":38,"value":1999},"6. How close we got ★",{"type":29,"tag":151,"props":2001,"children":2002},{},[2003,2034,2073],{"type":29,"tag":155,"props":2004,"children":2005},{},[2006,2011],{"type":29,"tag":34,"props":2007,"children":2008},{},[2009],{"type":38,"value":2010},"The scorecard, one row per component:",{"type":29,"tag":151,"props":2012,"children":2013},{},[2014,2019,2024,2029],{"type":29,"tag":155,"props":2015,"children":2016},{},[2017],{"type":38,"value":2018},"how it was built: kit as is · kit composed · drawn with GPUI primitives · not reached;",{"type":29,"tag":155,"props":2020,"children":2021},{},[2022],{"type":38,"value":2023},"fidelity from 0 to 3, side by side with its design-site demo;",{"type":29,"tag":155,"props":2025,"children":2026},{},[2027],{"type":38,"value":2028},"the HTML feature it lacked and what stood in for it;",{"type":29,"tag":155,"props":2030,"children":2031},{},[2032],{"type":38,"value":2033},"effort and lines of code.",{"type":29,"tag":155,"props":2035,"children":2036},{},[2037,2042,2044],{"type":29,"tag":34,"props":2038,"children":2039},{},[2040],{"type":38,"value":2041},"Per page:",{"type":38,"value":2043}," a side-by-side capture with the web page on the same one-host world.\n",{"type":29,"tag":151,"props":2045,"children":2046},{},[2047,2068],{"type":29,"tag":155,"props":2048,"children":2049},{},[2050,2052,2058,2060,2066],{"type":38,"value":2051},"For the capture run only, the ",{"type":29,"tag":48,"props":2053,"children":2055},{"className":2054},[],[2056],{"type":38,"value":2057},":7882",{"type":38,"value":2059}," seed is restarted on the one-host database, so the ",{"type":29,"tag":48,"props":2061,"children":2063},{"className":2062},[],[2064],{"type":38,"value":2065},":3030",{"type":38,"value":2067}," app shows the same rows without a second dev server. Then it is restored.",{"type":29,"tag":155,"props":2069,"children":2070},{},[2071],{"type":38,"value":2072},"The budget before and after, with strobe (R7): RSS, startup, binary size.",{"type":29,"tag":155,"props":2074,"children":2075},{},[2076,2077],{"type":38,"value":1627},{"type":29,"tag":34,"props":2078,"children":2079},{},[2080],{"type":38,"value":2081},"Review stop 3: the section, the scorecard, the budget.",{"type":29,"tag":106,"props":2083,"children":2085},{"id":2084},"stretch-the-tour-guide",[2086],{"type":38,"value":18},{"type":29,"tag":30,"props":2088,"children":2089},{},[2090],{"type":38,"value":2091},"The lab's tour leans on the DOM in three ways (survey):",{"type":29,"tag":151,"props":2093,"children":2094},{},[2095,2100,2105],{"type":29,"tag":155,"props":2096,"children":2097},{},[2098],{"type":38,"value":2099},"it finds any element by attribute and measures it every frame;",{"type":29,"tag":155,"props":2101,"children":2102},{},[2103],{"type":38,"value":2104},"it restyles the page from outside (fade, chrome dim, the docked padding);",{"type":29,"tag":155,"props":2106,"children":2107},{},[2108],{"type":38,"value":2109},"it places callouts with Floating UI.",{"type":29,"tag":30,"props":2111,"children":2112},{},[2113],{"type":38,"value":2114},"Native answers:",{"type":29,"tag":151,"props":2116,"children":2117},{},[2118,2136,2170,2188,2209,2227,2259,2372],{"type":29,"tag":155,"props":2119,"children":2120},{},[2121,2126,2128,2134],{"type":29,"tag":34,"props":2122,"children":2123},{},[2124],{"type":38,"value":2125},"Targets.",{"type":38,"value":2127}," A ",{"type":29,"tag":48,"props":2129,"children":2131},{"className":2130},[],[2132],{"type":38,"value":2133},".qp_id(\"harnesses.ledger\")",{"type":38,"value":2135}," extension on any element, with optional row keys, records the element's bounds into a per-window registry during prepaint. The overlay reads the previous frame's bounds and requests a redraw while a tour runs.",{"type":29,"tag":155,"props":2137,"children":2138},{},[2139,2144],{"type":29,"tag":34,"props":2140,"children":2141},{},[2142],{"type":38,"value":2143},"Focus.",{"type":29,"tag":151,"props":2145,"children":2146},{},[2147,2152,2157],{"type":29,"tag":155,"props":2148,"children":2149},{},[2150],{"type":38,"value":2151},"Ring: quads.",{"type":29,"tag":155,"props":2153,"children":2154},{},[2155],{"type":38,"value":2156},"Dim: an even-odd path with rounded holes.",{"type":29,"tag":155,"props":2158,"children":2159},{},[2160,2162,2168],{"type":38,"value":2161},"Fade: because every target goes through ",{"type":29,"tag":48,"props":2163,"children":2165},{"className":2164},[],[2166],{"type":38,"value":2167},".qp_id",{"type":38,"value":2169},", the helper applies the opacity itself. Restyling from outside becomes a context read.",{"type":29,"tag":155,"props":2171,"children":2172},{},[2173,2178,2180,2186],{"type":29,"tag":34,"props":2174,"children":2175},{},[2176],{"type":38,"value":2177},"The panel.",{"type":38,"value":2179}," Docked as a right column (the split layout is natural in a window), or floating, placed with ",{"type":29,"tag":48,"props":2181,"children":2183},{"className":2182},[],[2184],{"type":38,"value":2185},"anchored()",{"type":38,"value":2187}," plus our obstacle score.",{"type":29,"tag":155,"props":2189,"children":2190},{},[2191,2196],{"type":29,"tag":34,"props":2192,"children":2193},{},[2194],{"type":38,"value":2195},"Movement.",{"type":29,"tag":151,"props":2197,"children":2198},{},[2199,2204],{"type":29,"tag":155,"props":2200,"children":2201},{},[2202],{"type":38,"value":2203},"Steps cross pages through the router.",{"type":29,"tag":155,"props":2205,"children":2206},{},[2207],{"type":38,"value":2208},"Scroll-into-view uses the page's ScrollHandle with the lab's glide easing, cancelled by wheel input.",{"type":29,"tag":155,"props":2210,"children":2211},{},[2212,2217,2219,2225],{"type":29,"tag":34,"props":2213,"children":2214},{},[2215],{"type":38,"value":2216},"Tours as data.",{"type":38,"value":2218}," The c123 ",{"type":29,"tag":48,"props":2220,"children":2222},{"className":2221},[],[2223],{"type":38,"value":2224},"Tour",{"type":38,"value":2226}," type is mirrored in serde. One new tour over native Inventory (\"What's on this machine\"), plus the mechanics of one lab tour.",{"type":29,"tag":155,"props":2228,"children":2229},{},[2230,2235,2237,2243,2245,2251,2252,2258],{"type":29,"tag":34,"props":2231,"children":2232},{},[2233],{"type":38,"value":2234},"Info View, native first.",{"type":38,"value":2236}," A footer pane that explains whatever is under the pointer, keyed by ",{"type":29,"tag":48,"props":2238,"children":2240},{"className":2239},[],[2241],{"type":38,"value":2242},"qp_id",{"type":38,"value":2244},", with copy from ",{"type":29,"tag":48,"props":2246,"children":2248},{"className":2247},[],[2249],{"type":38,"value":2250},"app-map.ts",{"type":38,"value":917},{"type":29,"tag":48,"props":2253,"children":2255},{"className":2254},[],[2256],{"type":38,"value":2257},"guide-knowledge.ts",{"type":38,"value":104},{"type":29,"tag":155,"props":2260,"children":2261},{},[2262,2267,2269,2274,2276,2282,2283,2289,2290,2296,2297,2303,2304,2310,2311,2317,2318,2324,2325,2331,2332,2338,2339,2345,2347],{"type":29,"tag":34,"props":2263,"children":2264},{},[2265],{"type":38,"value":2266},"The MCP guide driving the native app",{"type":38,"value":2268}," (in scope, Mark 2026-11-10): the same ",{"type":29,"tag":48,"props":2270,"children":2272},{"className":2271},[],[2273],{"type":38,"value":354},{"type":38,"value":2275}," tools (",{"type":29,"tag":48,"props":2277,"children":2279},{"className":2278},[],[2280],{"type":38,"value":2281},"list-tours",{"type":38,"value":141},{"type":29,"tag":48,"props":2284,"children":2286},{"className":2285},[],[2287],{"type":38,"value":2288},"start-tour",{"type":38,"value":141},{"type":29,"tag":48,"props":2291,"children":2293},{"className":2292},[],[2294],{"type":38,"value":2295},"read-step",{"type":38,"value":141},{"type":29,"tag":48,"props":2298,"children":2300},{"className":2299},[],[2301],{"type":38,"value":2302},"find-in-app",{"type":38,"value":141},{"type":29,"tag":48,"props":2305,"children":2307},{"className":2306},[],[2308],{"type":38,"value":2309},"open-page",{"type":38,"value":141},{"type":29,"tag":48,"props":2312,"children":2314},{"className":2313},[],[2315],{"type":38,"value":2316},"point",{"type":38,"value":141},{"type":29,"tag":48,"props":2319,"children":2321},{"className":2320},[],[2322],{"type":38,"value":2323},"highlight",{"type":38,"value":141},{"type":29,"tag":48,"props":2326,"children":2328},{"className":2327},[],[2329],{"type":38,"value":2330},"read-page",{"type":38,"value":141},{"type":29,"tag":48,"props":2333,"children":2335},{"className":2334},[],[2336],{"type":38,"value":2337},"explain",{"type":38,"value":141},{"type":29,"tag":48,"props":2340,"children":2342},{"className":2341},[],[2343],{"type":38,"value":2344},"end-tour",{"type":38,"value":2346},"…).\n",{"type":29,"tag":151,"props":2348,"children":2349},{},[2350,2355,2367],{"type":29,"tag":155,"props":2351,"children":2352},{},[2353],{"type":38,"value":2354},"An in-process loopback server replaces the dev server's SSE relay.",{"type":29,"tag":155,"props":2356,"children":2357},{},[2358,2360,2366],{"type":38,"value":2359},"Each region supplies its own text, because there is no ",{"type":29,"tag":48,"props":2361,"children":2363},{"className":2362},[],[2364],{"type":38,"value":2365},"innerText",{"type":38,"value":104},{"type":29,"tag":155,"props":2368,"children":2369},{},[2370],{"type":38,"value":2371},"As on the web, no tool presses a button for the person.",{"type":29,"tag":155,"props":2373,"children":2374},{},[2375,2376],{"type":38,"value":1627},{"type":29,"tag":34,"props":2377,"children":2378},{},[2379],{"type":38,"value":2380},"Review stop.",{"type":29,"tag":106,"props":2382,"children":2384},{"id":2383},"extra-stretch-the-expand-row-at-full-fidelity",[2385],{"type":38,"value":19},{"type":29,"tag":30,"props":2387,"children":2388},{},[2389,2391,2397,2398,2404],{"type":38,"value":2390},"The basic well lands in step 3d. The full behaviour is the rest of what the layer's ",{"type":29,"tag":48,"props":2392,"children":2394},{"className":2393},[],[2395],{"type":38,"value":2396},"ExpandRow",{"type":38,"value":917},{"type":29,"tag":48,"props":2399,"children":2401},{"className":2400},[],[2402],{"type":38,"value":2403},"StretchBox",{"type":38,"value":2405}," do, plus what they don't:",{"type":29,"tag":151,"props":2407,"children":2408},{},[2409,2419,2440,2450,2458,2468,2478,2496],{"type":29,"tag":155,"props":2410,"children":2411},{},[2412,2417],{"type":29,"tag":34,"props":2413,"children":2414},{},[2415],{"type":38,"value":2416},"Columns sized to content across every row.",{"type":38,"value":2418}," HTML table layout, done by hand.",{"type":29,"tag":155,"props":2420,"children":2421},{},[2422,2427],{"type":29,"tag":34,"props":2423,"children":2424},{},[2425],{"type":38,"value":2426},"Animated height.",{"type":29,"tag":151,"props":2428,"children":2429},{},[2430,2435],{"type":29,"tag":155,"props":2431,"children":2432},{},[2433],{"type":38,"value":2434},"The well animates to its measured content height. A custom element replaces StretchBox's clone-and-measure.",{"type":29,"tag":155,"props":2436,"children":2437},{},[2438],{"type":38,"value":2439},"The height is re-tracked when nested rows open inside it.",{"type":29,"tag":155,"props":2441,"children":2442},{},[2443,2448],{"type":29,"tag":34,"props":2444,"children":2445},{},[2446],{"type":38,"value":2447},"Quiet nested rows",{"type":38,"value":2449},", as in Findings.",{"type":29,"tag":155,"props":2451,"children":2452},{},[2453],{"type":29,"tag":34,"props":2454,"children":2455},{},[2456],{"type":38,"value":2457},"The new-row flash.",{"type":29,"tag":155,"props":2459,"children":2460},{},[2461,2466],{"type":29,"tag":34,"props":2462,"children":2463},{},[2464],{"type":38,"value":2465},"A sticky header",{"type":38,"value":2467}," under the band.",{"type":29,"tag":155,"props":2469,"children":2470},{},[2471,2476],{"type":29,"tag":34,"props":2472,"children":2473},{},[2474],{"type":38,"value":2475},"Horizontal scroll",{"type":38,"value":2477}," only when the table is too wide.",{"type":29,"tag":155,"props":2479,"children":2480},{},[2481,2486,2488,2494],{"type":29,"tag":34,"props":2482,"children":2483},{},[2484],{"type":38,"value":2485},"Keyboard and accessibility.",{"type":38,"value":2487}," ↑ ↓ ⏎ Esc, and ",{"type":29,"tag":48,"props":2489,"children":2491},{"className":2490},[],[2492],{"type":38,"value":2493},"aria-expanded",{"type":38,"value":2495}," through AccessKit. The web has neither.",{"type":29,"tag":155,"props":2497,"children":2498},{},[2499,2500],{"type":38,"value":1627},{"type":29,"tag":34,"props":2501,"children":2502},{},[2503],{"type":38,"value":2380},{"type":29,"tag":106,"props":2505,"children":2507},{"id":2506},"correlation-with-work-in-motion",[2508],{"type":38,"value":20},{"type":29,"tag":492,"props":2510,"children":2511},{},[2512,2533],{"type":29,"tag":496,"props":2513,"children":2514},{},[2515],{"type":29,"tag":500,"props":2516,"children":2517},{},[2518,2523,2528],{"type":29,"tag":504,"props":2519,"children":2520},{},[2521],{"type":38,"value":2522},"Cycle",{"type":29,"tag":504,"props":2524,"children":2525},{},[2526],{"type":38,"value":2527},"In motion",{"type":29,"tag":504,"props":2529,"children":2530},{},[2531],{"type":38,"value":2532},"How this phase meets it",{"type":29,"tag":530,"props":2534,"children":2535},{},[2536,2570,2611,2640,2676,2697,2718,2739,2766,2787,2808,2829],{"type":29,"tag":500,"props":2537,"children":2538},{},[2539,2546,2558],{"type":29,"tag":537,"props":2540,"children":2541},{},[2542],{"type":29,"tag":34,"props":2543,"children":2544},{},[2545],{"type":38,"value":5},{"type":29,"tag":537,"props":2547,"children":2548},{},[2549,2551,2556],{"type":38,"value":2550},"stage 1; spike done; plan's Phase 1 skeleton, Phase 2 pages with Status first (D6); ",{"type":29,"tag":48,"props":2552,"children":2554},{"className":2553},[],[2555],{"type":38,"value":1255},{"type":38,"value":2557}," an outline",{"type":29,"tag":537,"props":2559,"children":2560},{},[2561,2563,2568],{"type":38,"value":2562},"This is Phase 2 for Inventory, with the Phase 1 parts it needs (types, repositories, stories, theme, shell). Inventory goes before Status (D6's order bent). ",{"type":29,"tag":48,"props":2564,"children":2566},{"className":2565},[],[2567],{"type":38,"value":1255},{"type":38,"value":2569}," is built for three worlds. The messages crate is not in this phase.",{"type":29,"tag":500,"props":2571,"children":2572},{},[2573,2581,2592],{"type":29,"tag":537,"props":2574,"children":2575},{},[2576],{"type":29,"tag":34,"props":2577,"children":2578},{},[2579],{"type":38,"value":2580},"c130",{"type":29,"tag":537,"props":2582,"children":2583},{},[2584,2590],{"type":29,"tag":48,"props":2585,"children":2587},{"className":2586},[],[2588],{"type":38,"value":2589},"shape.md",{"type":38,"value":2591}," (G1) unwritten; D5 tokens-only brand; Tyler's session (G2)",{"type":29,"tag":537,"props":2593,"children":2594},{},[2595,2597,2602,2604,2609],{"type":38,"value":2596},"Mark's word starts the phase ahead of ",{"type":29,"tag":48,"props":2598,"children":2600},{"className":2599},[],[2601],{"type":38,"value":2589},{"type":38,"value":2603},", as with the spike. The scorecard is evidence for ",{"type":29,"tag":48,"props":2605,"children":2607},{"className":2606},[],[2608],{"type":38,"value":2589},{"type":38,"value":2610}," and for D5.",{"type":29,"tag":500,"props":2612,"children":2613},{},[2614,2622,2627],{"type":29,"tag":537,"props":2615,"children":2616},{},[2617],{"type":29,"tag":34,"props":2618,"children":2619},{},[2620],{"type":38,"value":2621},"c132",{"type":29,"tag":537,"props":2623,"children":2624},{},[2625],{"type":38,"value":2626},"not kicked off; a bake-off of A (Vue native skin) against B (stories crate) on Inventory; the token bridge; a native capture mode",{"type":29,"tag":537,"props":2628,"children":2629},{},[2630,2632,2638],{"type":38,"value":2631},"This phase builds medium B on the bake-off's own page, the token bridge, and the native capture path. c132 keeps medium A, Mark's pick and ",{"type":29,"tag":48,"props":2633,"children":2635},{"className":2634},[],[2636],{"type":38,"value":2637},"process.md",{"type":38,"value":2639},". Nothing is built twice.",{"type":29,"tag":500,"props":2641,"children":2642},{},[2643,2651,2656],{"type":29,"tag":537,"props":2644,"children":2645},{},[2646],{"type":29,"tag":34,"props":2647,"children":2648},{},[2649],{"type":38,"value":2650},"c134",{"type":29,"tag":537,"props":2652,"children":2653},{},[2654],{"type":38,"value":2655},"Kamal prep: the endpoint scope missing (candidate row 31); the world as an artifact (§4.1)",{"type":29,"tag":537,"props":2657,"children":2658},{},[2659,2661,2666,2668,2674],{"type":38,"value":2660},"Row 31 confirmed: no Inventory handler takes ",{"type":29,"tag":48,"props":2662,"children":2664},{"className":2663},[],[2665],{"type":38,"value":899},{"type":38,"value":2667},"; add it to ",{"type":29,"tag":48,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":38,"value":2673},"inventory.md",{"type":38,"value":2675}," §6. The cut world is §4.1 made concrete for one host.",{"type":29,"tag":500,"props":2677,"children":2678},{},[2679,2687,2692],{"type":29,"tag":537,"props":2680,"children":2681},{},[2682],{"type":29,"tag":34,"props":2683,"children":2684},{},[2685],{"type":38,"value":2686},"c135",{"type":29,"tag":537,"props":2688,"children":2689},{},[2690],{"type":38,"value":2691},"the layer audit, not started",{"type":29,"tag":537,"props":2693,"children":2694},{},[2695],{"type":38,"value":2696},"The scorecard audits about 30 components from the outside; near cousins found while porting are logged for it.",{"type":29,"tag":500,"props":2698,"children":2699},{},[2700,2708,2713],{"type":29,"tag":537,"props":2701,"children":2702},{},[2703],{"type":29,"tag":34,"props":2704,"children":2705},{},[2706],{"type":38,"value":2707},"c125 · c123 · c127",{"type":29,"tag":537,"props":2709,"children":2710},{},[2711],{"type":38,"value":2712},"the tour layer in the lab; the MCP guide on the dev server; five tours",{"type":29,"tag":537,"props":2714,"children":2715},{},[2716],{"type":38,"value":2717},"The stretch ports the engine; tours as data mirror c123's type. Info View is built native first. c127 is untouched.",{"type":29,"tag":500,"props":2719,"children":2720},{},[2721,2729,2734],{"type":29,"tag":537,"props":2722,"children":2723},{},[2724],{"type":29,"tag":34,"props":2725,"children":2726},{},[2727],{"type":38,"value":2728},"c109 · c100",{"type":29,"tag":537,"props":2730,"children":2731},{},[2732],{"type":38,"value":2733},"the index of micros; the landings",{"type":29,"tag":537,"props":2735,"children":2736},{},[2737],{"type":38,"value":2738},"The native Inventory landing is c109's Inventory section.",{"type":29,"tag":500,"props":2740,"children":2741},{},[2742,2750,2755],{"type":29,"tag":537,"props":2743,"children":2744},{},[2745],{"type":29,"tag":34,"props":2746,"children":2747},{},[2748],{"type":38,"value":2749},"c128",{"type":29,"tag":537,"props":2751,"children":2752},{},[2753],{"type":38,"value":2754},"a shared 30-day default window",{"type":29,"tag":537,"props":2756,"children":2757},{},[2758,2759,2764],{"type":38,"value":1914},{"type":29,"tag":48,"props":2760,"children":2762},{"className":2761},[],[2763],{"type":38,"value":1920},{"type":38,"value":2765}," pill defaults to 30 days.",{"type":29,"tag":500,"props":2767,"children":2768},{},[2769,2777,2782],{"type":29,"tag":537,"props":2770,"children":2771},{},[2772],{"type":29,"tag":34,"props":2773,"children":2774},{},[2775],{"type":38,"value":2776},"c101",{"type":29,"tag":537,"props":2778,"children":2779},{},[2780],{"type":38,"value":2781},"the Surface as a qmap scene",{"type":29,"tag":537,"props":2783,"children":2784},{},[2785],{"type":38,"value":2786},"List view only (c130 D8).",{"type":29,"tag":500,"props":2788,"children":2789},{},[2790,2798,2803],{"type":29,"tag":537,"props":2791,"children":2792},{},[2793],{"type":29,"tag":34,"props":2794,"children":2795},{},[2796],{"type":38,"value":2797},"c113",{"type":29,"tag":537,"props":2799,"children":2800},{},[2801],{"type":38,"value":2802},"baked worlds",{"type":29,"tag":537,"props":2804,"children":2805},{},[2806],{"type":38,"value":2807},"The same crawl and the same world names.",{"type":29,"tag":500,"props":2809,"children":2810},{},[2811,2819,2824],{"type":29,"tag":537,"props":2812,"children":2813},{},[2814],{"type":29,"tag":34,"props":2815,"children":2816},{},[2817],{"type":38,"value":2818},"c136 · c137",{"type":29,"tag":537,"props":2820,"children":2821},{},[2822],{"type":38,"value":2823},"the grant line; the message bones",{"type":29,"tag":537,"props":2825,"children":2826},{},[2827],{"type":38,"value":2828},"Not in this phase. The shell leaves room for the inbox.",{"type":29,"tag":500,"props":2830,"children":2831},{},[2832,2840,2845],{"type":29,"tag":537,"props":2833,"children":2834},{},[2835],{"type":29,"tag":34,"props":2836,"children":2837},{},[2838],{"type":38,"value":2839},"c0",{"type":29,"tag":537,"props":2841,"children":2842},{},[2843],{"type":38,"value":2844},"the names",{"type":29,"tag":537,"props":2846,"children":2847},{},[2848,2849,2855],{"type":38,"value":1914},{"type":29,"tag":48,"props":2850,"children":2852},{"className":2851},[],[2853],{"type":38,"value":2854},"name",{"type":38,"value":2856}," constant only; no \"qnative\" in crate names or user-facing strings.",{"type":29,"tag":106,"props":2858,"children":2860},{"id":2859},"rulings-this-phase-bends",[2861],{"type":38,"value":21},{"type":29,"tag":151,"props":2863,"children":2864},{},[2865,2875,2892,2902],{"type":29,"tag":155,"props":2866,"children":2867},{},[2868,2873],{"type":29,"tag":34,"props":2869,"children":2870},{},[2871],{"type":38,"value":2872},"c131 D6 (page order):",{"type":38,"value":2874}," Inventory before Status.",{"type":29,"tag":155,"props":2876,"children":2877},{},[2878,2883,2885,2890],{"type":29,"tag":34,"props":2879,"children":2880},{},[2881],{"type":38,"value":2882},"c130 G1:",{"type":38,"value":2884}," starts before ",{"type":29,"tag":48,"props":2886,"children":2888},{"className":2887},[],[2889],{"type":38,"value":2589},{"type":38,"value":2891},", on Mark's word.",{"type":29,"tag":155,"props":2893,"children":2894},{},[2895,2900],{"type":29,"tag":34,"props":2896,"children":2897},{},[2898],{"type":38,"value":2899},"c130 D5 and c131 R8 (tokens-only brand; a kit component before a drawn one):",{"type":38,"value":2901}," the experiment builds our vocabulary on top of the kit, and draws where the kit has nothing (Mark, question 1). Both rulings hold for V1 until he rules on the scorecard.",{"type":29,"tag":155,"props":2903,"children":2904},{},[2905,2910],{"type":29,"tag":34,"props":2906,"children":2907},{},[2908],{"type":38,"value":2909},"c131 D2 (gpui-component; gpui-base only when a component is missing):",{"type":38,"value":2911}," reaching down to gpui-base or raw GPUI is allowed where a styled component fights the look. Every reach is logged in the scorecard.",{"type":29,"tag":106,"props":2913,"children":2915},{"id":2914},"decisions-defaults",[2916],{"type":38,"value":22},{"type":29,"tag":492,"props":2918,"children":2919},{},[2920,2941],{"type":29,"tag":496,"props":2921,"children":2922},{},[2923],{"type":29,"tag":500,"props":2924,"children":2925},{},[2926,2931,2936],{"type":29,"tag":504,"props":2927,"children":2928},{},[2929],{"type":38,"value":2930},"#",{"type":29,"tag":504,"props":2932,"children":2933},{},[2934],{"type":38,"value":2935},"Question",{"type":29,"tag":504,"props":2937,"children":2938},{},[2939],{"type":38,"value":2940},"Default",{"type":29,"tag":530,"props":2942,"children":2943},{},[2944,2967,2999,3033,3056,3073,3091,3123,3141,3165],{"type":29,"tag":500,"props":2945,"children":2946},{},[2947,2952,2957],{"type":29,"tag":537,"props":2948,"children":2949},{},[2950],{"type":38,"value":2951},"P1",{"type":29,"tag":537,"props":2953,"children":2954},{},[2955],{"type":38,"value":2956},"Where it runs",{"type":29,"tag":537,"props":2958,"children":2959},{},[2960,2965],{"type":29,"tag":48,"props":2961,"children":2963},{"className":2962},[],[2964],{"type":38,"value":74},{"type":38,"value":2966}," c2; recorded here as c131 Phase 2.",{"type":29,"tag":500,"props":2968,"children":2969},{},[2970,2975,2980],{"type":29,"tag":537,"props":2971,"children":2972},{},[2973],{"type":38,"value":2974},"P2",{"type":29,"tag":537,"props":2976,"children":2977},{},[2978],{"type":38,"value":2979},"The data",{"type":29,"tag":537,"props":2981,"children":2982},{},[2983,2985,2990,2992,2997],{"type":38,"value":2984},"The one-host cut of the Meridian streams through the real ingest and handlers; ",{"type":29,"tag":48,"props":2986,"children":2988},{"className":2987},[],[2989],{"type":38,"value":1377},{"type":38,"value":2991}," = priya-x1 by default (",{"type":29,"tag":48,"props":2993,"children":2995},{"className":2994},[],[2996],{"type":38,"value":1255},{"type":38,"value":2998}," Q1).",{"type":29,"tag":500,"props":3000,"children":3001},{},[3002,3007,3012],{"type":29,"tag":537,"props":3003,"children":3004},{},[3005],{"type":38,"value":3006},"P3",{"type":29,"tag":537,"props":3008,"children":3009},{},[3010],{"type":38,"value":3011},"Theme source",{"type":29,"tag":537,"props":3013,"children":3014},{},[3015,3017,3023,3025,3031],{"type":38,"value":3016},"The layer's ",{"type":29,"tag":48,"props":3018,"children":3020},{"className":3019},[],[3021],{"type":38,"value":3022},"tokens.json",{"type":38,"value":3024}," through a generator in design ",{"type":29,"tag":48,"props":3026,"children":3028},{"className":3027},[],[3029],{"type":38,"value":3030},"scripts\u002F",{"type":38,"value":3032},"; the kit theme is never hand-edited.",{"type":29,"tag":500,"props":3034,"children":3035},{},[3036,3041,3046],{"type":29,"tag":537,"props":3037,"children":3038},{},[3039],{"type":38,"value":3040},"P4",{"type":29,"tag":537,"props":3042,"children":3043},{},[3044],{"type":38,"value":3045},"The Rust layer",{"type":29,"tag":537,"props":3047,"children":3048},{},[3049,3054],{"type":29,"tag":48,"props":3050,"children":3052},{"className":3051},[],[3053],{"type":38,"value":1100},{"type":38,"value":3055},", with the web components' names.",{"type":29,"tag":500,"props":3057,"children":3058},{},[3059,3064,3068],{"type":29,"tag":537,"props":3060,"children":3061},{},[3062],{"type":38,"value":3063},"P5",{"type":29,"tag":537,"props":3065,"children":3066},{},[3067],{"type":38,"value":15},{"type":29,"tag":537,"props":3069,"children":3070},{},[3071],{"type":38,"value":3072},"The six rules; Harness detail merges with Harness install detail.",{"type":29,"tag":500,"props":3074,"children":3075},{},[3076,3081,3086],{"type":29,"tag":537,"props":3077,"children":3078},{},[3079],{"type":38,"value":3080},"P6",{"type":29,"tag":537,"props":3082,"children":3083},{},[3084],{"type":38,"value":3085},"The window",{"type":29,"tag":537,"props":3087,"children":3088},{},[3089],{"type":38,"value":3090},"The crawled presets; 30 days by default.",{"type":29,"tag":500,"props":3092,"children":3093},{},[3094,3099,3104],{"type":29,"tag":537,"props":3095,"children":3096},{},[3097],{"type":38,"value":3098},"P7",{"type":29,"tag":537,"props":3100,"children":3101},{},[3102],{"type":38,"value":3103},"Captures",{"type":29,"tag":537,"props":3105,"children":3106},{},[3107,3109,3115,3117,3122],{"type":38,"value":3108},"Headless, through ",{"type":29,"tag":48,"props":3110,"children":3112},{"className":3111},[],[3113],{"type":38,"value":3114},"VisualTestAppContext",{"type":38,"value":3116},"; in the atlas with ",{"type":29,"tag":48,"props":3118,"children":3120},{"className":3119},[],[3121],{"type":38,"value":1620},{"type":38,"value":104},{"type":29,"tag":500,"props":3124,"children":3125},{},[3126,3131,3136],{"type":29,"tag":537,"props":3127,"children":3128},{},[3129],{"type":38,"value":3130},"P8",{"type":29,"tag":537,"props":3132,"children":3133},{},[3134],{"type":38,"value":3135},"Review",{"type":29,"tag":537,"props":3137,"children":3138},{},[3139],{"type":38,"value":3140},"Three stops in the core, one after each stretch.",{"type":29,"tag":500,"props":3142,"children":3143},{},[3144,3149,3154],{"type":29,"tag":537,"props":3145,"children":3146},{},[3147],{"type":38,"value":3148},"P9",{"type":29,"tag":537,"props":3150,"children":3151},{},[3152],{"type":38,"value":3153},"The kit",{"type":29,"tag":537,"props":3155,"children":3156},{},[3157,3163],{"type":29,"tag":48,"props":3158,"children":3160},{"className":3159},[],[3161],{"type":38,"value":3162},"=0.9.1",{"type":38,"value":3164}," for the phase.",{"type":29,"tag":500,"props":3166,"children":3167},{},[3168,3173,3178],{"type":29,"tag":537,"props":3169,"children":3170},{},[3171],{"type":38,"value":3172},"P10",{"type":29,"tag":537,"props":3174,"children":3175},{},[3176],{"type":38,"value":3177},"Commits",{"type":29,"tag":537,"props":3179,"children":3180},{},[3181],{"type":38,"value":3182},"In qnative per step, at each review stop on Mark's word (qnative has no remote; CLAUDE.md: commit only when asked).",{"type":29,"tag":106,"props":3184,"children":3186},{"id":3185},"questions-answered-by-mark-2026-11-10",[3187],{"type":38,"value":23},{"type":29,"tag":381,"props":3189,"children":3190},{},[3191,3213,3229,3252],{"type":29,"tag":155,"props":3192,"children":3193},{},[3194,3199,3200,3205,3206,3211],{"type":29,"tag":34,"props":3195,"children":3196},{},[3197],{"type":38,"value":3198},"How deep does the Qpoint skin go?",{"type":38,"value":41},{"type":29,"tag":117,"props":3201,"children":3202},{},[3203],{"type":38,"value":3204},"Our layer in Rust.",{"type":38,"value":41},{"type":29,"tag":48,"props":3207,"children":3209},{"className":3208},[],[3210],{"type":38,"value":1100},{"type":38,"value":3212}," carries our component names on top of the kit and draws where the kit has nothing. c130 D5 and c131 R8 still hold for V1 until Mark rules on the scorecard. The phase is the evidence for that ruling.",{"type":29,"tag":155,"props":3214,"children":3215},{},[3216,3221,3222,3227],{"type":29,"tag":34,"props":3217,"children":3218},{},[3219],{"type":38,"value":3220},"Fleet → personal?",{"type":38,"value":41},{"type":29,"tag":117,"props":3223,"children":3224},{},[3225],{"type":38,"value":3226},"Translate.",{"type":38,"value":3228}," The six rules apply, and Harness detail merges with Harness install detail (P5).",{"type":29,"tag":155,"props":3230,"children":3231},{},[3232,3237,3238,3243,3245,3250],{"type":29,"tag":34,"props":3233,"children":3234},{},[3235],{"type":38,"value":3236},"The Tour stretch?",{"type":38,"value":41},{"type":29,"tag":117,"props":3239,"children":3240},{},[3241],{"type":38,"value":3242},"The engine, a new Inventory tour, Info View, and the MCP guide.",{"type":38,"value":3244}," The ",{"type":29,"tag":48,"props":3246,"children":3248},{"className":3247},[],[3249],{"type":38,"value":354},{"type":38,"value":3251}," MCP driving the native app over an in-process loopback server is in scope, not optional (see the stretch).",{"type":29,"tag":155,"props":3253,"children":3254},{},[3255,3260,3261,3266],{"type":29,"tag":34,"props":3256,"children":3257},{},[3258],{"type":38,"value":3259},"Review?",{"type":38,"value":41},{"type":29,"tag":117,"props":3262,"children":3263},{},[3264],{"type":38,"value":3265},"Three stops in the core",{"type":38,"value":3267}," (the skin, Harnesses, the section with the scorecard), plus one after each stretch (P8).",{"type":29,"tag":106,"props":3269,"children":3271},{"id":3270},"risks",[3272],{"type":38,"value":24},{"type":29,"tag":151,"props":3274,"children":3275},{},[3276,3286,3296,3306,3329],{"type":29,"tag":155,"props":3277,"children":3278},{},[3279,3284],{"type":29,"tag":34,"props":3280,"children":3281},{},[3282],{"type":38,"value":3283},"The HTML-shaped parts eat the phase:",{"type":38,"value":3285}," subgrid, table layout, sticky, animated height. Each is timeboxed (half a day) and logged as \"not reached\" rather than chased.",{"type":29,"tag":155,"props":3287,"children":3288},{},[3289,3294],{"type":29,"tag":34,"props":3290,"children":3291},{},[3292],{"type":38,"value":3293},"Kit churn:",{"type":38,"value":3295}," a release a week. The pin holds; a migration hour is expected at the phase's end.",{"type":29,"tag":155,"props":3297,"children":3298},{},[3299,3304],{"type":29,"tag":34,"props":3300,"children":3301},{},[3302],{"type":38,"value":3303},"The budget:",{"type":38,"value":3305}," images, syntect and the theme grow the binary. Measured before and after (R7).",{"type":29,"tag":155,"props":3307,"children":3308},{},[3309,3327],{"type":29,"tag":34,"props":3310,"children":3311},{},[3312,3314,3319,3321,3326],{"type":38,"value":3313},"Swapping ",{"type":29,"tag":48,"props":3315,"children":3317},{"className":3316},[],[3318],{"type":38,"value":2057},{"type":38,"value":3320}," for captures interrupts other sessions on ",{"type":29,"tag":48,"props":3322,"children":3324},{"className":3323},[],[3325],{"type":38,"value":2065},{"type":38,"value":104},{"type":38,"value":3328}," The swap is announced and kept short.",{"type":29,"tag":155,"props":3330,"children":3331},{},[3332,3337,3339,3345],{"type":29,"tag":34,"props":3333,"children":3334},{},[3335],{"type":38,"value":3336},"Accessibility:",{"type":38,"value":3338}," drawn elements need AccessKit names (the spike's ",{"type":29,"tag":48,"props":3340,"children":3342},{"className":3341},[],[3343],{"type":38,"value":3344},"cell_label",{"type":38,"value":3346}," pattern), or the headless tests can't find them.",1794599386750]