Files
waggle-os/docs/ux-refactor/deltas/coverage-check.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

21 KiB
Raw Permalink Blame History

Coverage Check — Waggle OS UX Refactor (Adversarial Completeness Audit)

Role: Coverage Critic. This document is a skeptical, traceability audit of whether the UX-refactor analysis (22 gap cards S00S21 + 3 deltas) is complete against the PRD's three contract axes: §12 screens (121), §16 API endpoints (65), and §26 Definition of Done (11). It also flags PRD surfaces that fall outside the §12 numbered-screen list (§9.2/§11 objects, §13 journeys, §17 RBAC, §10.4 Extend nodes) that no card owns.

Method: every row is grounded in the PRD, the gap cards, backend-api-delta.md, and the source-grounded _inventory/backend-routes.md §16 cross-reference (which the delta draws from). "COVERED" = some card/delta explicitly owns the requirement with a build target. "GAP" = skipped, implicit-only, or owned by no artifact.

Sources read: PRD docs/Waggle_OS_UX_Refactor_Master_Handoff_Package/Waggle_OS_UX_Refactor_PRD.md (§9, §10, §11, §12 lines 371662, §13 lines 666832, §14, §16 lines 10601158, §17, §19, §26 lines 14851500); all docs/ux-refactor/gap-cards/S00S21.md; docs/ux-refactor/deltas/{backend-api-delta, design-system-delta,shared-types-delta}.md; docs/ux-refactor/_inventory/{backend-routes,frontend, substrate-types}.md.


Table 1 — PRD Screens (the 21 numbered screens + AppShell)

The 21 numbered screens are the blueprint deck expansion of PRD §12.1§12.13. AppShell (S00) is the chrome the PRD §1 spine mounts inside (not a §12 screen, but required by §19.1 + §20.3). Verdict: all 21 numbered screens + the shell are COVERED by a gap card. No numbered screen is missing.

# PRD screen (§ ref) Status Gap card
AppShell / IA / Navigation (§1, §19.1, §20.3) COVERED S00 appshell-ia
1 Home Cockpit (§12.1) COVERED S01 home-cockpit
2 Workspace Desktop (§12.2) COVERED (with sub-gaps, see notes) S02 workspace-desktop
3 Command Center (Ctrl+K) (§12.3) COVERED S03 command-center
4 Memory Center (§12.4) COVERED S04 memory-center
5 Artifact Center (§12.5) COVERED S05 artifact-center
6 Skills Hub + Skill Builder (§12.6) COVERED S06 skills-hub (+ S19 skill-builder)
7 Connector Hub (§12.7) COVERED S07 connector-hub
8 MCP Hub (§12.8) COVERED S08 mcp-hub
9 Agent Center + Agent Builder (§12.9) COVERED S09 agent-center (+ S18 agent-builder)
10 Automation Center + Builder (§12.10) COVERED S11 automation-center (+ S20 automation-builder)
11 Team Workspace (§12.11) COVERED S10 team-workspace
12 Onboarding · First Launch (§12.12 step 1) COVERED S12 first-launch
13 Onboarding · Who Are You (§12.12 step 2) COVERED S13 who-are-you
14 Onboarding · Tool Discovery (§12.12 step 3) COVERED S14 tool-discovery
15 Onboarding · Memory Import (§12.12 step 4) COVERED S15 memory-import
16 Onboarding · Memory Review (§12.12 step 5) COVERED S16 memory-review
17 Onboarding · Workspace Creation (§12.12 step 6) COVERED S17 workspace-creation
18 Agent Builder (§12.9 stepper) COVERED S18 agent-builder
19 Skill Builder (§12.6 stepper) COVERED S19 skill-builder
20 Automation Builder (§12.10 stepper) COVERED S20 automation-builder
21 Marketplace / Extend Waggle (§12.13) COVERED S21 marketplace-extend

Note — Home Cockpit (§12.12 step 7 "Home Cockpit"). The 7th onboarding step is "land in Home Cockpit," which is S01 (not a separate screen). Correctly folded. ✔

