[{"data":1,"prerenderedAt":1102},["ShallowReactive",2],{"cycle-doc-design-c135-plan.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":21},{"id":5,"title":6},"c135","Component Cleanup",{"id":8,"label":9},"design","Design","plan.md","c135 plan: Component Cleanup (draft, before kick-off)",[13,14,15,16,17,18,19,20],"Why","What exists","The scorecard","Resolution strategies for duplicates and cousins","Decisions (defaults)","Phases","Clarifying questions","Patterns to consider",{"type":22,"children":23},"root",[24,61,67,80,85,406,411,416,516,542,547,610,615,888,893,900,920,926,931,937,949,955,960,966,985,990,1025,1030],{"type":25,"tag":26,"props":27,"children":28},"element","p",{},[29,36,38,43,45,52,54,59],{"type":25,"tag":30,"props":31,"children":32},"strong",{},[33],{"type":34,"value":35},"text","Gate:",{"type":34,"value":37}," none. Mark's word. It can run beside everything else and helps both the web app (c134) and the token bridge (c132).\n",{"type":25,"tag":30,"props":39,"children":40},{},[41],{"type":34,"value":42},"Reader:",{"type":34,"value":44}," Mark; the layer-expert and extraction-expert agents in ",{"type":25,"tag":46,"props":47,"children":49},"code",{"className":48},[],[50],{"type":34,"value":51},"..\u002F..\u002F..\u002Fq-nuxt-layer",{"type":34,"value":53},"; the executor who upgrades the docs here.\n",{"type":25,"tag":30,"props":55,"children":56},{},[57],{"type":34,"value":58},"Mode:",{"type":34,"value":60}," archaeology (surface what real use made of the catalog) → formula (apply the principles, group by group). Later stage, more order.",{"type":25,"tag":62,"props":63,"children":65},"h2",{"id":64},"why",[66],{"type":34,"value":13},{"type":25,"tag":26,"props":68,"children":69},{},[70,72,78],{"type":34,"value":71},"The layer grew with the work: c92 through c128 added components as pages needed them, qdash staged its own library-grade pieces, and two parallel apps (c99) left a list of fixes. The catalog has duplicates and near cousins, components whose shape predates ",{"type":25,"tag":46,"props":73,"children":75},{"className":74},[],[76],{"type":34,"value":77},"component_philosophy.md",{"type":34,"value":79},", code with no annotation, and documentation pages that show a default rather than the flavors the dashboard actually uses. The control plane web app will stand on this layer for years; the native app's token bridge needs the tokens clean. This is the moment Mark named: clean up the components and tighten the documentation.",{"type":25,"tag":62,"props":81,"children":83},{"id":82},"what-exists",[84],{"type":34,"value":14},{"type":25,"tag":86,"props":87,"children":88},"ul",{},[89,286,349,373],{"type":25,"tag":90,"props":91,"children":92},"li",{},[93,98,100,106,108,114,116,122,123,129,130,136,137,143,144,150,151,157,158,164,165,171,172,178,179,185,186,192,193,199,200,206,207,213,214,220,221,227,228,234,235,241,242,248,249,255,256,262,263,269,270,276,278,284],{"type":25,"tag":30,"props":94,"children":95},{},[96],{"type":34,"value":97},"The layer:",{"type":34,"value":99}," ",{"type":25,"tag":46,"props":101,"children":103},{"className":102},[],[104],{"type":34,"value":105},"components\u002F",{"type":34,"value":107}," in 23 groups (",{"type":25,"tag":46,"props":109,"children":111},{"className":110},[],[112],{"type":34,"value":113},"actor",{"type":34,"value":115},", ",{"type":25,"tag":46,"props":117,"children":119},{"className":118},[],[120],{"type":34,"value":121},"agent",{"type":34,"value":115},{"type":25,"tag":46,"props":124,"children":126},{"className":125},[],[127],{"type":34,"value":128},"alert",{"type":34,"value":115},{"type":25,"tag":46,"props":131,"children":133},{"className":132},[],[134],{"type":34,"value":135},"compliance",{"type":34,"value":115},{"type":25,"tag":46,"props":138,"children":140},{"className":139},[],[141],{"type":34,"value":142},"data",{"type":34,"value":115},{"type":25,"tag":46,"props":145,"children":147},{"className":146},[],[148],{"type":34,"value":149},"dev",{"type":34,"value":115},{"type":25,"tag":46,"props":152,"children":154},{"className":153},[],[155],{"type":34,"value":156},"endpoint",{"type":34,"value":115},{"type":25,"tag":46,"props":159,"children":161},{"className":160},[],[162],{"type":34,"value":163},"filter",{"type":34,"value":115},{"type":25,"tag":46,"props":166,"children":168},{"className":167},[],[169],{"type":34,"value":170},"form",{"type":34,"value":115},{"type":25,"tag":46,"props":173,"children":175},{"className":174},[],[176],{"type":34,"value":177},"health",{"type":34,"value":115},{"type":25,"tag":46,"props":180,"children":182},{"className":181},[],[183],{"type":34,"value":184},"icon",{"type":34,"value":115},{"type":25,"tag":46,"props":187,"children":189},{"className":188},[],[190],{"type":34,"value":191},"icon-nav",{"type":34,"value":115},{"type":25,"tag":46,"props":194,"children":196},{"className":195},[],[197],{"type":34,"value":198},"integration",{"type":34,"value":115},{"type":25,"tag":46,"props":201,"children":203},{"className":202},[],[204],{"type":34,"value":205},"layout",{"type":34,"value":115},{"type":25,"tag":46,"props":208,"children":210},{"className":209},[],[211],{"type":34,"value":212},"nav",{"type":34,"value":115},{"type":25,"tag":46,"props":215,"children":217},{"className":216},[],[218],{"type":34,"value":219},"people",{"type":34,"value":115},{"type":25,"tag":46,"props":222,"children":224},{"className":223},[],[225],{"type":34,"value":226},"policy",{"type":34,"value":115},{"type":25,"tag":46,"props":229,"children":231},{"className":230},[],[232],{"type":34,"value":233},"policy-config",{"type":34,"value":115},{"type":25,"tag":46,"props":236,"children":238},{"className":237},[],[239],{"type":34,"value":240},"prose",{"type":34,"value":115},{"type":25,"tag":46,"props":243,"children":245},{"className":244},[],[246],{"type":34,"value":247},"security",{"type":34,"value":115},{"type":25,"tag":46,"props":250,"children":252},{"className":251},[],[253],{"type":34,"value":254},"sentence",{"type":34,"value":115},{"type":25,"tag":46,"props":257,"children":259},{"className":258},[],[260],{"type":34,"value":261},"transcript",{"type":34,"value":115},{"type":25,"tag":46,"props":264,"children":266},{"className":265},[],[267],{"type":34,"value":268},"typography",{"type":34,"value":115},{"type":25,"tag":46,"props":271,"children":273},{"className":272},[],[274],{"type":34,"value":275},"ux",{"type":34,"value":277},"), about 250 ",{"type":25,"tag":46,"props":279,"children":281},{"className":280},[],[282],{"type":34,"value":283},".vue",{"type":34,"value":285}," files. Released by tag (v0.9.37 current). Consumers: design, qdash UI, www, app.qpoint.io.",{"type":25,"tag":90,"props":287,"children":288},{},[289,294,295,301,303,309,311,317,318,324,326,332,333,339,341,347],{"type":25,"tag":30,"props":290,"children":291},{},[292],{"type":34,"value":293},"The docs:",{"type":34,"value":99},{"type":25,"tag":46,"props":296,"children":298},{"className":297},[],[299],{"type":34,"value":300},"component-registry.ts",{"type":34,"value":302}," (the count of record), 193 demo files with ",{"type":25,"tag":46,"props":304,"children":306},{"className":305},[],[307],{"type":34,"value":308},"adminProps",{"type":34,"value":310},", the coverage system, ",{"type":25,"tag":46,"props":312,"children":314},{"className":313},[],[315],{"type":34,"value":316},"\u002Fpatterns",{"type":34,"value":115},{"type":25,"tag":46,"props":319,"children":321},{"className":320},[],[322],{"type":34,"value":323},"\u002Flayer\u002Fconsolidation-gaps",{"type":34,"value":325},", the ",{"type":25,"tag":46,"props":327,"children":329},{"className":328},[],[330],{"type":34,"value":331},"\u002Fdocument-components",{"type":34,"value":115},{"type":25,"tag":46,"props":334,"children":336},{"className":335},[],[337],{"type":34,"value":338},"\u002Fdocument-pattern",{"type":34,"value":340}," and ",{"type":25,"tag":46,"props":342,"children":344},{"className":343},[],[345],{"type":34,"value":346},"\u002Fscan-patterns",{"type":34,"value":348}," skills.",{"type":25,"tag":90,"props":350,"children":351},{},[352,357,358,363,365,371],{"type":25,"tag":30,"props":353,"children":354},{},[355],{"type":34,"value":356},"The principles:",{"type":34,"value":99},{"type":25,"tag":46,"props":359,"children":361},{"className":360},[],[362],{"type":34,"value":77},{"type":34,"value":364}," (unified pantry: visual components live in the layer; business logic stays local; composition over configuration; Tailwind-native; replicate first, optimize later), ",{"type":25,"tag":46,"props":366,"children":368},{"className":367},[],[369],{"type":34,"value":370},"design_tokens.md",{"type":34,"value":372},", the layer's authoring rules (no relative imports, no arbitrary-value Tailwind, no unscoped element selectors).",{"type":25,"tag":90,"props":374,"children":375},{},[376,381,382,388,390,396,398,404],{"type":25,"tag":30,"props":377,"children":378},{},[379],{"type":34,"value":380},"Waiting lists:",{"type":34,"value":99},{"type":25,"tag":46,"props":383,"children":385},{"className":384},[],[386],{"type":34,"value":387},"LAYER-CANDIDATES.md",{"type":34,"value":389}," in the qdash UI (ProjectedBadge, Panel, StatTile, Spark, MetricCell, BarList, Attention*, JsonTree, useVirtualRows, AlertHandlers, SkeletonRows, StateEmpty, plus a ",{"type":25,"tag":46,"props":391,"children":393},{"className":392},[],[394],{"type":34,"value":395},"state",{"type":34,"value":397}," port for DataTable and friends) and the Opus track's 59 fixes (UxIcon ",{"type":25,"tag":46,"props":399,"children":401},{"className":400},[],[402],{"type":34,"value":403},"id",{"type":34,"value":405},", UxPill danger tone, logo-only AgentAvatar, highlight.js optimizeDeps, and more).",{"type":25,"tag":62,"props":407,"children":409},{"id":408},"the-scorecard",[410],{"type":34,"value":15},{"type":25,"tag":26,"props":412,"children":413},{},[414],{"type":34,"value":415},"Every component gets one row. The five checks are Mark's, in his order:",{"type":25,"tag":417,"props":418,"children":419},"table",{},[420,439],{"type":25,"tag":421,"props":422,"children":423},"thead",{},[424],{"type":25,"tag":425,"props":426,"children":427},"tr",{},[428,434],{"type":25,"tag":429,"props":430,"children":431},"th",{},[432],{"type":34,"value":433},"Check",{"type":25,"tag":429,"props":435,"children":436},{},[437],{"type":34,"value":438},"Pass means",{"type":25,"tag":440,"props":441,"children":442},"tbody",{},[443,457,470,483,496],{"type":25,"tag":425,"props":444,"children":445},{},[446,452],{"type":25,"tag":447,"props":448,"children":449},"td",{},[450],{"type":34,"value":451},"Modular",{"type":25,"tag":447,"props":453,"children":454},{},[455],{"type":34,"value":456},"one purpose; a clean interface to the whole; internals free (purpose + protocol)",{"type":25,"tag":425,"props":458,"children":459},{},[460,465],{"type":25,"tag":447,"props":461,"children":462},{},[463],{"type":34,"value":464},"Clean",{"type":25,"tag":447,"props":466,"children":467},{},[468],{"type":34,"value":469},"no dead props, no arbitrary values, no relative imports, no unscoped selectors; passes the layer's lint",{"type":25,"tag":425,"props":471,"children":472},{},[473,478],{"type":25,"tag":447,"props":474,"children":475},{},[476],{"type":34,"value":477},"Documented",{"type":25,"tag":447,"props":479,"children":480},{},[481],{"type":34,"value":482},"a doc comment on the component and on every prop, emit and slot (the annotation standard, Phase 0)",{"type":25,"tag":425,"props":484,"children":485},{},[486,491],{"type":25,"tag":447,"props":487,"children":488},{},[489],{"type":34,"value":490},"Shaped",{"type":25,"tag":447,"props":492,"children":493},{},[494],{"type":34,"value":495},"composition over configuration; slots where consumers compose; no deep prop trees; tokens not hex",{"type":25,"tag":425,"props":497,"children":498},{},[499,504],{"type":25,"tag":447,"props":500,"children":501},{},[502],{"type":34,"value":503},"Docs page",{"type":25,"tag":447,"props":505,"children":506},{},[507,509,514],{"type":34,"value":508},"a registry entry, a demo with ",{"type":25,"tag":46,"props":510,"children":512},{"className":511},[],[513],{"type":34,"value":308},{"type":34,"value":515}," for every useful prop, and examples that show the dashboard's real flavors (empty, minimal, typical, overflow, error where they apply)",{"type":25,"tag":26,"props":517,"children":518},{},[519,521,526,528,533,535,540],{"type":34,"value":520},"Plus three columns: ",{"type":25,"tag":30,"props":522,"children":523},{},[524],{"type":34,"value":525},"used by",{"type":34,"value":527}," (consumer and count, from a scan), ",{"type":25,"tag":30,"props":529,"children":530},{},[531],{"type":34,"value":532},"cousins",{"type":34,"value":534}," (components it overlaps), and ",{"type":25,"tag":30,"props":536,"children":537},{},[538],{"type":34,"value":539},"resolution",{"type":34,"value":541}," (keep · merge into X · alias and deprecate · split · retire · extract from qdash).",{"type":25,"tag":62,"props":543,"children":545},{"id":544},"resolution-strategies-for-duplicates-and-cousins",[546],{"type":34,"value":16},{"type":25,"tag":86,"props":548,"children":549},{},[550,560,570,580,590,600],{"type":25,"tag":90,"props":551,"children":552},{},[553,558],{"type":25,"tag":30,"props":554,"children":555},{},[556],{"type":34,"value":557},"Merge",{"type":34,"value":559}," when two components show the same thing with different props: one survives, the other becomes an alias that warns, removed two minor releases later.",{"type":25,"tag":90,"props":561,"children":562},{},[563,568],{"type":25,"tag":30,"props":564,"children":565},{},[566],{"type":34,"value":567},"Split",{"type":34,"value":569}," when one component carries two purposes (a prop that changes what it is).",{"type":25,"tag":90,"props":571,"children":572},{},[573,578],{"type":25,"tag":30,"props":574,"children":575},{},[576],{"type":34,"value":577},"Alias and deprecate",{"type":34,"value":579}," when consumers can't move in one release.",{"type":25,"tag":90,"props":581,"children":582},{},[583,588],{"type":25,"tag":30,"props":584,"children":585},{},[586],{"type":34,"value":587},"Retire",{"type":34,"value":589}," when no consumer uses it and no pattern needs it (checked against the scan, not memory).",{"type":25,"tag":90,"props":591,"children":592},{},[593,598],{"type":25,"tag":30,"props":594,"children":595},{},[596],{"type":34,"value":597},"Extract",{"type":34,"value":599}," when qdash staged a library-grade piece the layer lacks (the waiting lists).",{"type":25,"tag":90,"props":601,"children":602},{},[603,608],{"type":25,"tag":30,"props":604,"children":605},{},[606],{"type":34,"value":607},"Keep",{"type":34,"value":609}," with a note when the overlap is deliberate (a dense and a roomy variant that a pattern documents).",{"type":25,"tag":62,"props":611,"children":613},{"id":612},"decisions-defaults",[614],{"type":34,"value":17},{"type":25,"tag":417,"props":616,"children":617},{},[618,639],{"type":25,"tag":421,"props":619,"children":620},{},[621],{"type":25,"tag":425,"props":622,"children":623},{},[624,629,634],{"type":25,"tag":429,"props":625,"children":626},{},[627],{"type":34,"value":628},"#",{"type":25,"tag":429,"props":630,"children":631},{},[632],{"type":34,"value":633},"Question",{"type":25,"tag":429,"props":635,"children":636},{},[637],{"type":34,"value":638},"Default",{"type":25,"tag":440,"props":640,"children":641},{},[642,740,758,776,794,819,837,863],{"type":25,"tag":425,"props":643,"children":644},{},[645,650,655],{"type":25,"tag":447,"props":646,"children":647},{},[648],{"type":34,"value":649},"D1",{"type":25,"tag":447,"props":651,"children":652},{},[653],{"type":34,"value":654},"Order of groups",{"type":25,"tag":447,"props":656,"children":657},{},[658,663,665,670,671,676,677,682,683,688,689,694,696,701,702,707,708,713,714,719,721,726,727,732,733,738],{"type":25,"tag":46,"props":659,"children":661},{"className":660},[],[662],{"type":34,"value":275},{"type":34,"value":664}," → ",{"type":25,"tag":46,"props":666,"children":668},{"className":667},[],[669],{"type":34,"value":142},{"type":34,"value":664},{"type":25,"tag":46,"props":672,"children":674},{"className":673},[],[675],{"type":34,"value":163},{"type":34,"value":115},{"type":25,"tag":46,"props":678,"children":680},{"className":679},[],[681],{"type":34,"value":212},{"type":34,"value":115},{"type":25,"tag":46,"props":684,"children":686},{"className":685},[],[687],{"type":34,"value":205},{"type":34,"value":664},{"type":25,"tag":46,"props":690,"children":692},{"className":691},[],[693],{"type":34,"value":170},{"type":34,"value":695}," → the domain groups (",{"type":25,"tag":46,"props":697,"children":699},{"className":698},[],[700],{"type":34,"value":113},{"type":34,"value":115},{"type":25,"tag":46,"props":703,"children":705},{"className":704},[],[706],{"type":34,"value":121},{"type":34,"value":115},{"type":25,"tag":46,"props":709,"children":711},{"className":710},[],[712],{"type":34,"value":226},{"type":34,"value":115},{"type":25,"tag":46,"props":715,"children":717},{"className":716},[],[718],{"type":34,"value":135},{"type":34,"value":720},", …) → ",{"type":25,"tag":46,"props":722,"children":724},{"className":723},[],[725],{"type":34,"value":184},{"type":34,"value":115},{"type":25,"tag":46,"props":728,"children":730},{"className":729},[],[731],{"type":34,"value":268},{"type":34,"value":115},{"type":25,"tag":46,"props":734,"children":736},{"className":735},[],[737],{"type":34,"value":240},{"type":34,"value":739},". The most-used first.",{"type":25,"tag":425,"props":741,"children":742},{},[743,748,753],{"type":25,"tag":447,"props":744,"children":745},{},[746],{"type":34,"value":747},"D2",{"type":25,"tag":447,"props":749,"children":750},{},[751],{"type":34,"value":752},"What counts as a duplicate",{"type":25,"tag":447,"props":754,"children":755},{},[756],{"type":34,"value":757},"two components a consumer could swap without the page meaning something else (the 5-question framework's \"is it necessary?\").",{"type":25,"tag":425,"props":759,"children":760},{},[761,766,771],{"type":25,"tag":447,"props":762,"children":763},{},[764],{"type":34,"value":765},"D3",{"type":25,"tag":447,"props":767,"children":768},{},[769],{"type":34,"value":770},"Deprecation window",{"type":25,"tag":447,"props":772,"children":773},{},[774],{"type":34,"value":775},"two minor releases, with a console warning and a note in the release.",{"type":25,"tag":425,"props":777,"children":778},{},[779,784,789],{"type":25,"tag":447,"props":780,"children":781},{},[782],{"type":34,"value":783},"D4",{"type":25,"tag":447,"props":785,"children":786},{},[787],{"type":34,"value":788},"Domain groups",{"type":25,"tag":447,"props":790,"children":791},{},[792],{"type":34,"value":793},"stay in the layer (unified pantry), but each must show a qdash flavor in its docs or it is a retire candidate.",{"type":25,"tag":425,"props":795,"children":796},{},[797,802,807],{"type":25,"tag":447,"props":798,"children":799},{},[800],{"type":34,"value":801},"D5",{"type":25,"tag":447,"props":803,"children":804},{},[805],{"type":34,"value":806},"Flavors in the docs",{"type":25,"tag":447,"props":808,"children":809},{},[810,812,817],{"type":34,"value":811},"harvested from the qdash UI by ",{"type":25,"tag":46,"props":813,"children":815},{"className":814},[],[816],{"type":34,"value":346},{"type":34,"value":818}," and recorded as named examples in the demo, not hand-invented.",{"type":25,"tag":425,"props":820,"children":821},{},[822,827,832],{"type":25,"tag":447,"props":823,"children":824},{},[825],{"type":34,"value":826},"D6",{"type":25,"tag":447,"props":828,"children":829},{},[830],{"type":34,"value":831},"Annotation standard",{"type":25,"tag":447,"props":833,"children":834},{},[835],{"type":34,"value":836},"JSDoc-style doc comments on the component, props, emits and slots; a lint rule that fails the layer's build when one is missing (added after the first group passes, so the rule is written from practice).",{"type":25,"tag":425,"props":838,"children":839},{},[840,845,850],{"type":25,"tag":447,"props":841,"children":842},{},[843],{"type":34,"value":844},"D7",{"type":25,"tag":447,"props":846,"children":847},{},[848],{"type":34,"value":849},"Releases",{"type":25,"tag":447,"props":851,"children":852},{},[853,855,861],{"type":34,"value":854},"one per group pass, with the consumers' lockfiles bumped by ",{"type":25,"tag":46,"props":856,"children":858},{"className":857},[],[859],{"type":34,"value":860},"update-consumers.sh",{"type":34,"value":862},".",{"type":25,"tag":425,"props":864,"children":865},{},[866,871,876],{"type":25,"tag":447,"props":867,"children":868},{},[869],{"type":34,"value":870},"D8",{"type":25,"tag":447,"props":872,"children":873},{},[874],{"type":34,"value":875},"The waiting lists",{"type":25,"tag":447,"props":877,"children":878},{},[879,881,886],{"type":34,"value":880},"merged into one list in the layer repo at Phase 1 and ",{"type":25,"tag":30,"props":882,"children":883},{},[884],{"type":34,"value":885},"extracted during Phase 2",{"type":34,"value":887},", each ahead of the group it belongs to, so the control plane web app (c134) finds them in the layer from its first page. Ruled 2026-11-09.",{"type":25,"tag":62,"props":889,"children":891},{"id":890},"phases",[892],{"type":34,"value":18},{"type":25,"tag":894,"props":895,"children":897},"h3",{"id":896},"_0-tooling",[898],{"type":34,"value":899},"0. Tooling",{"type":25,"tag":26,"props":901,"children":902},{},[903,905,910,912,918],{"type":34,"value":904},"A script that produces the scorecard skeleton: every component, its props, emits and slots, its demo and ",{"type":25,"tag":46,"props":906,"children":908},{"className":907},[],[909],{"type":34,"value":308},{"type":34,"value":911}," coverage, and its usages across the four consumers. The annotation standard drafted. A ",{"type":25,"tag":46,"props":913,"children":915},{"className":914},[],[916],{"type":34,"value":917},"scorecard.md",{"type":34,"value":919}," committed in this cycle directory.",{"type":25,"tag":894,"props":921,"children":923},{"id":922},"_1-census",[924],{"type":34,"value":925},"1. Census",{"type":25,"tag":26,"props":927,"children":928},{},[929],{"type":34,"value":930},"The cousins and duplicates named across the whole catalog, with a proposed resolution each. The two waiting lists merged. Review stop with Mark: the resolutions ruled.",{"type":25,"tag":894,"props":932,"children":934},{"id":933},"_2-group-passes-d1-order",[935],{"type":34,"value":936},"2. Group passes (D1 order)",{"type":25,"tag":26,"props":938,"children":939},{},[940,942,947],{"type":34,"value":941},"For each group: apply the resolutions, bring every component to five passes, write the annotations, upgrade the docs pages with harvested flavors and ",{"type":25,"tag":46,"props":943,"children":945},{"className":944},[],[946],{"type":34,"value":308},{"type":34,"value":948},", release, bump consumers, record. Review stop per group.",{"type":25,"tag":894,"props":950,"children":952},{"id":951},"_3-the-lint",[953],{"type":34,"value":954},"3. The lint",{"type":25,"tag":26,"props":956,"children":957},{},[958],{"type":34,"value":959},"D6's rule, from what the first two groups taught; turned on for the whole layer.",{"type":25,"tag":894,"props":961,"children":963},{"id":962},"_4-close",[964],{"type":34,"value":965},"4. Close",{"type":25,"tag":26,"props":967,"children":968},{},[969,971,976,978,983],{"type":34,"value":970},"Coverage numbers before and after, the retired and merged lists, ",{"type":25,"tag":46,"props":972,"children":974},{"className":973},[],[975],{"type":34,"value":77},{"type":34,"value":977}," updated with anything the work changed, and the ",{"type":25,"tag":46,"props":979,"children":981},{"className":980},[],[982],{"type":34,"value":331},{"type":34,"value":984}," skill updated to produce the new docs shape by default.",{"type":25,"tag":62,"props":986,"children":988},{"id":987},"clarifying-questions",[989],{"type":34,"value":19},{"type":25,"tag":991,"props":992,"children":993},"ol",{},[994,1005,1010,1020],{"type":25,"tag":90,"props":995,"children":996},{},[997,1003],{"type":25,"tag":998,"props":999,"children":1000},"del",{},[1001],{"type":34,"value":1002},"app.qpoint.io a consumer?",{"type":34,"value":1004}," Answered 2026-11-09: yes, in the form of its successor, c134's control plane web app (whether it keeps the app.qpoint.io name is a c0 item). It starts from a blank slate, so the layer must already hold what it needs.",{"type":25,"tag":90,"props":1006,"children":1007},{},[1008],{"type":34,"value":1009},"Release cadence during the cleanup: per group (D7) or fewer, larger releases?",{"type":25,"tag":90,"props":1011,"children":1012},{},[1013,1018],{"type":25,"tag":998,"props":1014,"children":1015},{},[1016],{"type":34,"value":1017},"Extractions here?",{"type":34,"value":1019}," Answered 2026-11-09: yes, now. Mark: plan on adding the missing components to the layer now, since the successor app starts from a blank slate and builds from the ground up (D8 revised).",{"type":25,"tag":90,"props":1021,"children":1022},{},[1023],{"type":34,"value":1024},"Any component families you already know are duplicates, so the census starts from your list?",{"type":25,"tag":62,"props":1026,"children":1028},{"id":1027},"patterns-to-consider",[1029],{"type":34,"value":20},{"type":25,"tag":86,"props":1031,"children":1032},{},[1033,1050,1060,1082,1092],{"type":25,"tag":90,"props":1034,"children":1035},{},[1036,1041,1043,1048],{"type":25,"tag":30,"props":1037,"children":1038},{},[1039],{"type":34,"value":1040},"The scorecard as a living page",{"type":34,"value":1042}," on the design site (like ",{"type":25,"tag":46,"props":1044,"children":1046},{"className":1045},[],[1047],{"type":34,"value":323},{"type":34,"value":1049},"), regenerated by the script, so the cleanup's progress is visible and the standard outlives the cycle.",{"type":25,"tag":90,"props":1051,"children":1052},{},[1053,1058],{"type":25,"tag":30,"props":1054,"children":1055},{},[1056],{"type":34,"value":1057},"Flavors harvested, not invented",{"type":34,"value":1059},": a demo example that names the qdash page it came from is a test of the component against real use.",{"type":25,"tag":90,"props":1061,"children":1062},{},[1063,1072,1074,1080],{"type":25,"tag":30,"props":1064,"children":1065},{},[1066],{"type":25,"tag":46,"props":1067,"children":1069},{"className":1068},[],[1070],{"type":34,"value":1071},"graduatedFrom",{"type":34,"value":1073}," on the registry entry (a ",{"type":25,"tag":46,"props":1075,"children":1077},{"className":1076},[],[1078],{"type":34,"value":1079},"pipeline.md",{"type":34,"value":1081}," follow-up): the cycle and mock each component came from, filled in during the group passes.",{"type":25,"tag":90,"props":1083,"children":1084},{},[1085,1090],{"type":25,"tag":30,"props":1086,"children":1087},{},[1088],{"type":34,"value":1089},"The token audit",{"type":34,"value":1091}," as a by-product: every hex or arbitrary value found becomes a token or a bug, feeding c132's bridge.",{"type":25,"tag":90,"props":1093,"children":1094},{},[1095,1100],{"type":25,"tag":30,"props":1096,"children":1097},{},[1098],{"type":34,"value":1099},"The 5-question framework per component",{"type":34,"value":1101}," in the scorecard's notes: useful, clear, precise, necessary, beautiful.",1794599400978]