[{"data":1,"prerenderedAt":444},["ShallowReactive",2],{"cycle-doc-design-c121-plan\u002F06-endpoints.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":17},{"id":5,"title":6},"c121","Governance v1 Scope",{"id":8,"label":9},"design","Design","plan\u002F06-endpoints.md","06 · Endpoints + propagation footprint (Wave 2)",[13,14,15,16],"Today","Steps","Done when","Look for (review)",{"type":18,"children":19},"root",[20,41,129,135,164,169,388,393,434,439],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25,32,34,39],{"type":21,"tag":26,"props":27,"children":28},"strong",{},[29],{"type":30,"value":31},"text","TL;DR:",{"type":30,"value":33}," the published target version and each endpoint's active version are different facts (I). Give propagation a footprint where endpoints live: an ",{"type":21,"tag":26,"props":35,"children":36},{},[37],{"type":30,"value":38},"Endpoints",{"type":30,"value":40}," listing and detail in the lab (copied from the live qdash pages), a Policy Config column on the team page's Endpoints ledger. Stale, offline or failed endpoints are never shown as updated; stale ones point at the MDM.",{"type":21,"tag":22,"props":42,"children":43},{},[44,49,51,58,60,66,68,74,76,82,84,89,91,97,99,105,107,113,114,120,121,127],{"type":21,"tag":26,"props":45,"children":46},{},[47],{"type":30,"value":48},"Owns:",{"type":30,"value":50}," new ",{"type":21,"tag":52,"props":53,"children":55},"code",{"className":54},[],[56],{"type":30,"value":57},"app\u002Fpages\u002Fpages\u002Fphase4\u002Fmock\u002Forganization\u002Fendpoints\u002F{index,detail}.vue",{"type":30,"value":59},", new ",{"type":21,"tag":52,"props":61,"children":63},{"className":62},[],[64],{"type":30,"value":65},"app\u002Fcomponents\u002Fgovernance\u002Flive\u002FEndpoint*.vue",{"type":30,"value":67},", ",{"type":21,"tag":52,"props":69,"children":71},{"className":70},[],[72],{"type":30,"value":73},"app\u002Fcomponents\u002Fgovernance\u002Flive\u002FTeamDevicesLedger.vue",{"type":30,"value":75},", and in ",{"type":21,"tag":52,"props":77,"children":79},{"className":78},[],[80],{"type":30,"value":81},"app\u002Fdata\u002Fgovernance-parts.ts",{"type":30,"value":83}," ",{"type":21,"tag":26,"props":85,"children":86},{},[87],{"type":30,"value":88},"only",{"type":30,"value":90}," the rail entries (",{"type":21,"tag":52,"props":92,"children":94},{"className":93},[],[95],{"type":30,"value":96},"MOCK_NAV",{"type":30,"value":98}," \u002F ",{"type":21,"tag":52,"props":100,"children":102},{"className":101},[],[103],{"type":30,"value":104},"MOCK_SUBMENUS",{"type":30,"value":106},", l.43–51). Reads 00's ",{"type":21,"tag":52,"props":108,"children":110},{"className":109},[],[111],{"type":30,"value":112},"fleet",{"type":30,"value":67},{"type":21,"tag":52,"props":115,"children":117},{"className":116},[],[118],{"type":30,"value":119},"fleetSummary",{"type":30,"value":67},{"type":21,"tag":52,"props":122,"children":124},{"className":123},[],[125],{"type":30,"value":126},"targetVersion",{"type":30,"value":128},".",{"type":21,"tag":130,"props":131,"children":133},"h2",{"id":132},"today",[134],{"type":30,"value":13},{"type":21,"tag":22,"props":136,"children":137},{},[138,140,146,148,154,156,162],{"type":30,"value":139},"Organization › Endpoints lands on the blank catch-all ",{"type":21,"tag":52,"props":141,"children":143},{"className":142},[],[144],{"type":30,"value":145},"[...slug].vue",{"type":30,"value":147},". The only endpoint UI is the team page's ",{"type":21,"tag":52,"props":149,"children":151},{"className":150},[],[152],{"type":30,"value":153},"TeamDevicesLedger.vue",{"type":30,"value":155}," (fed by ",{"type":21,"tag":52,"props":157,"children":159},{"className":158},[],[160],{"type":30,"value":161},"useTeamMock.ts",{"type":30,"value":163},"). Fleet is counts only until 00 lands.",{"type":21,"tag":130,"props":165,"children":167},{"id":166},"steps",[168],{"type":30,"value":14},{"type":21,"tag":170,"props":171,"children":172},"ol",{},[173,268,325,348,365,375],{"type":21,"tag":174,"props":175,"children":176},"li",{},[177,182,184,190,192,198,199,205,207,213,214,220,222,228,230,236,237,243,244,250,252,258,260,266],{"type":21,"tag":26,"props":178,"children":179},{},[180],{"type":30,"value":181},"Copy, then adapt",{"type":30,"value":183}," (replicate first): from ",{"type":21,"tag":52,"props":185,"children":187},{"className":186},[],[188],{"type":30,"value":189},"..\u002Fqcontrol\u002Fcrates\u002Fqdash\u002Fui\u002Fapp\u002Fpages\u002Forganization\u002Fendpoints\u002Findex.vue",{"type":30,"value":191}," (PageHeader, ",{"type":21,"tag":52,"props":193,"children":195},{"className":194},[],[196],{"type":30,"value":197},"TeamEndpointsBand",{"type":30,"value":67},{"type":21,"tag":52,"props":200,"children":202},{"className":201},[],[203],{"type":30,"value":204},"TeamEndpointsLedger",{"type":30,"value":206}," → ",{"type":21,"tag":52,"props":208,"children":210},{"className":209},[],[211],{"type":30,"value":212},"components\u002Fteam\u002FEndpointsBand.vue",{"type":30,"value":67},{"type":21,"tag":52,"props":215,"children":217},{"className":216},[],[218],{"type":30,"value":219},"EndpointsLedger.vue",{"type":30,"value":221},") and ",{"type":21,"tag":52,"props":223,"children":225},{"className":224},[],[226],{"type":30,"value":227},"…\u002Fendpoints\u002Fdetail.vue",{"type":30,"value":229}," (",{"type":21,"tag":52,"props":231,"children":233},{"className":232},[],[234],{"type":30,"value":235},"EndpointHeader",{"type":30,"value":67},{"type":21,"tag":52,"props":238,"children":240},{"className":239},[],[241],{"type":30,"value":242},"EndpointTiles",{"type":30,"value":67},{"type":21,"tag":52,"props":245,"children":247},{"className":246},[],[248],{"type":30,"value":249},"EndpointInstalls",{"type":30,"value":251},"). Copy into ",{"type":21,"tag":52,"props":253,"children":255},{"className":254},[],[256],{"type":30,"value":257},"governance\u002Flive\u002FEndpoint*.vue",{"type":30,"value":259}," the way c114 copied the team page (see ",{"type":21,"tag":52,"props":261,"children":263},{"className":262},[],[264],{"type":30,"value":265},"governance\u002Flive\u002FTeam*.vue",{"type":30,"value":267}," and its mock adapter pattern). Read-only; no backend.",{"type":21,"tag":174,"props":269,"children":270},{},[271,276,278,284,286,291,293,299,301,307,309,315,317,323],{"type":21,"tag":26,"props":272,"children":273},{},[274],{"type":30,"value":275},"Listing.",{"type":30,"value":277}," Band on top: the propagation bar from the note (",{"type":21,"tag":52,"props":279,"children":281},{"className":280},[],[282],{"type":30,"value":283},"..\u002Fsources\u002Flogseq-propagation.png",{"type":30,"value":285},"): \"97 of 100 endpoints on Policy Config v13 · 3 still on earlier versions\", then counts by status. Ledger gets a ",{"type":21,"tag":26,"props":287,"children":288},{},[289],{"type":30,"value":290},"Policy Config",{"type":30,"value":292}," column: ",{"type":21,"tag":52,"props":294,"children":296},{"className":295},[],[297],{"type":30,"value":298},"v13",{"type":30,"value":300}," (current, green dot), ",{"type":21,"tag":52,"props":302,"children":304},{"className":303},[],[305],{"type":30,"value":306},"v12 · behind",{"type":30,"value":308}," (amber), ",{"type":21,"tag":52,"props":310,"children":312},{"className":311},[],[313],{"type":30,"value":314},"v12 · offline 6d",{"type":30,"value":316}," (grey), ",{"type":21,"tag":52,"props":318,"children":320},{"className":319},[],[321],{"type":30,"value":322},"v12 · failed",{"type":30,"value":324}," (rose, with reason). Filter chip \"Not on v13\".",{"type":21,"tag":174,"props":326,"children":327},{},[328,333,335,340,342,346],{"type":21,"tag":26,"props":329,"children":330},{},[331],{"type":30,"value":332},"Detail.",{"type":30,"value":334}," Tiles: Active ",{"type":21,"tag":26,"props":336,"children":337},{},[338],{"type":30,"value":339},"v12",{"type":30,"value":341},", Target ",{"type":21,"tag":26,"props":343,"children":344},{},[345],{"type":30,"value":298},{"type":30,"value":347},", Last seen, Status. When not current: \"This endpoint hasn't picked up v13. If it's off-boarded or on a shelf, check your MDM.\" (R). Small activation history (versions with when they activated).",{"type":21,"tag":174,"props":349,"children":350},{},[351,356,358,363],{"type":21,"tag":26,"props":352,"children":353},{},[354],{"type":30,"value":355},"Team detail ledger.",{"type":30,"value":357}," Same column in ",{"type":21,"tag":52,"props":359,"children":361},{"className":360},[],[362],{"type":30,"value":153},{"type":30,"value":364},"; endpoint names link to the lab detail.",{"type":21,"tag":174,"props":366,"children":367},{},[368,373],{"type":21,"tag":26,"props":369,"children":370},{},[371],{"type":30,"value":372},"Rail.",{"type":30,"value":374}," Point Organization › Endpoints at the new page (concrete routes beat the catch-all, so this may be no-op — check).",{"type":21,"tag":174,"props":376,"children":377},{},[378,380,386],{"type":30,"value":379},"Monitor-section propagation view stays future (I, R): leave a ",{"type":21,"tag":52,"props":381,"children":383},{"className":382},[],[384],{"type":30,"value":385},"DesignInProgress",{"type":30,"value":387},"-style note on nothing; just don't build it.",{"type":21,"tag":130,"props":389,"children":391},{"id":390},"done-when",[392],{"type":30,"value":15},{"type":21,"tag":22,"props":394,"children":395},{},[396,402,403,409,411,417,419,425,427,433],{"type":21,"tag":52,"props":397,"children":399},{"className":398},[],[400],{"type":30,"value":401},"\u002Fpages\u002Fphase4\u002Fmock\u002Forganization\u002Fendpoints",{"type":30,"value":67},{"type":21,"tag":52,"props":404,"children":406},{"className":405},[],[407],{"type":30,"value":408},"…\u002Fendpoints\u002Fdetail?endpoint=mac-eng-07",{"type":30,"value":410}," (behind), ",{"type":21,"tag":52,"props":412,"children":414},{"className":413},[],[415],{"type":30,"value":416},"win-fin-02",{"type":30,"value":418}," (failed), one current; team detail ledger column. After 03's Publish (v14), the listing shows 0 of 100 on v14 until ",{"type":21,"tag":52,"props":420,"children":422},{"className":421},[],[423],{"type":30,"value":424},"propagate()",{"type":30,"value":426},". Screenshots ",{"type":21,"tag":52,"props":428,"children":430},{"className":429},[],[431],{"type":30,"value":432},"shots\u002F06-*.png",{"type":30,"value":128},{"type":21,"tag":130,"props":435,"children":437},{"id":436},"look-for-review",[438],{"type":30,"value":16},{"type":21,"tag":22,"props":440,"children":441},{},[442],{"type":30,"value":443},"Can you find the three laggards in under five seconds? Does anything imply an endpoint is updated just because v13 was published?",1794599473990]