Screen-level sub-gaps (not whole-screen misses, but skipped requirements inside a covered screen):

  • G1 — Workspace Desktop tab parity (S02). PRD §12.2 (line 426 + 436) names 8 tabs: Overview, Chat, Research/Notes, Artifacts, Memory, Tasks, Timeline, Settings. The S02 card's tab bar (line 20) lists 7 and omits a Settings tab; the card later maps "Settings → existing component" (line 86) but never lists Settings in the §12.2 tab enumeration it reproduces. Minor, but the per-workspace Settings tab (needed by Journey 19 "Archive workspace" → "opens workspace settings") should be an explicit S02 tab, not implied.
  • G2 — Sessions as a first-class navigable object. PRD §9.2 + §11 glossary list Session as a primary product object ("Should be navigable and related to memory/artifacts"). No gap card surfaces a Sessions list/navigation view; S02 collapses sessions into the Timeline tab + Chat. The session substrate is rich and unused at the screen level (GET /api/workspaces/:id/sessions, /sessions/search, /sessions/:id/timeline, /sessions/:id/export all EXIST per _inventory/backend-routes.md:4246). Ctrl+K (S03) does federate session search, so sessions are findable but not browsable as an object class. PRD §13 Journey 3 ("user reviews… sessions") and the object hierarchy §9.2 imply a Sessions surface. Decide: explicit Sessions tab/sub-view in S02, or document that Timeline+Ctrl+K is the intended session UX and amend the §11 "navigable" claim.

Table 2 — PRD §16 Endpoints (all 65) — addressed in backend-api-delta.md?

backend-api-delta.md deliberately lists only NET-NEW + EXTEND backend work (49 of 65) and excludes the 16 EXISTS endpoints (they need FE wiring only). For audit completeness, "addressed" below = either carried in the delta's master table or explicitly enumerated as EXISTS-and-excluded in the delta's de-dup note (lines 4648) / counts cross-reference (line 372). Counts reconcile to the _inventory/backend-routes.md §16 table (16 EXISTS / 30 PARTIAL / 19 MISSING = 65).

