index-overview
Design the qdash landing page — what the user is greeted with on login, resolving the Fleet Overview / Agent Inventory overlap.
Why
The dashboard's current landing page is Fleet Overview, but there's confusing overlap between it and Agent Inventory. Before jumping to mocks, we need to think through what the first screen should actually present: what the user needs to see right away, what's less important, and what can be abstracted into a clear overview without encumbering cognitive load with verbose detail.
Objective
Answer "what should the user be greeted with?" — an at-a-glance overview (health, security posture, other things that can go wrong) plus gateways into the rest of the dashboard — then design the landing page from that answer. "Done" looks like: a clear content hierarchy for the index page and one or more design-site page mocks expressing it.
Scope
../qcontrol/crates/qdash/ui/— current Fleet Overview + Agent Inventory, extended mid-cycle to/posture+/findingsfor the consolidation analysis (read-only input)- Prior work: c59/c60 inventory design (presence/coverage/at-risk band), c55 personas, c63 page-status, c64/c65 control-center
- Design-site page mocks in
app/pages/pages/+app/data/page-registry.ts
Key Changes
- Phase 0 (2026-08-14):
current-state.md— full qdash audit of the/landing (Fleet Overview) and/inventory, with a five-point overlap table (coverage, at-risk w/ mismatched thresholds, fleet counts, shadow AI, trend sparks) and the seam: Overview owns judgment, Inventory owns nouns.plan.md— five ranked landing questions, health taxonomy (security/monitoring/cost/operational/governance), four-phase plan, six pattern candidates with a starting recommendation (verdict → attention → gateway cards). - Decisions (2026-08-14, Mark): daily driver (exec summary parked as a separate future page) · scorecard demoted to a card · canonical coverage band lives on the landing · cycle ends at the mock (qdash port is a follow-on).
- Phase 1 (2026-08-14):
design-brief.md— discovered two prior concept rounds for this exact surface (/pages/fleet-overview-ideas, 8 concepts 2026-08-03;/pages/fleet-overview-ideas-2, 4 analogue mechanisms 2026-08-04), so Phase 2 pivoted from re-ideation to synthesis. Brief locks the five-band hierarchy: verdict sentence → exception queue (empty when healthy, by design) → relocated c59 7b trust & presence band → gateway cards incl. the demoted "Vs. goals" card → quiet footer with install funnel. - Phase 2/3 merged — v1 (2026-08-14):
/pages/index-overview-v1built and registered (overview group) — the composed daily-driver landing with both designed states behind a render toggle (Meridian Monday attention day / all clear), consistent c59 numbers (34 · 39 · 87% · 5 shadow · at-risk 4), unified at-risk definition, and a composition-sources note on the page. Smoke-checked: 200, clean dev log. - Overlap-analysis thread (2026-08-14):
posture-findings-overlap-analysis.md— landing vs/posturevs/findingsfriction named (three verdicts no master, three at-risk definitions, coverage told 4×, config risk has no action surface). Recommendation: dissolve/posture— factors become triageable configuration findings in a unified Security worklist with a posture-analytics band, installs table → Inventory, score judgment → landing. Plus the Estate-strip proposal (asset deltas as judgment). - v2 (2026-08-14):
/pages/index-overview-v2built and registered — v1 + the analysis applied: estate strip with deltas in the trust band (footer keeps only the funnel), "Sandbox disabled on marcus's Claude Code" configuration finding in the queue (verdict counts 5), Findings + Posture gateway cards consolidated into one wide Security card (worklist counts + score as registers of one surface), at-risk tile links "→ Security". v1 untouched for side-by-side. Smoke-checked: 200, clean log. - Verdict-ideas thread (2026-08-14, Mark: "don't love the 5 things needing attention"):
/pages/index-verdict-ideas— five verdict+queue treatments against the same Monday story: (1) grouped-count family chips replacing the enumerating sentence, (2) worst-thing-first hero with "and 4 more" expander, (3) queue-as-greeting with slim status line and no verdict layer, (4) Act·Decide·Review verb grouping matching the triage workflow, (5) since-Friday delta verdict with NEW/AGING row badges. Shared parameterized QueueRow; comparison notes on-page. Registered, smoke-checked 200 with all five sections rendering. - Queue-ideas thread (2026-08-14, Mark's screenshot critique — the row layer-cake): diagnosis: each queue row spent four attention devices (left border + family tag + NEW badge + toned link) inside its own bordered card.
/pages/index-queue-ideas— five compact treatments, one device per row: (1) hairline list (no cards, severity dot only, ~half height), (2) one-card dot rail (queue as a single object, rail as severity map), (3) mini table (aligned sev/item/age/action columns), (4) hero + ticker (worst item is the only card, rest are expandable chips — two lines total), (5) briefing lines (glyph-led prose, no containers). Registered, smoke-checked 200. - Glance-ideas thread (2026-08-14, Mark: broader, more visual, more abstraction — details behind a click):
/pages/index-glance-ideas— five visual-first attention abstractions of the Monday story: (1) annunciator panel (fixed domain cells, lit vs dim ✓, cockpit language), (2) fleet pixel grid (34 cells + 5 dashed shadow ghosts — attention as where, scales past lists), (3) domain health meters (equalizer skyline as the verdict), (4) week strip (events positioned in time, the aging config item as a 3-week amber tail — age is length), (5) pixel-pawn lineup (brand-native: sofia errored, felix needs-input, kai asleep, chen as dashed ghost — attention as who needs help). Each with hover identity + click-to-item; summary owns the surface. Registered, smoke-checked 200 clean. - Inventory-card thread (2026-08-27, Mark's manual three-card design — Compliance · SLA Findings · Inventory with a body-figure estate):
inventory-card-possibility-space.md— the health seam answered (findings = adjudicated health per c79's condition model; the durable seam is register not topic: Inventory is the physical exam, Findings the diagnosis; the mock's "Un-allowed Skill Detected" is a condition and belongs to Findings, Inventory lights the body part and links). Exhaustive 15-category taxonomy of inventory-card content, every idea tagged with backing API fields and buildability tier (T1 live / T2 derivable / T3 needs-backend). Body-figure ruling: color = visibility/vetting state, not posture — torso/MCP-arm/legs can light honestly today, head/hips ship calm until anasset_vettingregistry exists (the named smallest backend ask). Ranked recommendation: estate register (weight) · coverage hero absolute (31/39) · one unvetted-entry tone line · figure · coverage spark; cuts: denied/posture/fabricated sparks/cost/"Repos" label. Decisions (Mark): doc first, mock later · content explored freely, figure as one treatment. - Three-card-mock build (2026-08-27):
/pages/index-three-cards-v1built and registered (overview group) — Mark's two-state manual design at Meridian numbers: derived Full/Partial Visibility verdict (39/39 vs 34/39·87%, toggle flips only what visibility owns — Compliance and SLA read the same world in both states, the seam in action), placeholderInventoryBodyFigurecomponent (per-part tone API,data-partswap contract for Mark's SVG), estate rows with authored 7d deltas (the one authored value, noted on-page), intake-language exceptions footer (5 shadow · unvetted pg-tools, straight from fixtures), derived compliance scores (83%, fixture's two frameworks replacing the design's five), and fully derived SLA deadlines (calendar-day math; nothing near breach in this world, so the design's deadline inks honestly don't fire). Captured both states (c68-three-cards-{partial,full}.png). Smoke: 200, both states verified visually. Round 2 (Mark's four changes): Go ▶ on all three cards · SLA card made consistent with findings-regroup-v2 by extractingLifecycleFindingsDigest(severity box + remediation-deadlines list) from regroup-v2's policy expansion — both surfaces now wear the same organ (regroup-v2 re-verified rendering identically post-extraction) · verdict font-exbold · Compliance % Inter black (mono dropped).
Open Threads
- Pick the attention treatment: three ideas rounds await Mark's reaction — verdict language (
/pages/index-verdict-ideas), compact queue (/pages/index-queue-ideas), visual abstraction (/pages/index-glance-ideas). Next step: compose the picks intoindex-overview-v3. - Consolidation decision: the posture/findings recommendation (dissolve
/posture, configuration findings in a unified Security worklist) is applied in the v2 mock but not yet ratified as the qdash direction. - Parked (Mark): an executive-summary surface as a separate page, out of c68 scope.
- Pawn-lineup visual check: pawn art inlines client-side; the lineup's states/ghost treatment need one look in the browser.
- Inventory-card follow-on (Mark): resolved toward transcription — see three-card-mock thread below. Bake-off variants (concentration-first hero) remain available in
inventory-card-possibility-space.md§4. - Body-figure SVG (Mark):
index-three-cards-v1renders a placeholderInventoryBodyFigure; Mark's SVG drops in over the samedata-partids + tone API (app/components/inventory/BodyFigure.vue). - Tint divergence check (Mark): the built attention state tints MCP arm + legs (matching the Meridian exceptions: pg-tools unvetted, 5 shadow installs) instead of the design's Tools/Skills arm — deliberate, flagged in the page's composition notes; needs Mark's reaction.
Visual record
14 captures — heroes, page slices, and full-page renders. Click to view.














In the archive
Artifacts
- initial-prompt.md
- thread: glance-ideas — prompt
- thread: inventory-card — prompt + plan
- thread: posture-findings-overlap — prompt
- thread: queue-ideas — prompt
- thread: three-card-mock — prompt + plan
- thread: verdict-ideas — prompt
- current-state.md
- design-brief.md
- initial-prompt.md
- inventory-card-possibility-space.md
- plan.md
- posture-findings-overlap-analysis.md