[{"data":1,"prerenderedAt":720},["ShallowReactive",2],{"cycle-doc-bob-wire-c21-design-brief.md":3},{"cycle":4,"project":7,"path":10,"title":11,"toc":12,"ast":22},{"id":5,"title":6},"c21","Inventory + Users \u002F Devices",{"id":8,"label":9},"bob-wire","Bob-Wire","design-brief.md","c21 Design Brief — Inventory + Users \u002F Devices",[13,14,15,16,17,18,19,20,21],"1. Why this cycle","2. Decisions settled on the call","3. Page: Inventory","4. Page: Users \u002F Devices","5. The standout use case (thread through both pages)","6. Open questions (wireframes may explore, must not silently decide)","7. Secondary ideas captured (not this cycle's pages, worth parking)","8. Personas","9. Success criteria",{"type":23,"children":24},"root",[25,87,109,113,119,124,132,157,162,167,172,308,313,321,355,363,408,418,423,431,490,500,505,520,532,537,596,601,644,649,682,687],{"type":26,"tag":27,"props":28,"children":29},"element","p",{},[30,37,39,44,46,53,55,60,62,68,70,77,79,85],{"type":26,"tag":31,"props":32,"children":33},"strong",{},[34],{"type":35,"value":36},"text","Audience:",{"type":35,"value":38}," humans (Qpoint team + Mark Peterson)\n",{"type":26,"tag":31,"props":40,"children":41},{},[42],{"type":35,"value":43},"Companion doc:",{"type":35,"value":45}," ",{"type":26,"tag":47,"props":48,"children":50},"a",{"href":49},"\u002Fcycles\u002Fbob-wire\u002Fc21\u002Fdoc\u002Ftechnical-plan",[51],{"type":35,"value":52},"technical-plan.md",{"type":35,"value":54}," — the AI-execution plan for building the wireframes\n",{"type":26,"tag":31,"props":56,"children":57},{},[58],{"type":35,"value":59},"Sources:",{"type":35,"value":61}," Mark's notes (",{"type":26,"tag":47,"props":63,"children":65},{"href":64},"\u002Fcycles\u002Fbob-wire\u002Fc21\u002Fdoc\u002Finitial-prompt",[66],{"type":35,"value":67},"initial-prompt.md",{"type":35,"value":69},") + the 2026-08-31 Mark Peterson roadmap call\n(",{"type":26,"tag":71,"props":72,"children":74},"code",{"className":73},[],[75],{"type":35,"value":76},"..\u002Fmarket-analyst\u002Fdata\u002Fprocessed\u002F38075ead-4294-428f-bb58-13898dad7160.json",{"type":35,"value":78},", transcript + Avoma notes in ",{"type":26,"tag":71,"props":80,"children":82},{"className":81},[],[83],{"type":35,"value":84},"..\u002Fmarket-analyst\u002Fdata\u002Fraw\u002F",{"type":35,"value":86},")",{"type":26,"tag":88,"props":89,"children":90},"blockquote",{},[91],{"type":26,"tag":27,"props":92,"children":93},{},[94,96,101,103],{"type":35,"value":95},"Mark Peterson is a fractional advisor scoping the dashboard product. This call is ",{"type":26,"tag":31,"props":97,"children":98},{},[99],{"type":35,"value":100},"roadmap input, not customer discovery",{"type":35,"value":102}," — but he independently validates the sequencing from CISO-board experience: ",{"type":26,"tag":104,"props":105,"children":106},"em",{},[107],{"type":35,"value":108},"\"the journey starts at the inventory and discovery, observability… Regardless.\"",{"type":26,"tag":110,"props":111,"children":112},"hr",{},[],{"type":26,"tag":114,"props":115,"children":117},"h2",{"id":116},"_1-why-this-cycle",[118],{"type":35,"value":13},{"type":26,"tag":27,"props":120,"children":121},{},[122],{"type":35,"value":123},"The team aligned on inventory\u002Fvisibility as the first unlock — before governance, before enforcement. The current qcontrol prototype has one blended \"agent inventory\" (directories of machines, harnesses, surface areas, MCP servers, tools & skills, with users mixed in) plus an AI-generated placeholder Teams & Users page. The call settled a restructure:",{"type":26,"tag":27,"props":125,"children":126},{},[127],{"type":26,"tag":31,"props":128,"children":129},{},[130],{"type":35,"value":131},"Inventory splits into two fundamental problems, two pages:",{"type":26,"tag":133,"props":134,"children":135},"ol",{},[136,147],{"type":26,"tag":137,"props":138,"children":139},"li",{},[140,145],{"type":26,"tag":31,"props":141,"children":142},{},[143],{"type":35,"value":144},"Inventory",{"type":35,"value":146}," — the technology view. What agents\u002Fharnesses, providers, models, and surface are in use across the fleet, and how much of it we actually monitor.",{"type":26,"tag":137,"props":148,"children":149},{},[150,155],{"type":26,"tag":31,"props":151,"children":152},{},[153],{"type":35,"value":154},"Users \u002F Devices",{"type":35,"value":156}," — the people view. Who is using AI, on what devices, with what accounts, at what intensity — and where the sensor is (and isn't) deployed.",{"type":26,"tag":27,"props":158,"children":159},{},[160],{"type":35,"value":161},"Fleet Overview becomes the story entry point: summary widgets that click through into each page.",{"type":26,"tag":114,"props":163,"children":165},{"id":164},"_2-decisions-settled-on-the-call",[166],{"type":35,"value":14},{"type":26,"tag":27,"props":168,"children":169},{},[170],{"type":35,"value":171},"These are agreed; wireframes should treat them as constraints, not open questions.",{"type":26,"tag":133,"props":173,"children":174},{},[175,190,200,210,241,251,261,271,281,298],{"type":26,"tag":137,"props":176,"children":177},{},[178,183,185],{"type":26,"tag":31,"props":179,"children":180},{},[181],{"type":35,"value":182},"Split the pages.",{"type":35,"value":184}," Agent inventory and personnel become two distinct dashboards. ",{"type":26,"tag":104,"props":186,"children":187},{},[188],{"type":35,"value":189},"(Tyler, ~56:00, all agreed)",{"type":26,"tag":137,"props":191,"children":192},{},[193,198],{"type":26,"tag":31,"props":194,"children":195},{},[196],{"type":35,"value":197},"Machines leave Inventory",{"type":35,"value":199}," and move to Users \u002F Devices. Inventory becomes all about the agents, harnesses, surface, activity, trends.",{"type":26,"tag":137,"props":201,"children":202},{},[203,208],{"type":26,"tag":31,"props":204,"children":205},{},[206],{"type":35,"value":207},"Users become a filter in Inventory",{"type":35,"value":209},", not a dimension of it. Drill path: Users \u002F Devices → pick Tyler → click Claude → land in Inventory double-filtered (user=Tyler, agent=Claude), with a link back. The inverse holds on the other page: agent attributes are filters there.",{"type":26,"tag":137,"props":211,"children":212},{},[213,218,220,225,227,232,234,239],{"type":26,"tag":31,"props":214,"children":215},{},[216],{"type":35,"value":217},"Consolidate around companies\u002Fproviders, not just agent instances.",{"type":35,"value":219}," Three levels: ",{"type":26,"tag":31,"props":221,"children":222},{},[223],{"type":35,"value":224},"vendor\u002Fcompany",{"type":35,"value":226}," (Anthropic) → ",{"type":26,"tag":31,"props":228,"children":229},{},[230],{"type":35,"value":231},"technology",{"type":35,"value":233}," (Claude Code, Claude Desktop) → ",{"type":26,"tag":31,"props":235,"children":236},{},[237],{"type":35,"value":238},"instances",{"type":35,"value":240}," (Tyler's Claude Code). One-to-many, rolled up. Provider data already exists in the underlying model.",{"type":26,"tag":137,"props":242,"children":243},{},[244,249],{"type":26,"tag":31,"props":245,"children":246},{},[247],{"type":35,"value":248},"Monitored vs unmonitored (detected-only) is first-class",{"type":35,"value":250}," — for agents on Inventory, and for people\u002Fdevices coverage on Users \u002F Devices.",{"type":26,"tag":137,"props":252,"children":253},{},[254,259],{"type":26,"tag":31,"props":255,"children":256},{},[257],{"type":35,"value":258},"Accounts & licensing surface in Inventory.",{"type":35,"value":260}," We see the account referenced on every inference call, so we can show enterprise vs personal account usage per agent\u002Fuser. This feeds the standout enforcement use case (see §5).",{"type":26,"tag":137,"props":262,"children":263},{},[264,269],{"type":26,"tag":31,"props":265,"children":266},{},[267],{"type":35,"value":268},"Sessions detach from Inventory.",{"type":35,"value":270}," A session belongs to a user: Users \u002F Devices → user → their sessions. Inventory stays a high-level rollup.",{"type":26,"tag":137,"props":272,"children":273},{},[274,279],{"type":26,"tag":31,"props":275,"children":276},{},[277],{"type":35,"value":278},"Fleet Overview = summary widgets + click-through.",{"type":35,"value":280}," e.g. an agent-visibility widget → Inventory; a team-deployment-status widget → Users \u002F Devices; aggregated token usage per model per time period.",{"type":26,"tag":137,"props":282,"children":283},{},[284,289,291,296],{"type":26,"tag":31,"props":285,"children":286},{},[287],{"type":35,"value":288},"Relationships must survive the split.",{"type":35,"value":290}," Workstation ↔ identity ↔ agent linkage is the compliance\u002Faccountability backbone: ",{"type":26,"tag":104,"props":292,"children":293},{},[294],{"type":35,"value":295},"\"we need to maintain the relationships… that's the important part… for compliance and accountability.\"",{"type":35,"value":297}," The two pages are two lenses on one graph, not two silos.",{"type":26,"tag":137,"props":299,"children":300},{},[301,306],{"type":26,"tag":31,"props":302,"children":303},{},[304],{"type":35,"value":305},"Local vs centralized mode degrades gracefully.",{"type":35,"value":307}," In local (single-machine) mode, Users\u002FDevices and machines drop away entirely — you just see your own agents, harnesses, surface, trends.",{"type":26,"tag":114,"props":309,"children":311},{"id":310},"_3-page-inventory",[312],{"type":35,"value":15},{"type":26,"tag":27,"props":314,"children":315},{},[316],{"type":26,"tag":31,"props":317,"children":318},{},[319],{"type":35,"value":320},"User stories (verbatim-adjacent from the call):",{"type":26,"tag":322,"props":323,"children":324},"ul",{},[325,330,335,340,345,350],{"type":26,"tag":137,"props":326,"children":327},{},[328],{"type":35,"value":329},"\"I wanna know what agents and harnesses are being used fleet-wide\" — including surprises (\"are people running Hermes somewhere?\")",{"type":26,"tag":137,"props":331,"children":332},{},[333],{"type":35,"value":334},"\"How many of those are we actually monitoring versus just detected?\"",{"type":26,"tag":137,"props":336,"children":337},{},[338],{"type":35,"value":339},"\"What models are we actually using?\" — even within one vendor (Fable vs Opus)",{"type":26,"tag":137,"props":341,"children":342},{},[343],{"type":35,"value":344},"\"What licensing do we have for each — personal or enterprise account?\"",{"type":26,"tag":137,"props":346,"children":347},{},[348],{"type":35,"value":349},"What's the tool-calling surface: repos, MCP servers, tools, plugins, skills, external services",{"type":26,"tag":137,"props":351,"children":352},{},[353],{"type":35,"value":354},"Usage trends across the fleet — model mix shifting over time (Anthropic → OpenAI → Grok…)",{"type":26,"tag":27,"props":356,"children":357},{},[358],{"type":26,"tag":31,"props":359,"children":360},{},[361],{"type":35,"value":362},"What the page should make obvious:",{"type":26,"tag":322,"props":364,"children":365},{},[366,371,381,386,391,396],{"type":26,"tag":137,"props":367,"children":368},{},[369],{"type":35,"value":370},"Unique agents\u002Fharnesses; monitored vs unmonitored",{"type":26,"tag":137,"props":372,"children":373},{},[374,379],{"type":26,"tag":31,"props":375,"children":376},{},[377],{"type":35,"value":378},"Providers\u002Fcompanies rollup",{"type":35,"value":380}," (Anthropic, OpenAI, xAI…) with technology → instance drill-down",{"type":26,"tag":137,"props":382,"children":383},{},[384],{"type":35,"value":385},"Models in use, with usage trends over time (tokens\u002Fdollars toggle)",{"type":26,"tag":137,"props":387,"children":388},{},[389],{"type":35,"value":390},"Accounts in use per provider — enterprise vs personal flagged; unknown account IDs stand out (\"the ops person knows what the corporate account is; other account IDs alone is pretty good signal\")",{"type":26,"tag":137,"props":392,"children":393},{},[394],{"type":35,"value":395},"Surface directories: MCP servers, tools, plugins, skills, repos, external services",{"type":26,"tag":137,"props":397,"children":398},{},[399,401,406],{"type":35,"value":400},"User available ",{"type":26,"tag":31,"props":402,"children":403},{},[404],{"type":35,"value":405},"only as a filter",{"type":35,"value":407}," (arrives pre-applied via drill-through)",{"type":26,"tag":27,"props":409,"children":410},{},[411,416],{"type":26,"tag":31,"props":412,"children":413},{},[414],{"type":35,"value":415},"Explicitly removed:",{"type":35,"value":417}," machines, per-user listings, sessions, the experimental risk posturing (\"we don't have these flushed out, we should probably remove them from a starting point\").",{"type":26,"tag":114,"props":419,"children":421},{"id":420},"_4-page-users-devices",[422],{"type":35,"value":16},{"type":26,"tag":27,"props":424,"children":425},{},[426],{"type":26,"tag":31,"props":427,"children":428},{},[429],{"type":35,"value":430},"User stories:",{"type":26,"tag":322,"props":432,"children":433},{},[434,439,451,463,475,480,485],{"type":26,"tag":137,"props":435,"children":436},{},[437],{"type":35,"value":438},"\"What's the deployment status of Qpoint sensor across my user base?\" — Mark P's own phrasing, the #1 story",{"type":26,"tag":137,"props":440,"children":441},{},[442,444,449],{"type":35,"value":443},"\"Who has the sensor installed, and who doesn't — ",{"type":26,"tag":31,"props":445,"children":446},{},[447],{"type":35,"value":448},"and that should be actionable",{"type":35,"value":450},"\" (\"oh crap, Alexis — investigate that\")",{"type":26,"tag":137,"props":452,"children":453},{},[454,456,461],{"type":35,"value":455},"Coverage needs a denominator: integrate a ",{"type":26,"tag":31,"props":457,"children":458},{},[459],{"type":35,"value":460},"definitive source of truth",{"type":35,"value":462}," for people and workstations (identity management + MDM) rather than recreating it. IT ops will want to connect their existing systems and pull the full workstation\u002Fendpoint list.",{"type":26,"tag":137,"props":464,"children":465},{},[466,468,473],{"type":35,"value":467},"Per user (or team): which agents\u002Fharnesses and providers they use, corporate vs personal account, tokens\u002Fdollars (toggleable — \"both are just ways of gauging the flow\"), intensity of usage, and an ",{"type":26,"tag":31,"props":469,"children":470},{},[471],{"type":35,"value":472},"LLM-derived summary of what they're doing",{"type":35,"value":474}," (\"Rob uses 3 harnesses primarily for document creation and workflow; Kamal uses 3 harnesses all for code generation in the following repos\")",{"type":26,"tag":137,"props":476,"children":477},{},[478],{"type":35,"value":479},"For engineers specifically: the concrete tool-calling surface (MCP servers hit, repos touched) alongside the AI summary — \"we have more specific actual data in our database about the tool calls\"",{"type":26,"tag":137,"props":481,"children":482},{},[483],{"type":35,"value":484},"Sessions live here: user → device → agent → sessions, flowing down",{"type":26,"tag":137,"props":486,"children":487},{},[488],{"type":35,"value":489},"Management-facing angle: who's using AI heavily vs barely (\"someone wants to know who's not using AI very much… it's still interesting to management\")",{"type":26,"tag":27,"props":491,"children":492},{},[493,498],{"type":26,"tag":31,"props":494,"children":495},{},[496],{"type":35,"value":497},"Structure:",{"type":35,"value":499}," user\u002Fdevice is the row; drill-down reveals endpoints → agents on them; cross-links jump to Inventory pre-filtered.",{"type":26,"tag":114,"props":501,"children":503},{"id":502},"_5-the-standout-use-case-thread-through-both-pages",[504],{"type":35,"value":17},{"type":26,"tag":27,"props":506,"children":507},{},[508,513,515],{"type":26,"tag":31,"props":509,"children":510},{},[511],{"type":35,"value":512},"Enterprise vs personal account separation → blocking personal accounts.",{"type":35,"value":514}," Mark P's strongest reaction on the call (\"That's such a great use case\"): ",{"type":26,"tag":104,"props":516,"children":517},{},[518],{"type":35,"value":519},"\"None of our IP is ever going to a personal ChatGPT account, which doesn't have the same data protections… because we have an enterprise agreement with them.\"",{"type":26,"tag":27,"props":521,"children":522},{},[523,525,530],{"type":35,"value":524},"For this cycle it is an ",{"type":26,"tag":31,"props":526,"children":527},{},[528],{"type":35,"value":529},"observability story, not an enforcement UI",{"type":35,"value":531},": show account\u002Flicensing visibility clearly enough that the block-personal-accounts control is the obvious next step. Observation mode before enforcement — \"super important for the journey.\"",{"type":26,"tag":114,"props":533,"children":535},{"id":534},"_6-open-questions-wireframes-may-explore-must-not-silently-decide",[536],{"type":35,"value":18},{"type":26,"tag":322,"props":538,"children":539},{},[540,550,566,576,586],{"type":26,"tag":137,"props":541,"children":542},{},[543,548],{"type":26,"tag":31,"props":544,"children":545},{},[546],{"type":35,"value":547},"Terminology: agent vs harness.",{"type":35,"value":549}," Used interchangeably today; call leaned \"AI Agents\" (or \"AI agents \u002F harnesses\") for now. Sensor vs monitor for the endpoint software — \"sensor\" is winning.",{"type":26,"tag":137,"props":551,"children":552},{},[553,558,560,564],{"type":26,"tag":31,"props":554,"children":555},{},[556],{"type":35,"value":557},"Name for the people page.",{"type":35,"value":559}," \"Users \u002F Devices\", \"Teams & Users\", \"Personnel\" all floated. Working title: ",{"type":26,"tag":31,"props":561,"children":562},{},[563],{"type":35,"value":154},{"type":35,"value":565},".",{"type":26,"tag":137,"props":567,"children":568},{},[569,574],{"type":26,"tag":31,"props":570,"children":571},{},[572],{"type":35,"value":573},"Is agents the right starting point, or workstations\u002Fendpoints?",{"type":35,"value":575}," Mark P raised it; the split answers it partially (both are entry points), but Fleet Overview widget hierarchy should take a position.",{"type":26,"tag":137,"props":577,"children":578},{},[579,584],{"type":26,"tag":31,"props":580,"children":581},{},[582],{"type":35,"value":583},"\"Fleet\" terminology",{"type":35,"value":585}," — does fleet mean where the sensor is installed, or the whole org? Affects coverage framing.",{"type":26,"tag":137,"props":587,"children":588},{},[589,594],{"type":26,"tag":31,"props":590,"children":591},{},[592],{"type":35,"value":593},"Identity attribution edges:",{"type":35,"value":595}," will it always be obvious whose behalf an agent acts on? Wireframes should show an unattributed\u002Funknown-identity state, not assume perfect mapping.",{"type":26,"tag":114,"props":597,"children":599},{"id":598},"_7-secondary-ideas-captured-not-this-cycles-pages-worth-parking",[600],{"type":35,"value":19},{"type":26,"tag":322,"props":602,"children":603},{},[604,614,624,634],{"type":26,"tag":137,"props":605,"children":606},{},[607,612],{"type":26,"tag":31,"props":608,"children":609},{},[610],{"type":35,"value":611},"Gamified adoption checklist",{"type":35,"value":613}," as an IT-ops dashboard: control plane installed → in MDM → deployed to workstations → observing → (later) enforcing. Doubles as a customer-success stickiness signal (\"where do companies get stuck\"). Could appear as a Fleet Overview widget in a later iteration.",{"type":26,"tag":137,"props":615,"children":616},{},[617,622],{"type":26,"tag":31,"props":618,"children":619},{},[620],{"type":35,"value":621},"Tier gating",{"type":35,"value":623}," (freemium up to N endpoints; compliance frameworks\u002Fenforcement in paid tiers) — pricing framing, not UI for this cycle.",{"type":26,"tag":137,"props":625,"children":626},{},[627,632],{"type":26,"tag":31,"props":628,"children":629},{},[630],{"type":35,"value":631},"Docs generated from walkthrough transcripts",{"type":35,"value":633}," — ops idea, out of scope.",{"type":26,"tag":137,"props":635,"children":636},{},[637,642],{"type":26,"tag":31,"props":638,"children":639},{},[640],{"type":35,"value":641},"Windows support",{"type":35,"value":643}," is a deployment blocker for the advisor persona (macOS-only today; Kamal on the installer\u002Ftapping) — context, not a design task.",{"type":26,"tag":114,"props":645,"children":647},{"id":646},"_8-personas",[648],{"type":35,"value":20},{"type":26,"tag":322,"props":650,"children":651},{},[652,662,672],{"type":26,"tag":137,"props":653,"children":654},{},[655,660],{"type":26,"tag":31,"props":656,"children":657},{},[658],{"type":35,"value":659},"IT ops",{"type":35,"value":661}," (primary first target): deploys the sensor, owns coverage, connects MDM\u002Fidentity. Users \u002F Devices is their home page.",{"type":26,"tag":137,"props":663,"children":664},{},[665,670],{"type":26,"tag":31,"props":666,"children":667},{},[668],{"type":35,"value":669},"Security \u002F compliance",{"type":35,"value":671},": needs the inventory before any governance conversation; cares about accounts\u002Flicensing, unknown agents, relationships for accountability.",{"type":26,"tag":137,"props":673,"children":674},{},[675,680],{"type":26,"tag":31,"props":676,"children":677},{},[678],{"type":35,"value":679},"End user \u002F developer",{"type":35,"value":681},": the monitored; appears in the data, not the audience of these pages.",{"type":26,"tag":114,"props":683,"children":685},{"id":684},"_9-success-criteria",[686],{"type":35,"value":21},{"type":26,"tag":322,"props":688,"children":689},{},[690,700,705,710,715],{"type":26,"tag":137,"props":691,"children":692},{},[693,695],{"type":35,"value":694},"Two wireframed pages that a viewer can walk without narration and correctly answer: ",{"type":26,"tag":104,"props":696,"children":697},{},[698],{"type":35,"value":699},"what AI is in use, how much of it do we see, who's using what, and where isn't the sensor deployed?",{"type":26,"tag":137,"props":701,"children":702},{},[703],{"type":35,"value":704},"The company→technology→instance rollup reads at a glance; personal accounts are visually unmissable.",{"type":26,"tag":137,"props":706,"children":707},{},[708],{"type":35,"value":709},"Cross-filter drill paths (user → filtered Inventory; agent → filtered Users \u002F Devices) are clickable in the prototype.",{"type":26,"tag":137,"props":711,"children":712},{},[713],{"type":35,"value":714},"Coverage is framed against an external source of truth (identity\u002FMDM integration state visible), not just what the sensor happens to see.",{"type":26,"tag":137,"props":716,"children":717},{},[718],{"type":35,"value":719},"The pages feed directly into the product spec Mark Peterson is drafting and the Thursday follow-up review.",1794599408940]