§16 group PRD endpoint In delta? Disposition / where
16.1 Home GET /api/home/briefing YES NET-NEW home.ts (delta 1a)
16.1 POST /api/quick-capture YES EXTEND → memory write (delta 1a)
16.1 GET /api/home/overnight YES NET-NEW home.ts (delta 1a)
16.2 Workspaces GET /api/workspaces YES (EXISTS-excluded) exists; FE wiring only (delta line 46)
16.2 POST /api/workspaces YES EXTEND richer body (delta 2c)
16.2 GET /api/workspaces/:id YES (EXISTS-excluded) exists; FE wiring only
16.2 PATCH /api/workspaces/:id YES (EXISTS-excluded) exists (also PUT); FE wiring only
16.2 GET /api/workspaces/:id/state YES EXTEND thin route (delta 1b)
16.2 GET /api/workspaces/:id/context YES (EXISTS-excluded) exists; the Home/Workspace seed
16.2 GET /api/workspaces/:id/activity YES EXTEND thin alias (delta 1b)
16.3 Command GET /api/command/search?q= YES NET-NEW command.ts (delta 1c)
16.3 POST /api/command/execute YES EXTEND over /commands/execute (delta 1c)
16.3 GET /api/command/recent YES NET-NEW / client-derive (delta 1c)
16.3 GET /api/command/suggestions YES NET-NEW (delta 1c)
16.4 Memory GET /api/memory YES EXTEND alias (delta 2a)
16.4 GET /api/memory/:id YES NET-NEW thin read (delta 2a)
16.4 POST /api/memory YES EXTEND alias (delta 2a)
16.4 PATCH /api/memory/:id YES EXTEND (PATCH+bare id) (delta 2a)
16.4 POST /api/memory/:id/archive YES NET-NEW thin (delta 2a)
16.4 DELETE /api/memory/:id YES EXTEND alias (delta 2a)
16.4 POST /api/memory/merge YES NET-NEW (delta 2a)
16.4 GET /api/memory/graph YES (EXISTS-excluded) exists (knowledge.ts); FE wiring only (delta line 47)
16.5 Harvest POST /api/harvest/preview YES EXTEND (confidence+items) (delta 2a)
16.5 POST /api/harvest/commit YES EXTEND (selectedIds) (delta 2a)
16.5 GET /api/harvest/sources YES (EXISTS-excluded) exists; FE wiring only
16.5 POST /api/harvest/sources/:id/sync YES NET-NEW thin (delta 2d)
16.6 Artifacts GET /api/artifacts YES NET-NEW artifacts.ts (delta 2b)
16.6 POST /api/artifacts YES NET-NEW (delta 2b)
16.6 GET /api/artifacts/:id YES NET-NEW (delta 2b)
16.6 PATCH /api/artifacts/:id YES NET-NEW (delta 2b)
16.6 DELETE /api/artifacts/:id YES NET-NEW (delta 2b)
16.6 GET /api/artifacts/search-related?q= YES NET-NEW (delta 2b)
16.7 Agents GET /api/agents YES NET-NEW agents.ts (delta 3a)
16.7 POST /api/agents YES NET-NEW (delta 3a)
16.7 GET /api/agents/:id YES NET-NEW (delta 3a)
16.7 PATCH /api/agents/:id YES NET-NEW (delta 3a)
16.7 POST /api/agents/:id/run YES EXTEND → fleet/spawn (delta 3a)
16.7 POST /api/agents/:id/pause YES EXTEND → fleet pause (delta 3a)
16.7 GET /api/agents/:id/traces YES NET-NEW over execution_traces (delta 3a)
16.8 Skills GET /api/skills YES (EXISTS-excluded) exists; FE wiring only
16.8 POST /api/skills YES (EXISTS-excluded) exists (+ /skills/create); Builder target
16.8 PATCH /api/skills/:id YES EXTEND (PATCH+id alias) (delta 3b)
16.8 POST /api/skills/:id/test YES EXTEND (:id variant) (delta 3b)
16.8 POST /api/skills/:id/install YES NET-NEW dispatcher (delta 3b)
16.9 Conn/MCP/Mkt GET /api/connectors YES EXISTS + optional payload EXTEND (delta 4a)
16.9 POST /api/connectors/:id/connect YES EXISTS + audit EXTEND (delta 4a)
16.9 POST /api/connectors/:id/sync YES NET-NEW (delta 4a)
16.9 POST /api/connectors/:id/revoke YES EXTEND alias → disconnect (delta 4a)
16.9 GET /api/mcps YES NET-NEW mcps.ts (delta 4b)
16.9 POST /api/mcps/install YES EXTEND via marketplace installer (delta 4b)
16.9 POST /api/mcps/:id/test YES NET-NEW (delta 4b)
16.9 POST /api/mcps/:id/revoke YES NET-NEW (delta 4b)
16.9 GET /api/marketplace YES EXTEND bare-path alias (delta 4c)
16.9 POST /api/marketplace/install YES (EXISTS-excluded) exists (PRO, SecurityGate); FE wiring
16.10 Automations GET /api/automations YES EXTEND alias → cron (delta 3c)
16.10 POST /api/automations YES EXTEND alias → cron (delta 3c)
16.10 PATCH /api/automations/:id YES EXTEND alias (+ FE PUT/PATCH bug fix) (delta 3c)
16.10 POST /api/automations/:id/run YES EXTEND alias → cron trigger (delta 3c)
16.10 POST /api/automations/:id/pause YES NET-NEW thin / EXTEND (delta 3c)
16.10 GET /api/automations/:id/logs YES EXTEND alias → cron history (delta 3c)
16.11 Team/RBAC GET /api/teams/:id YES (EXISTS-excluded) exists; FE wiring only
16.11 POST /api/teams/:id/invite YES EXTEND alias → /members (delta 5)
16.11 PATCH /api/teams/:id/members/:memberId YES EXTEND (role-gate bug fix) (delta 5)
16.11 GET /api/teams/:id/audit YES EXTEND alias → /activity (delta 5)
16.11 POST /api/share YES NET-NEW (delta 5)

Verdict: 65/65 PRD §16 endpoints are addressed — 49 with explicit build targets, 16 acknowledged as EXISTS-and-excluded (FE-wiring-only). No §16 endpoint is silently dropped. The delta additionally adds ~16 blueprint-implied endpoints beyond the §16 literal set (MCP start/stop/logs/permissions/custom, connector health/activity, automations/test, team governance, artifact-share, extend/audit) — over-, not under-, coverage.

Audit caveats on Table 2 (skeptical reads — these are scope decisions hidden as "addressed"):

  • C1 — POST /api/connectors/:id/sync is "phased to a stub" (delta 4a, line 214). Marked NET-NEW but the MVP is explicitly only healthCheck() + a lastSyncAt stamp; "full data re-pull is a larger connector-SDK addition." So the headline §12.7 acceptance ("whether data is flowing") is met only cosmetically in v1. This is the load-bearing S07 gap and the delta admits it does not truly close it.
  • C2 — GET /api/mcps/:id/logs deferred (delta 4b, line 238). No log-capture infra exists; PRD §12.8 lists "view logs" as a functional requirement and §16 implies logs visibility. Deferred to "a later phase." So MCP "auditable" (§12.8 acceptance) is partially unmet at the route level for v1.
  • C3 — POST /api/mcps/:id/test open question unresolved (delta 4b, line 233). "live spawn-and- handshake vs static manifest validation" is undecided. The endpoint is listed but its semantics are not.
  • C4 — Boot-time mcpRuntime population (delta 4b, line 240). This is flagged as "the foundational non-route work item that unblocks all of [MCP]" — but it is not an endpoint and not phased into a sprint. It is the single biggest hidden-effort item in the Extend layer and should be an explicit Phase-4 task, not a footnote.

