initial-plan.md
c15 — Initial Plan: Agent Dashboard
This is the executable master plan for the c15 cycle, produced from
initial-prompt.md. Phase 1 is complete (see
phase1-analysis.md). Phases 2 and 3 are laid out here for a
second agent to execute:
- Phase 2 — Wireframing: a divergent lo-fi pass that explores alternative fixes to the Phase 1 deficits (both net-new governance pages and in-place reframes).
- Phase 3 — Mockups: the winning wireframe directions graduate to hi-fi —
m1constrained to existing../q-nuxt-layercomponents,m2unconstrained.
Both phases are scoped from the Phase 1 findings.
Context
Qpoint is shifting toward agent governance. The existing product wireframe (wf1, in
../app.qpoint.io, http://localhost:7878/) is a ~45-page API/traffic observability app
with only an emerging agent angle (MCP clients, dataset views, proxy egress control). The
cycle re-evaluates that app through an agent-governance lens for three mandate-owners —
Security, Finance, Executive — and then mocks up a stronger version.
Headline conclusions from Phase 1 (drive Phase 2):
- Security is structurally well-served but speaks "traffic/PII," not "agents/LLMs."
- Finance is unserved — the app measures bytes, never tokens or dollars. Biggest gap.
- Executive value is scattered across operator pages; no board-level posture surface.
- The app is missing six net-new exec/finance pages; the top three close the mandate.
Phase 1 — Analysis ✅ (complete)
Delivered: phase1-analysis.md — per-page evaluation (purpose +
Security/Finance/Executive 0–5 scores + opportunities for all ~45 pages), per-persona
evaluation, additional-personas recommendation, and the net-new exec/finance page gaps.
Carry-forward decisions for Phase 2:
- Keep Security / Finance / Executive as headline stakeholder columns; add Engineering/Platform and Compliance/Privacy as secondary columns (they own real pages and the pivot raises their importance).
- The structural fix that lifts the whole app: an agent / model / identity dimension (vs. today's Vendor/Client/Endpoint pivot). Carry this into every mockup.
Phase 2 — Wireframing: explore fixes (for the second agent)
A divergent lo-fi pass that explores alternative fixes to the Phase 1 deficits before
committing to hi-fi. Covers both net-new governance pages and in-place reframes of the
highest-value existing pages. Each problem gets 2–3 divergent wireframe directions to
compare; the winning direction per problem graduates to the Phase 3 mockups. Lo-fi Wire*
components, grey aesthetic, definePageMeta({ layout: 'wireframe' }).
P1 — RESOLVED → Direction D (persona-partitioned)
P1 explored four IA bets (feature governance-ia-v1: dedicated-section,
dashboard-reframe, lens-overlay, persona-partitioned). Decision: Direction D —
persona-partitioned, with all five seats first-class (Security, Finance, Executive,
Engineering, Compliance) and pure-D landings (each seat = an at-a-glance strip + a flat
grid of its page-cards; content duplicated across seats where a page serves more than one).
Consequence for P2–P5: the deep pages below are no longer organized by feature — they
become the deep pages of the persona app (new feature persona-app-v1), reachable from
the seat that owns them and re-used (duplicated) across seats per the matrix in
persona-partitioned.vue. The persona app shell switches seats client-side; deep pages
carry a persona breadcrumb + back-to-seat link.
Problems (now persona-app deep pages) & candidate divergent directions
P1 — Where does governance live? (IA / structural — do first; it frames the rest)
- (a) Dedicated section — a new top-level "Agent Governance" area with its own pages.
- (b) Dashboard reframe — recast the existing overview into three stakeholder lanes (Egress / Spend / Posture); governance becomes the home, not a sub-section.
- (c) Governance lens overlay — a toggle that re-pivots existing traffic/inventory pages by agent and overlays posture/spend; no new section (minimal-change direction).
P2 — Executive posture (net-new: Posture Board; folds in the Risk Register)
- (a) Governance-index scorecard — one headline score + drill-down, board-deck style.
- (b) Coverage & risk control-tower — health dials + open findings + egress stance.
- (c) State-of-governance report — narrative sections + trends, exportable board report.
P3 — Finance spend (net-new Spend Report + bytes→token/$ reframe)
- (a) Spend-by-agent ledger — table-first chargeback view.
- (b) Spend-by-vendor breakdown — budget burn by LLM provider.
- (c) Budget & forecast — trend + burn-down + per-agent spend ceilings/alerts.
P4 — Agent identity (net-new Registry + agent dimension on analytics)
- (a) Agent registry — list of every agent (owner, model, creds, scope, risk, spend).
- (b) Agent profile — one agent's full story (egress, data, spend, policy) + thin index.
- (c) Agent-dimension retrofit — add "by agent" to the existing clients/traffic pages
(minimal-change direction; touches the shared
GroupBy.vuepivot).
P5 — Egress & data control (net-new Egress Matrix + Sensitive-Data→LLM flow)
- (a) Allow/deny matrix — agents × destinations grid, default-deny posture.
- (b) Data-flow / sankey — agent→model sensitive-data flows, allowed/blocked overlay.
- (c) Policy-pack list — installable governance rule bundles + per-rule coverage.
Directions are starting points, not locked. Confirm which problems to explore and how many directions each before building. Recommended priority: P1 first (it gates the rest), then P2–P4 (the three primary stakeholders), then P5.
Cheap in-place wins (no wireframe needed — call out as direct fixes in briefs)
Re-enable the commented-out Sensitive-Data / Last-Used columns; fill the /orgs/configure
Capabilities/Hosting stubs; make the adapter delete verified; add the MCP "All-access"
warning badge; add an agent option to traffic/components/usage/GroupBy.vue.
Mechanics
- Files:
app/pages/c15/wireframes/wf1/<problem>-v1/<direction>.vue— one feature dir per problem, one page per divergent direction (e.g.posture-board-v1/scorecard.vue,control-tower.vue,report.vue). definePageMeta({ layout: 'wireframe' });Wire*components only (grey borders, dashed placeholders, no shadows);WireViewTogglefor in-page mode/section switches; reference.claude/skills/visualization-sketches.mdfor the matrix / sankey / flow sketches (P5) and.claude/skills/wire-components.mdfor primitives.- Briefs: one goal-oriented brief per problem in
cycles/c15.agent-dashboard/briefs/(via/write-brief), each naming the deficit it fixes, the stakeholders served, and the Phase 1 §-seed; generate with/wireframe(wireframe-builder, opus). - Registry:
type: 'wireframe',iteration: 'wf1'; addapp/pages/c15/index.vuegallery listing the wireframe features. - Review & choose: run
/reviewper direction, then pick the winning direction per problem to carry into Phase 3.
Phase 3 — Mockups (for the second agent)
Two hi-fi passes of the winning Phase 2 wireframe directions. m1 uses only
existing ../q-nuxt-layer components; m2 is unconstrained and may invent components.
The point is a deliberate comparison: what the current design system can express vs. what
it should be able to express.
Page set
The chosen wireframe direction per problem from Phase 2 (which themselves came from Phase 1 §6). If Phase 2 is skipped or deferred, fall back to the recommended lead set:
- Agent Governance Posture Board (Executive, Security) — governed-agent count, coverage %, egress stance (default-deny on/off), open high-risk findings, a governance index trended over time. The net-new executive overview the prompt asks about.
- Agent Spend & Cost Report (Finance, Executive) — token/$ spend per agent per LLM vendor, budget burn, MoM trend, top cost drivers. Closes the Finance gap.
- Agent Inventory / Registry (Security, Executive) — every agent as an identity: owner, model/runtime, credentials, data-scope, risk score, last seen, spend.
Strong follow-ons (build if scope allows): Sensitive-Data → LLM Flow; Agent Egress Control Matrix; Agent Risk Register / board report.
m1 — constrained pass (existing ../q-nuxt-layer components only)
Map each target page to the real catalog. Known-good building blocks:
- KPIs / metrics:
DataStat,DataMetric*(Base/Simple/Compact/InlineTrend/Spark),DataKeyVal,DataTrendDirection,UxLabelText. - Trends / charts:
DataChartUI(Chart.js line/bar),DataSparkChart,DataTimeline,DataPercentBar/UxPercentBar. - Health / risk:
HealthDial,HealthDialSummary,HealthSummaryItem,SecuritySeverity,SecurityPolicyCard,SecurityViolationsTable,SecurityDataFlow. - Tables / lists:
UxTableList*(Index/Header/ColumnHeader/Search/Sorter/ToggleRow/ ExpandRow/Totals),UxListItem. - Layout / chrome:
LayoutGrid,UxStretchBox,UxHoverBox,UxToggleCard,UxBoxTag,UxTag,UxButton,UxModal,Icon*.
Log where existing components fall short (per the q-nuxt-layer audit) — this gap list is the seed for m2:
- No donut/pie or stacked charts (Spend breakdown by vendor/agent wants these).
- No risk matrix / 2D scatter (posture quadrant).
- No filter / faceted panel or date-range picker.
- No breadcrumb, tooltip/popover, avatar group, or icon+text badge combo.
- No dashboard card-grid with built-in header/trend affordances (compose from
UxStretchBox+ metrics). UxTableListlacks column freeze / grouping / virtual scroll for large inventories.
Where m1 hits a gap, make the honest compromise (e.g. a horizontal DataPercentBar
stack instead of a donut) and annotate it so m2 has a clear target.
m2 — unconstrained pass (best component for each job)
Re-mock the same pages choosing the ideal representation, inventing components where m1 had to compromise. Propose each new component as a candidate addition to q-nuxt-layer (name
- one-line purpose + which m1 compromise it replaces), e.g.:
DataDonut,DataStackedBar,RiskMatrix,FilterPanel,DateRangePicker,AgentIdentityCard,GovernanceScorecard,EgressMatrix. Keep the design-system aesthetic (grape primary, leaf success, grey;rounded-8/12,shadow-sm) so the proposals read as native.
Mechanics (per bob-wire conventions)
- Files:
app/pages/c15/mockups/m1/<feature>-v1/<page>.vueandapp/pages/c15/mockups/m2/<feature>-v1/<page>.vue. Suggested feature slugs:posture-board-v1,agent-spend-v1,agent-inventory-v1(+ follow-ons). - Each page:
definePageMeta({ layout: 'mockup' }); real components only (noWire*); realistic placeholder data (named agents, real LLM vendors, plausible token/$ figures); no API calls or real auth. - Registry: add entries to
app/data/wireframe-registry.tswithtype: 'mockup'anditeration: 'm1' | 'm2'. Per project convention, when running mockup-builder agents in parallel they write.vueonly and output registry entries in their report; the orchestrator batches the registry edits after all runs complete. - Gallery: add
app/pages/c15/index.vuelisting the c15 features (registry is flat; each cycle gallery lists its own). - Use
/mockup <brief-or-description>(mockup-builder, opus) for generation; reference.claude/skills/ux-components.mdand.claude/skills/visualization-sketches.md.
Build order
Phase 2 — wireframing
- Confirm which problems (P1–P5) to explore and how many directions each (default: P1 first, then P2–P4; ~2–3 directions per problem).
- Write one goal-oriented brief per problem in
cycles/c15.agent-dashboard/briefs/(via/write-brief), each naming the deficit, stakeholders, and Phase 1 §-seed. - Build the divergent
wf1wireframes (via/wireframe); batch the registry entries; addc15/index.vue. - Run
/reviewper direction; pick the winning direction per problem with the requester.
Phase 3 — mockups
5. For each winning direction, build m1 (constrained) and capture the component-gap list.
6. Build m2 (unconstrained) for the same pages; document proposed new components.
7. Batch registry entries; update c15/index.vue; run /review on each.
Verification
npm run dev; visit/c15gallery and each wireframe / mockup page; confirm clickable and styled.- Wireframes use
Wire*only (grey/dashed aesthetic); divergent directions per problem are visibly comparable side by side. - Mockups use real components — grep the mockup files for
Wire→ zero matches. npm run buildpasses.- Side-by-side m1 vs m2 for each page makes the "what the design system is missing" case explicit, with m2's proposed components listed as q-nuxt-layer candidates.
Open questions for the requester
- Which Phase 2 problems (P1–P5) to explore, and how many divergent directions each.
- Should the secondary persona columns (Engineering/Platform, Compliance/Privacy) appear in the wireframe/mockup framing, or stay analysis-only?
- Are real spend/token figures available to ground the Spend & Cost Report, or use plausible placeholders?