[{"data":1,"prerenderedAt":755},["ShallowReactive",2],{"cycle-doc-design-c132-review.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":17},{"id":5,"title":6},"c132","Native Design Prototyping",{"id":8,"label":9},"design","Design","review.md","c132 review stop: the bake-off on Inventory (Phase 1, 2026-11-11)",[13,14,15,16],"What was built","The figures","What the evidence suggests","Open for you — answered 2026-11-11 (evening)",{"type":18,"children":19},"root",[20,65,71,326,331,586,591,658,663,668],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25,32,34,39,41,46,48,55,57,63],{"type":21,"tag":26,"props":27,"children":28},"strong",{},[29],{"type":30,"value":31},"text","Reader:",{"type":30,"value":33}," Mark. ",{"type":21,"tag":26,"props":35,"children":36},{},[37],{"type":30,"value":38},"The decision:",{"type":30,"value":40}," the medium for native screens (Phase 2, D1). ",{"type":21,"tag":26,"props":42,"children":43},{},[44],{"type":30,"value":45},"What to look at:",{"type":30,"value":47}," ",{"type":21,"tag":49,"props":50,"children":52},"a",{"href":51},"\u002Fpages\u002Fnative\u002Fbake-off",[53],{"type":30,"value":54},"the bake-off page",{"type":30,"value":56}," (A beside B, wipe them), ",{"type":21,"tag":49,"props":58,"children":60},{"href":59},"\u002Fpages\u002Fnative",[61],{"type":30,"value":62},"the mocks live",{"type":30,"value":64}," in each world, and the figures below. Phase 2 is your pick, not the evidence's; this note says what the evidence suggests and why.",{"type":21,"tag":66,"props":67,"children":69},"h2",{"id":68},"what-was-built",[70],{"type":30,"value":13},{"type":21,"tag":72,"props":73,"children":74},"ul",{},[75,150,246,264],{"type":21,"tag":76,"props":77,"children":78},"li",{},[79,84,85,92,94,100,102,108,110,116,118,124,126,132,134,140,142,148],{"type":21,"tag":26,"props":80,"children":81},{},[82],{"type":30,"value":83},"Phase 0.",{"type":30,"value":47},{"type":21,"tag":86,"props":87,"children":89},"code",{"className":88},[],[90],{"type":30,"value":91},"app\u002Fcomposables\u002FuseNativeWorld.ts",{"type":30,"value":93},": ",{"type":21,"tag":86,"props":95,"children":97},{"className":96},[],[98],{"type":30,"value":99},"useNativeWorld(name)",{"type":30,"value":101}," loads ",{"type":21,"tag":86,"props":103,"children":105},{"className":104},[],[106],{"type":30,"value":107},"app\u002Fdata\u002Fworlds\u002F\u003Cname>.json",{"type":30,"value":109}," (one dynamic import per world, so only the named world is bundled; loaded on the client, so the server renders the loading state and the payload carries no rows) and exposes the manifest and ",{"type":21,"tag":86,"props":111,"children":113},{"className":112},[],[114],{"type":30,"value":115},"get(route, params?)",{"type":30,"value":117},", which builds the nozzle's key (",{"type":21,"tag":86,"props":119,"children":121},{"className":120},[],[122],{"type":30,"value":123},"route?sorted-query",{"type":30,"value":125},"; ",{"type":21,"tag":86,"props":127,"children":129},{"className":128},[],[130],{"type":30,"value":131},"period=all",{"type":30,"value":133}," dropped; ",{"type":21,"tag":86,"props":135,"children":137},{"className":136},[],[138],{"type":30,"value":139},"quote_plus",{"type":30,"value":141}," encoding) from ",{"type":21,"tag":86,"props":143,"children":145},{"className":144},[],[146],{"type":30,"value":147},"types::Request::key",{"type":30,"value":149},". The plan's Phase 0 records what each medium needs installed and the bake-off page (Inventory, ruled).",{"type":21,"tag":76,"props":151,"children":152},{},[153,158,160,166,168,174,176,182,184,190,192,198,200,206,207,213,214,220,222,228,230,236,238,244],{"type":21,"tag":26,"props":154,"children":155},{},[156],{"type":30,"value":157},"Phase 1, medium A.",{"type":30,"value":159}," Three Inventory views in a native skin: the landing (twenty micros), Harnesses (band and ledger, fleet → personal as c2 did) and the merged harness page (header, tiles, Sessions, Configured here, Surface), each in ",{"type":21,"tag":86,"props":161,"children":163},{"className":162},[],[164],{"type":30,"value":165},"fresh",{"type":30,"value":167},", ",{"type":21,"tag":86,"props":169,"children":171},{"className":170},[],[172],{"type":30,"value":173},"minimal",{"type":30,"value":175}," and ",{"type":21,"tag":86,"props":177,"children":179},{"className":178},[],[180],{"type":30,"value":181},"meridian-day90",{"type":30,"value":183},", rows only from ",{"type":21,"tag":86,"props":185,"children":187},{"className":186},[],[188],{"type":30,"value":189},"useNativeWorld",{"type":30,"value":191},". The skin is the kit's chrome in our tokens and Inter (",{"type":21,"tag":86,"props":193,"children":195},{"className":194},[],[196],{"type":30,"value":197},"app\u002Fcomponents\u002Fnative\u002F",{"type":30,"value":199},": Window, PageHeader, Period, LabBar, Skeleton, Icon); the pages compose the layer (DataIndexSection, DataMachineMicro, DataMachine, DataRankedBars, DataSegmentBar, DataTable, DataListingBar, ActorHeader, NavJumpPills, DataSurfaceSection, UxPill, AgentAvatar). The rollups are ported from ",{"type":21,"tag":86,"props":201,"children":203},{"className":202},[],[204],{"type":30,"value":205},"landing.rs",{"type":30,"value":167},{"type":21,"tag":86,"props":208,"children":210},{"className":209},[],[211],{"type":30,"value":212},"harnesses.rs",{"type":30,"value":175},{"type":21,"tag":86,"props":215,"children":217},{"className":216},[],[218],{"type":30,"value":219},"harness.rs",{"type":30,"value":221}," (",{"type":21,"tag":86,"props":223,"children":225},{"className":224},[],[226],{"type":30,"value":227},"app\u002Fdata\u002Fnative-inventory.ts",{"type":30,"value":229},"). Registered as the ",{"type":21,"tag":86,"props":231,"children":233},{"className":232},[],[234],{"type":30,"value":235},"native",{"type":30,"value":237}," phase of ",{"type":21,"tag":86,"props":239,"children":241},{"className":240},[],[242],{"type":30,"value":243},"\u002Fpages",{"type":30,"value":245},".",{"type":21,"tag":76,"props":247,"children":248},{},[249,254,256,262],{"type":21,"tag":26,"props":250,"children":251},{},[252],{"type":30,"value":253},"Medium B",{"type":30,"value":255}," is c2's: the real app on GPUI, captured off-screen on priya-x1 (thread ",{"type":21,"tag":86,"props":257,"children":259},{"className":258},[],[260],{"type":30,"value":261},"p2-harnesses",{"type":30,"value":263},"). Not built here.",{"type":21,"tag":76,"props":265,"children":266},{},[267,272,273,278,280,286,288,294,296,302,303,309,310,316,318,324],{"type":21,"tag":26,"props":268,"children":269},{},[270],{"type":30,"value":271},"The bake-off page",{"type":30,"value":47},{"type":21,"tag":86,"props":274,"children":276},{"className":275},[],[277],{"type":30,"value":51},{"type":30,"value":279},": A beside B per view and state (",{"type":21,"tag":86,"props":281,"children":283},{"className":282},[],[284],{"type":30,"value":285},"UxImageCompare",{"type":30,"value":287},": wipe, onion, side by side), the time and friction per medium, and this note's short form. Eleven A captures in the atlas (thread ",{"type":21,"tag":86,"props":289,"children":291},{"className":290},[],[292],{"type":30,"value":293},"p1-bake-off-a",{"type":30,"value":295},", subjects ",{"type":21,"tag":86,"props":297,"children":299},{"className":298},[],[300],{"type":30,"value":301},"page\u002Fnative-inventory",{"type":30,"value":167},{"type":21,"tag":86,"props":304,"children":306},{"className":305},[],[307],{"type":30,"value":308},"page\u002Fnative-harnesses",{"type":30,"value":167},{"type":21,"tag":86,"props":311,"children":313},{"className":312},[],[314],{"type":30,"value":315},"page\u002Fnative-harness",{"type":30,"value":317},", variant ",{"type":21,"tag":86,"props":319,"children":321},{"className":320},[],[322],{"type":30,"value":323},"world=\u003Cname>",{"type":30,"value":325},"), cropped to the window B was photographed at (1120 × 720 points).",{"type":21,"tag":66,"props":327,"children":329},{"id":328},"the-figures",[330],{"type":30,"value":14},{"type":21,"tag":332,"props":333,"children":334},"table",{},[335,357],{"type":21,"tag":336,"props":337,"children":338},"thead",{},[339],{"type":21,"tag":340,"props":341,"children":342},"tr",{},[343,347,352],{"type":21,"tag":344,"props":345,"children":346},"th",{},[],{"type":21,"tag":344,"props":348,"children":349},{},[350],{"type":30,"value":351},"A · Vue mocks in a native skin",{"type":21,"tag":344,"props":353,"children":354},{},[355],{"type":30,"value":356},"B · the stories crate",{"type":21,"tag":358,"props":359,"children":360},"tbody",{},[361,396,414,432,471,550,568],{"type":21,"tag":340,"props":362,"children":363},{},[364,370,391],{"type":21,"tag":365,"props":366,"children":367},"td",{},[368],{"type":30,"value":369},"The three views in three states",{"type":21,"tag":365,"props":371,"children":372},{},[373,375,381,383,389],{"type":30,"value":374},"12 min of wall clock to the three views answering on ",{"type":21,"tag":86,"props":376,"children":378},{"className":377},[],[379],{"type":30,"value":380},":3000",{"type":30,"value":382}," in all three worlds (09:14 → 09:26); about 40 min to the captured, cropped and verified bake-off page (",{"type":21,"tag":49,"props":384,"children":386},{"href":385},"\u002Fcycles\u002Fdesign\u002Fc132\u002Fdoc\u002Fbake-off-log",[387],{"type":30,"value":388},"the log",{"type":30,"value":390},"). One agent, no build loop.",{"type":21,"tag":365,"props":392,"children":393},{},[394],{"type":30,"value":395},"About 60 min between 17:52 and 18:52 on 2026-11-10 (c2's commits), which also built the layer in Rust the views stand on. One agent, 2–5 s incremental builds.",{"type":21,"tag":340,"props":397,"children":398},{},[399,404,409],{"type":21,"tag":365,"props":400,"children":401},{},[402],{"type":30,"value":403},"The groundwork",{"type":21,"tag":365,"props":405,"children":406},{},[407],{"type":30,"value":408},"The layer (the web app's), the worlds (Phase 0 prep), the capture system, the design site. New: one composable, six small components, one rollup file.",{"type":21,"tag":365,"props":410,"children":411},{},[412],{"type":30,"value":413},"The world cut, 72 generated types with a strict drift test, the nozzle and repositories, the token bridge and theme, the layer crate, the stories crate and off-screen capture, the Dev section and component docs: c2's kick-off to 17:52 the same day.",{"type":21,"tag":340,"props":415,"children":416},{},[417,422,427],{"type":21,"tag":365,"props":418,"children":419},{},[420],{"type":30,"value":421},"The rest of the section",{"type":21,"tag":365,"props":423,"children":424},{},[425],{"type":30,"value":426},"Not built; the other rail items are inert.",{"type":21,"tag":365,"props":428,"children":429},{},[430],{"type":30,"value":431},"1 h 43 (18:52 → 20:35): six listings and seven details to specs measured on qdash, the expand row, the skill editor.",{"type":21,"tag":340,"props":433,"children":434},{},[435,440,445],{"type":21,"tag":365,"props":436,"children":437},{},[438],{"type":30,"value":439},"States photographed",{"type":21,"tag":365,"props":441,"children":442},{},[443],{"type":30,"value":444},"3 worlds × 3 views, plus Sessions and Surface landed: 11.",{"type":21,"tag":365,"props":446,"children":447},{},[448,450,455,456,461,463,469],{"type":30,"value":449},"1 world × 3 views, plus Sessions, Configured here and Surface, two in dark: 9. ",{"type":21,"tag":86,"props":451,"children":453},{"className":452},[],[454],{"type":30,"value":173},{"type":30,"value":175},{"type":21,"tag":86,"props":457,"children":459},{"className":458},[],[460],{"type":30,"value":165},{"type":30,"value":462}," exist in the app (",{"type":21,"tag":86,"props":464,"children":466},{"className":465},[],[467],{"type":30,"value":468},"--world",{"type":30,"value":470},") and are unphotographed.",{"type":21,"tag":340,"props":472,"children":473},{},[474,479,537],{"type":21,"tag":365,"props":475,"children":476},{},[477],{"type":30,"value":478},"Friction",{"type":21,"tag":365,"props":480,"children":481},{},[482,488,490,496,498,504,506,512,514,520,522,528,529,535],{"type":21,"tag":86,"props":483,"children":485},{"className":484},[],[486],{"type":30,"value":487},"DataTable",{"type":30,"value":489}," sorts by column label; ",{"type":21,"tag":86,"props":491,"children":493},{"className":492},[],[494],{"type":30,"value":495},"NavJumpPills",{"type":30,"value":497}," spies on ",{"type":21,"tag":86,"props":499,"children":501},{"className":500},[],[502],{"type":30,"value":503},"window.scrollY",{"type":30,"value":505},", so inside the window's scroll box the highlight does not follow; no Lucide glyphs in the layer (hand-drawn); the capture is a 1× viewport shot cropped with PIL (",{"type":21,"tag":86,"props":507,"children":509},{"className":508},[],[510],{"type":30,"value":511},"capture.mts",{"type":30,"value":513}," has no scale or clip flag); the program's ",{"type":21,"tag":86,"props":515,"children":517},{"className":516},[],[518],{"type":30,"value":519},"hideCss",{"type":30,"value":521}," hid the rail until it became an ",{"type":21,"tag":86,"props":523,"children":525},{"className":524},[],[526],{"type":30,"value":527},"aside",{"type":30,"value":125},{"type":21,"tag":86,"props":530,"children":532},{"className":531},[],[533],{"type":30,"value":534},"ActorHeader",{"type":30,"value":536},"'s metadata cell wraps under the identity at 844 px where B keeps three cells in a row.",{"type":21,"tag":365,"props":538,"children":539},{},[540,542,548],{"type":30,"value":541},"From c2's record: subgrid → one flex row per grid row; ",{"type":21,"tag":86,"props":543,"children":545},{"className":544},[],[546],{"type":30,"value":547},"fit-content(45%)",{"type":30,"value":549}," → two flex columns; auto-fill reads a width probe one frame late; the kit's table has one fixed row height (the expand row on GPUI's list); child bounds recorded before the scroll offset; variable Inter drew every weight regular (five static faces bundled); a story must fit about 900 points; seven contract overrides.",{"type":21,"tag":340,"props":551,"children":552},{},[553,558,563],{"type":21,"tag":365,"props":554,"children":555},{},[556],{"type":30,"value":557},"Who can mock",{"type":21,"tag":365,"props":559,"children":560},{},[561],{"type":30,"value":562},"A person with a browser, or an agent. Every lab tool works unchanged.",{"type":21,"tag":365,"props":564,"children":565},{},[566],{"type":30,"value":567},"An agent with Rust 1.95+ and the workspace. A person reviews a binary or PNGs; a person mocking in Rust is untested.",{"type":21,"tag":340,"props":569,"children":570},{},[571,576,581],{"type":21,"tag":365,"props":572,"children":573},{},[574],{"type":30,"value":575},"Fidelity and drift",{"type":21,"tag":365,"props":577,"children":578},{},[579],{"type":30,"value":580},"The layer's real components, the kit's chrome imitated: it can draw what the kit cannot and cannot show what the kit does differently.",{"type":21,"tag":365,"props":582,"children":583},{},[584],{"type":30,"value":585},"The real thing; 28 of 36 components at fidelity 3 on the scorecard.",{"type":21,"tag":66,"props":587,"children":589},{"id":588},"what-the-evidence-suggests",[590],{"type":30,"value":15},{"type":21,"tag":592,"props":593,"children":594},"ol",{},[595,605,615,625],{"type":21,"tag":76,"props":596,"children":597},{},[598,603],{"type":21,"tag":26,"props":599,"children":600},{},[601],{"type":30,"value":602},"B is the medium of record for a native screen.",{"type":30,"value":604}," It is the real thing, its stories are the page's tests (R6), its captures are solved (2×, off-screen, light and dark), and once the layer in Rust existed the three views took an agent an hour. Nothing A draws ships; everything B draws does.",{"type":21,"tag":76,"props":606,"children":607},{},[608,613],{"type":21,"tag":26,"props":609,"children":610},{},[611],{"type":30,"value":612},"A is the ideation and review medium",{"type":30,"value":614},", for a person without a toolchain and for an agent sketching before committing to Rust: twelve minutes to three views in three worlds, every lab tool working unchanged. Its rule is D6: an A mock names its world, so the B story that follows is checked against it row for row. The wipe on the bake-off page is that check.",{"type":21,"tag":76,"props":616,"children":617},{},[618,623],{"type":21,"tag":26,"props":619,"children":620},{},[621],{"type":30,"value":622},"The shared world is the seam, with the token bridge.",{"type":30,"value":624}," The bridge keeps the two drawings one colour; the world keeps them one truth. Where both captures exist, the rows agree to the digit (the three meridian-day90 pairs).",{"type":21,"tag":76,"props":626,"children":627},{},[628,633,635,641,643,649,651,656],{"type":21,"tag":26,"props":629,"children":630},{},[631],{"type":30,"value":632},"Phase 3 should give B its per-world captures first",{"type":30,"value":634}," (the native capture mode, D3): every story per world into the atlas with ",{"type":21,"tag":86,"props":636,"children":638},{"className":637},[],[639],{"type":30,"value":640},"surface: native",{"type":30,"value":642},", so B's side of a comparison never has the six holes the page shows today. A's side needs a ",{"type":21,"tag":86,"props":644,"children":646},{"className":645},[],[647],{"type":30,"value":648},"--clip",{"type":30,"value":650}," (or a scale) flag on ",{"type":21,"tag":86,"props":652,"children":654},{"className":653},[],[655],{"type":30,"value":511},{"type":30,"value":657}," so the window is captured as the window.",{"type":21,"tag":22,"props":659,"children":660},{},[661],{"type":30,"value":662},"This is the plan's default (D1: B, with A for ideation) confirmed by evidence rather than overturned; the one amendment is that A is not \"ideation only\" but the review medium for people, with D6 making it honest.",{"type":21,"tag":66,"props":664,"children":666},{"id":665},"open-for-you-answered-2026-11-11-evening",[667],{"type":30,"value":16},{"type":21,"tag":72,"props":669,"children":670},{},[671,688,711,727],{"type":21,"tag":76,"props":672,"children":673},{},[674,680,681,686],{"type":21,"tag":675,"props":676,"children":677},"del",{},[678],{"type":30,"value":679},"The pick (Phase 2)",{"type":30,"value":47},{"type":21,"tag":26,"props":682,"children":683},{},[684],{"type":30,"value":685},"Ruled: B of record, A to sketch and to review",{"type":30,"value":687}," (D1), with D6 holding and the amendment standing: A is the review medium for people, not ideation only.",{"type":21,"tag":76,"props":689,"children":690},{},[691,696,697,702,704,709],{"type":21,"tag":675,"props":692,"children":693},{},[694],{"type":30,"value":695},"The chrome",{"type":30,"value":47},{"type":21,"tag":26,"props":698,"children":699},{},[700],{"type":30,"value":701},"Ruled: keep the imitation",{"type":30,"value":703}," in ",{"type":21,"tag":86,"props":705,"children":707},{"className":706},[],[708],{"type":30,"value":197},{"type":30,"value":710},", re-checked at each review stop by a wipe against a real shell capture; no Vue port of the kit's Shell, no compositing into shell PNGs (D7).",{"type":21,"tag":76,"props":712,"children":713},{},[714,719,720,725],{"type":21,"tag":675,"props":715,"children":716},{},[717],{"type":30,"value":718},"Mock lifetime",{"type":30,"value":47},{"type":21,"tag":26,"props":721,"children":722},{},[723],{"type":30,"value":724},"Ruled: a mock outlives its story",{"type":30,"value":726}," as the person's medium, naming its world so the story stays checkable against it (D8).",{"type":21,"tag":76,"props":728,"children":729},{},[730,732,737,739,745,747,753],{"type":30,"value":731},"The recut (",{"type":21,"tag":86,"props":733,"children":735},{"className":734},[],[736],{"type":30,"value":181},{"type":30,"value":738}," → nina-mbp, priya's cut as ",{"type":21,"tag":86,"props":740,"children":742},{"className":741},[],[743],{"type":30,"value":744},"pilot",{"type":30,"value":746},") is c2's; when it lands the lab re-syncs (",{"type":21,"tag":86,"props":748,"children":750},{"className":749},[],[751],{"type":30,"value":752},"scripts\u002Fsync-worlds.sh",{"type":30,"value":754},") and the default world's captures are retaken. Phase 3 takes the per-world native captures after it if it lands while Phase 3 runs, else captures what exists and notes the recapture.",1794599377521]