Table 3 — PRD §26 Definition of Done (all 11) — addressed by a phase/card?

Headline finding (CRITICAL): no gap card or delta references the Definition of Done by name. A grep for "Definition of Done" / "DoD" across all 22 cards + 3 deltas returns 0 matches. The DoD is the PRD's release-acceptance contract; the analysis satisfies most items implicitly but ships no DoD→phase/card traceability artifact. The next planner must not assume DoD is closed just because the screens are covered. Per-item mapping below.

# DoD item (§26) Status Where addressed / GAP
1 Home Cockpit replaces blank-chat launch behavior COVERED (implicit) S01 builds Home Cockpit; but no card/delta states the launch-default flip (today launch = workspace/chat per frontend.md). The behavioral replacement (boot route → Home) is an S00 AppShell routing change that S00 does not explicitly own. GAP-D1: name the default-route change.
2 Workspace Desktop is default runtime for workspace work COVERED S02 (create-new tabbed runtime); S00 routes to it.
3 Ctrl+K can search/launch/create/run/navigate/extend COVERED S03 + S00 (global provider); CommandResult.kind enum covers all 6 verbs (S03 line 136).
4 Memory Center exposes source/confidence/evidence/scope/edit/delete COVERED (1 conditional dep) S04 + S16; ConfidenceBadge/EvidenceChip/EvidencePanel in design-delta; depends on M1 memory_frames.metadata migration if confidence/scope become real filter axes (delta §M1). If M1 is skipped, "confidence/scope" is in-app-only — verify against §12.4 AC.
5 Artifact Center supports outcome search + related objects COVERED S05 + GET /api/artifacts/search-related (delta 2b).
6 Onboarding leads profile→tool-discovery→import→review→first workspace COVERED S12S17 chain; S00/onboarding shell.
7 Agents, skills, automations, connectors, MCPs, marketplace have coherent IA COVERED S06S11, S18S21 all map to the Work/Intelligence/Extend IA (S00 §IA).
8 Team workspace supports shared intelligence + roles COVERED (RBAC UI partial) S10; but RBAC UI is an open questionGET /api/teams/:id/governance is "optional/NET-NEW" (delta 5) and PRD §17 role matrix has no dedicated card (see GAP-D2).
9 Sensitive actions are approval-gated and audited COVERED (cross-cutting, no owner card) ApprovalModal in design-delta; S03/S08/S18/S19/S20 reference approval; /extend/audit (delta 4c). GAP-D3: the approval+audit pattern is cross-cutting but owned by no single card — risk of inconsistent per-screen implementation.
10 All screens have required states (§14) PARTIAL — the weakest-traced DoD item design-delta builds EmptyState/ErrorState/Skeleton/StatusBadge (the primitives), but no card carries a per-screen §14 state matrix. State-keyword density is uneven across cards (S02, S18, S20, S21 are thin; S00/S12 are rich). §14.1 mandates 9 global states (Loading/Empty/Populated/Error/Offline/Syncing/Permission-denied/Partial/Approval) on every major screen. GAP-D4: no screen×state coverage grid exists.
11 Claude Code can continue from PRD without product interpretation COVERED (this artifact set is the evidence) The 22 cards + 3 deltas + this check are the interpretation layer; this is met by the existence of the analysis itself, modulo the open questions below.

Concrete gaps to fix (prioritized)

CRITICAL (close before the impl plan is "done"):

  1. GAP-D4 — No screen × §14-state coverage matrix. DoD #10 requires every major screen to implement the 9 global states (§14.1) plus its screen-specific states (§14.2§14.7). The design-delta ships the state primitives but no artifact proves each of S01S21 wires Loading/Empty/Error/Offline/ Permission-denied/Approval. Cards S02, S18, S20, S21 are visibly thin on state enumeration. Fix: add a 21×9 state-coverage grid (per-screen) to the impl plan; it is the single most under-traced DoD item.
  2. GAP-D3 — Approval-gating + audit is cross-cutting but owned by no card. DoD #9 + PRD §17.3 + §18.1. ApprovalModal (design-delta #7) and /extend/audit (delta 4c) exist, but no card defines the canonical "which actions are sensitive, what the approval payload is, what gets audited" contract. Risk: each builder (S18/S19/S20) and S03/S08 re-implements approval differently. Fix: a dedicated cross-cutting "Approval & Audit" spec section (or an S00 sub-card) naming the gated-action taxonomy.
  3. C4 — MCP boot-time runtime population is a hidden foundational task, not a sprint item. Without it none of the MCP routes function. Fix: elevate mcpRuntime population (local/index.ts:911) to an explicit Phase-4 task with its own estimate.

HIGH:

  1. GAP-D1 — The blank-chat→Home launch-default flip (DoD #1) is unowned. S01 builds the screen; no card changes the boot route. Fix: assign the default-route change to S00 explicitly.
  2. GAP-D2 — PRD §17 RBAC role matrix (Owner/Admin/Contributor/Viewer × 6 capabilities) has no dedicated card. S10 covers Team Workspace and mentions RBAC, but the role×permission enforcement UI
    • the GET /api/teams/:id/governance route are "optional." DoD #8 ("supports… roles") and §17.2 are only partially traced. PRD §20.3 lists RBAC/Audit components under Create. Fix: confirm S10 owns the §17.2 matrix UI, or add an RBAC/Audit card.
  3. G2 — Sessions has no first-class screen despite being a §9.2/§11 primary object. Collapsed into S02 Timeline + Ctrl+K search. Fix: either add an explicit Sessions sub-view to S02 or document that Timeline+Ctrl+K is the intended UX and soften the §11 "navigable" claim.
  4. C1 — Connector /sync MVP is a cosmetic stub that does not meet §12.7's "whether data is flowing" acceptance. Fix: flag in the plan that S07's headline AC is only partially met in v1; schedule the real connector-SDK data-pull.

MEDIUM:

  1. G1 — S02 omits the §12.2 Settings tab from its tab enumeration (7 vs PRD's 8). Needed for Journey 19 (Archive workspace). Fix: add Settings to the S02 tab list.
  2. C2 — MCP /:id/logs deferred vs §12.8 "view logs" functional requirement. Fix: confirm v1-acceptable, or schedule the stderr ring-buffer.
  3. C3 — MCP /:id/test semantics undecided (live handshake vs static validation). Fix: resolve the open question before S08 build.
  4. Journeys §13 (20 journeys) are not cross-referenced to cards. The analysis is screen-oriented; no artifact maps the 20 user journeys (esp. J15 agent-approval, J16 automation-failure→Home-attention, J19 archive, J20 delete-memory) to the screens that must implement each step. Most are implicitly covered, but J16 (overnight failure surfacing in Home "attention required") spans S01+S11+S20 and is not explicitly owned end-to-end. Fix: a journey→screen trace table.

LOW / acknowledged-by-design (not true gaps, listed so they are not re-litigated):

  1. Models / External-tools Extend nodes (§10.4) have no standalone Hub card — folded into S21 (Models = marketplace category federated from Settings→Models; external_tool = ExtensionType). S21 line 132 raises the ExtensionType reconciliation open question (agent vs external_tool). This is a deliberate fold, not a miss — but the ExtensionType union must be resolved (shared-types-delta).
  2. §16 EXISTS endpoints (16) excluded from the delta — correct by design (FE-wiring-only), and acknowledged in the delta de-dup note. Not a gap.
  3. Schema migrations — at most M1 ships; M2 (install_audit CHECK) is a real latent bug the delta caught (good); M3 (agents table) correctly deferred. No gap.

Bottom line

  • Screens: 21/21 numbered screens + AppShell COVERED. 2 intra-screen sub-gaps (S02 Settings tab; Sessions-as-object).
  • §16 endpoints: 65/65 addressed (49 build targets + 16 EXISTS-excluded). Coverage is complete; 4 scope caveats (connector-sync stub, MCP logs/test/boot) are admitted-but-soft.
  • §26 DoD: 11/11 items map to some artifact, but DoD is never named and 2 items are only partially traced (#10 states matrix, #9 approval/audit owner) plus #1 (launch-flip) and #8 (RBAC matrix) have unowned slices. The biggest completeness risk is not a missing screen — it is the absence of two cross-cutting traceability grids (screen×state, journey×screen) and an explicit approval/audit + RBAC owner.