31 KiB
UX Post-Phase-1 Roadmap
Historical roadmap — superseded. This 2026-07-08 planning artifact predates the Windows-first Solo launch scope and its ten-persona acceptance evidence. Cursor, OpenClaw, and macOS are roadmap items, not current internal-RC blockers. See
../production-readiness/09-LAUNCH_RECOMMENDATION.mdfor current launch authority.
Status: analysis artifact. This roadmap sequences the remaining correction work after Phase 1. It is not approved for implementation yet.
Purpose
Phase 1 removes the P0 blockers that currently cap the judge score. This roadmap keeps the remaining P1/P2 work visible so the product can move from "credible enough to judge" toward the requested 9/10 across five personas.
Phase 2: Trust, Determinism, and Accessibility
Goal: remove P1 items that directly affect trust, recovery, or high-frequency workflows.
R2-1: Trust-critical dialogs
Source finding: P1-1 / T7.
Line evidence: docs/audits/2026-07-08-web-guidelines-line-findings.md historically listed 20 high-confidence native browser dialog calls; the current follow-up scan finds 0 after the Create Workspace, Approvals, Artifact, Memory Center, Wiki export, Settings telemetry/backup/restore, BackupApp restore, Automation delete, compliance template delete, and admin member-removal fixes.
Current evidence update:
- Create Workspace custom-template delete is fixed with an in-app confirmation and focused component coverage.
- Approvals revoke-all is fixed with the shared in-app
ApprovalModal;p7-b1-approvals-error.test.tsxcovers the no-native-confirm contract,J3dpasses a rendered/approvalsroute path on port34159, and the expanded user-journey suite passed 20/20 on port34160before the ArtifactJ3eaddition. - Artifact permanent delete is fixed with the shared in-app
ApprovalModal;artifact-center-trust.test.tsxcovers the no-native-confirm contract,J3epasses a rendered/artifactsroute path on port34161, and the expanded user-journey suite passes 21/21 on port34162. - Memory Center permanent delete, GDPR erase, and allow re-import are fixed with the shared in-app
ApprovalModal;memory-center-trust.test.tsxcovers the no-native-confirm contract,J3fpasses a rendered/memory?tab=memoriesroute path on port34164, and the expanded user-journey suite passes 22/22 on port34165. - Wiki Obsidian and Notion exports are fixed with in-app form dialogs;
wiki-export-trust.test.tsxcovers the no-native-prompt contract,J3gpasses a rendered/memory?tab=wikiroute path on port34167, and the path remains included in the latest 24/24 user-journey suite on port34173. - Settings telemetry clear and Settings backup/restore are fixed with in-app approval/status states;
settings-trust.test.tsxcovers the no-native-dialog contract,J3hpasses a rendered/settings?tab=backuproute path on port34171, and the expanded user-journey suite passes 24/24 on port34173. - Standalone
BackupApp.tsxrestore is fixed with the shared in-appApprovalModal;p1b-authgate-surfaces.test.tsxcovers the no-native-confirm contract. - Automation delete is fixed with the shared in-app
ApprovalModal;phase3b-automation-center.test.tsxcovers the no-native-confirm contract. - Compliance template delete is fixed with the shared in-app
ApprovalModal;compliance-template-trust.test.tsxcovers the no-native-confirm contract. - Admin-web member removal is fixed with an in-app confirmation panel;
admin-pages.test.tscovers the no-native-confirm contract.
Surfaces:
- No current high-confidence production native dialogs remain; broader T7 work should now focus on persona-state evidence, error states, and keyboard/screen-reader polish for the fixed flows.
- Remaining workspace/template destructive actions, if any, outside the fixed custom-template delete path.
Acceptance:
- No native
confirm,alert, orpromptin trust-critical flows. - In-app modal or inline confirmation names the object, consequence, reversibility, and next step.
- Result state appears in-app after completion or failure.
Judge impact:
- Team admin.
- Researcher.
- Mobile executive where destructive flows are reachable.
R2-2: Marketplace/local-first determinism
Source finding: P1-3 / T6.
Surfaces:
- Marketplace browse/search.
/api/marketplace/sync.- Marketplace background sync.
Acceptance:
- Standard UX audit does not call live external marketplace sources.
- Live sync is moved to a named live-integration lane or guarded by explicit environment behavior.
- Marketplace search and browse pass without retry flakes.
Judge impact:
- Engineer.
- Solo founder.
R2-3: Form, focus, and icon-button accessibility
Source finding: P1-5 / T10.
Line evidence: docs/audits/2026-07-08-web-guidelines-line-findings.md lists high-confidence focus misses, image-dimension misses, and a form metadata audit queue.
Surfaces:
- Settings.
- Profile.
- Workspace creation.
- Workspace actions dialogs.
- Agent/persona creation.
- Mission Control and agent cards.
- Compliance templates.
- Onboarding forms.
Acceptance:
- High-traffic forms have accessible names, associated labels, and inline errors.
- Focus order is predictable.
- First invalid field receives focus on submit where practical.
- Icon-only controls have accessible names.
- Modal initial focus and focus return are covered for high-traffic dialogs.
Judge impact:
- Mobile executive.
- Team admin.
- Engineer.
- Solo founder.
R2-4: Test warning hygiene
Source finding: P1-2 / T10.
Surfaces:
- Component tests emitting repeated
act(...)warnings outside the now-quiet focused admin-web lane. - Standard verification lane output.
Acceptance:
- Warnings that mask real failures are eliminated, scoped, or documented.
- Standard verification output remains readable enough for reviewers.
Judge impact:
- Indirect, all personas.
R2-5: Route evidence completion
Source finding: P1-7 / T11.
Current evidence:
docs/audits/2026-07-08-route-evidence-t11-analysis.mdnow includes a current all-route built-preview smoke on port 3457.- Artifacts live under
output/playwright/route-evidence-3457/. - The smoke proves 33 desktop route navigations plus 11 mobile route spot-checks return 200, produce screenshots, and have no document-level horizontal overflow.
/payment-cancelledredirects to/settings?tab=billing.- T11 remains open because this evidence is ad hoc, every sampled route logs the Clerk development-key warning,
/launcher?watch=1logs detectTools network noise,/settings/usagelogs a 403 resource error, the catch-all route logs its expected 404 as a console error, and several judge-route controls still lack accessible names/labels.
Surfaces:
- Any route still marked Thin or Missing after Phase 1.
- Major overlays not exercised by Phase 1.
Acceptance:
- Every route and major overlay has a smoke, visual, or persona evidence owner.
- Deferrals are explicit and approved.
Judge impact:
- All personas.
R2-6: Shell overlay semantics and create-workspace hierarchy
Source findings: P1-19 / T10/T12 and P1-20 / T10/T12/T7.
Focused supplement: docs/audits/2026-07-08-shell-overlays-t10-t12-analysis.md.
Surfaces:
- Notification Inbox.
- Create Workspace.
- Context Rail.
- Onboarding Tooltips.
- Upgrade and Trial Expired modals.
Current evidence update:
- Fresh desktop/mobile overlay smoke passes the high-level open/close path for Keyboard Shortcuts, Persona Switcher, Workspace Switcher, Spawn Agent, and Upgrade Modal.
- Notification Inbox now has a named dialog contract, focus trap, Escape close, and named mark-all/close actions.
- Create Workspace now has named primary/subdialog contracts, focus traps, Escape close, named sampled template/share actions, in-app custom-template delete confirmation, and focused 390 x 844 rendered evidence that required setup precedes optional templates.
- Context Rail now has a labelled complementary contract and named close action at component level; route-specific rendered states still need evidence.
- Onboarding Tooltips now has an explicit non-modal dialog contract and Escape dismissal at component level; rendered first-run/mobile evidence still needs refresh.
- Upgrade and Trial Expired close icons now have accessible names; the event-driven Upgrade modal close path has rendered
J3cevidence. - Browser-plugin spot check for this slice failed on the in-app Browser DOM snapshot path (
incrementalAriaSnapshot is not a function), so Playwright remains the reliable rendered evidence lane until P2-2 is fixed.
Acceptance:
- Modal overlays share dialog semantics, focus behavior, Escape close, focus return, and named close/icon actions.
- Non-modal panels use labelled landmarks and predictable keyboard reachability.
- Create Workspace prioritizes required name/storage/create controls on the sampled mobile path, with templates progressive or summarized.
- Template destructive actions use in-app confirmation and result states.
- Desktop and 390 x 844 overlay screenshots plus DOM/keyboard evidence are attached; current gap is refreshed screenshot/state coverage beyond the focused Create Workspace path.
Judge impact:
- Mobile executive.
- Engineer.
- Solo founder.
- Team admin when workspace/template management is in scope.
R2-7: Admin web and CLI/MCP utility evidence
Source finding: P1-11 / T15.
Surfaces:
packages/admin-web.packages/launcher/npx waggle.packages/cli.packages/marketplaceCLI.packages/memory-mcpandpackages/hive-mind-mcp-server.packages/hive-mind-cli.
Current evidence update:
- T15 deep-dive:
docs/audits/2026-07-08-admin-cli-utility-t15-analysis.md. - Targeted source tests, no-emit TypeScript checks, and package builds pass for the inspected admin/CLI/MCP utility surfaces.
- Admin-web built-render smoke covers all 7 desktop pages and all 7 mobile pages under
output/playwright/admin-web-t15-57795/; typed happy paths render with no current-port console errors. A newer package-owned rendered Playwright gate builds the admin web and passes all seven pages across desktop/mobile widths, hash deep links, browser back/forward traversal,aria-current, labelled table scroll regions, rendered control labels, mobile shell keyboard reachability, page-level keyboard traversal from connection fields into the covered admin pages, desktop/mobile visual snapshots, capability governance forms, malformed analytics response recovery, all-page initial API-failure recovery, rendered mutation/destructive-failure recovery for capability policy save, capability override create/remove, capability request decision, member invite, member role change, member removal, and team settings save, local bearer-auth wrong-token/valid-token behavior, and React warning cleanup. - Built legacy
waggle-memory-mcpread-only/write-scope protocol startup plus installed read-only startup, built hive-mind MCP read-only/write-scope protocol startup plus installed read-only startup, built/packed/local package-closure installed@waggle/clinpxhelp plus installed local REPL startup/slash-command/exit and streamed chat/provider plumbing, launcher built help/invalid-port/occupied-port recovery plus packed first-command, clean installed occupied-port startup recovery, and clean installed long-running/healthstartup, built/installed marketplace CLI help/invalid-command behavior plus package manifest/packed-file alignment, and local package-closure installedhive-mind-clihelp are locally fixed, but still need registry-only proof after internal package publication. - Built hive-mind MCP passes official MCP client read-only registration and write-scope save/recall roundtrips with 9 tools and 4 resources.
- Package-local test commands remain inconsistent outside the now-documented hive-mind CLI and hook/shim lanes. Root Vitest does not discover hive-mind CLI colocated tests under
src/, butnpm run test --workspace @waggle/hive-mind-cli -- --reporter=dotnow owns that lane. Marketplace invalid-command behavior and sampled hive-mind CLI subcommand help are now locally fixed and guarded.
Acceptance:
- Admin-web rendered desktop/mobile happy-path, browser-history, page-level keyboard, visual snapshot, malformed analytics recovery, initial API-failure, mutation/destructive-failure, and local bearer-auth states stay green in the package-owned gate.
- Built utility entries run from a clean environment, are explicitly deprecated, or are deferred.
- Utility CLIs have happy-path and error-path command evidence, or are deferred.
- Hive-mind CLI package-local test discovery remains in the documented verification lane; the remaining package-local script gaps are fixed or have documented separate verification lanes.
Judge impact:
- Team admin.
- Engineer.
- Solo founder setup path.
R2-8: AI-tool hook lifecycle evidence
Source finding: P1-12 / T16.
Surfaces:
- Launcher hook install/verify/uninstall UI.
packages/hive-mind-hooks-claude-code.packages/hive-mind-hooks-codex.packages/hive-mind-hooks-codex-desktop.packages/hive-mind-hooks-cursor.packages/hive-mind-hooks-hermes.packages/hive-mind-hooks-openclaw.packages/hive-mind-hooks-claude-desktopunsupported/stub copy.
Current evidence update:
- Shared/agent/server T16 route-contract plus package-runtime tests pass 7 files / 96 tests, and the focused registry-aware adapter launch slice passes 5 files / 108 tests.
- Packed-package
npx --yes @waggle/hive-mind-hooks-<id> install/verify/uninstalllifecycle passes for all six hook-capable packages from a clean temp project with the local package closure installed. - Launcher/prompt/adapter tests pass 3 files / 28 tests.
- Root-run hook/shim package tests pass 60 files / 573 tests with 1 skipped.
- Hook/shim package-local
npm run test --workspace ...scripts now pass for hook core, all six hook-capable packages, and shim core; the shim lane also verifies the CLI ESM resolver fix for the MCP server entry. - Official hook/shim package typechecks pass 8/8, the Claude Desktop stub build passes, and compiled hook-bin help smokes pass 6/6.
- Focused rendered Launcher Browser smoke artifacts live under
output/playwright/launcher-t16-54147/; they prove mixed hook states, prompt summary, install success, verify failure, and running output against a mock local API, while exposing the original generic/dropped-detail result copy, missing Claude Desktop launch-only copy, and prompt metadata gaps. Duplicate live-output replay after exit, hook stdout/stderr detail visibility, Backup/Recovery labels for covered install output, Check-failed/manual-approval rows for Verify output, uninstall restore/cleanup labels, More-output summarization, structured hook failure preservation, empty-output Verify recovery copy, and Claude Desktop launch-only copy are now covered by focused web regressions; a fresh real/launcherBrowser smoke now rendersverify failed (exit 1)with retry/uninstall/reinstall guidance instead ofHTTP 400, Browser-rendered mocked states now cover Claude Desktop launch-only copy, Codex Verify manual approval, and Codex Uninstall cleanup, a codified rendered Playwright spec covers standard install changed-file/pointer/backup/recovery labels, all six hook-capable install/verify/uninstall transitions, sidecar-offline Retry, long-stderr summarization, and non-built-in adapter launch-only/prompt behavior, a gated real-tool Playwright spec covers OpenClaw rendered detection plus observed launch/output/exit/process cleanup, and a gated route Playwright spec covers real/api/tools/hooksinstall/verify/uninstall for all six hook-capable tools against an isolated profile. Packaged desktop hook-status transitions remain open rather than a generic status leak. - Tailwind motion-token warning hygiene is partially fixed: ambiguous
duration-[var(--mo-*)]/ease-[var(--mo-ease)]classes are replaced by named utilities and guarded bymotion-class-hygiene.test.ts; theshape-selection.tsdynamic/static import warning is also fixed and guarded bybuild-warning-hygiene.test.ts; the Vite large-chunk warning is fixed by lazy-loading routes, closed shell overlays, ChatHost, and PostHog analytics. Remaining warning hygiene still includes color-env, embedding, and hook negative-path noise. - Focused evidence and open gaps are recorded in
docs/audits/2026-07-08-ai-tool-hook-t16-analysis.md.
Acceptance:
- Rendered Launcher evidence covers detected/not-detected, standard install changed-file/pointer labels, verify, uninstall, all six hook-capable install/verify/uninstall transitions, sidecar offline, long-stderr, error, unsupported Claude Desktop states, and at least one real observed CLI launch; packaged desktop hook-status evidence is still required for T16 closure.
- Command lifecycle evidence covers six hook-capable packages through the production-like package-name invocation path; route lifecycle evidence covers all six hook-capable tools through safe isolated install/verify/uninstall smokes.
- Registry-only proof is captured after actual hook package publication.
- Observed live output does not duplicate replay after terminal exit, hook result stdout/stderr/Backup-Recovery/Check-failed/structured-failure/empty-output recovery details are preserved, and Claude Desktop launch-only copy is explicit; current focused evidence passes in the Launcher/web suite.
- Third-party adapter detection/launch behavior is fixed or explicitly out of scope.
- Expected fail-open/log noise is quiet enough or explicitly documented.
Judge impact:
- Engineer.
- Solo founder.
- Team admin.
R2-9: Developer API, background worker, and substrate verification evidence
Source finding: P1-13 / T17.
Dedicated supplement: docs/audits/2026-07-08-developer-substrate-t17-analysis.md.
Surfaces:
packages/sdk.packages/server.packages/worker.packages/waggle-dance.packages/agent,packages/core, andpackages/shared.packages/hive-mind-core,packages/hive-mind-shim-core,packages/hive-mind-wiki-compiler, andpackages/wiki-compiler.- Package-local test scripts and root Vitest discovery.
Current evidence update:
- Direct no-emit TypeScript passes for 13 remaining backend/developer/substrate workspaces.
- Agent tests pass 194 files / 3079 tests.
- Core, optimizer, and weaver tests pass through package scripts.
- Root-run SDK, substrate, shared, worker, WaggleDance, and compiler tests pass.
- Current full server route suite passes, but it is slow/noisy; earlier packet evidence saw one workspace-listing perf budget failure under full-suite load while the same benchmark passed in isolation.
- Several non-hook package-local
npm testscripts fail by command shape even though root-run tests pass. - Marketplace sync behavior leaks into the normal server verification lane and should be made hermetic or moved to a named live-integration lane.
Acceptance:
- Package-local scripts either pass or clearly delegate to the correct root/project-reference lane.
- Full server suite is deterministic, or perf assertions are separated into an explicit perf lane with a stable threshold.
- SDK/server/worker/WaggleDance/substrate package verification is discoverable and quiet enough for release review.
- Developer API/background/substrate evidence is attached or explicitly deferred from the five-persona score.
Judge impact:
- Engineer.
- Team admin.
- Release confidence for all personas.
R2-10: Ops, deployment, CI, benchmark, and judging evidence
Source finding: P1-14 / T18.
Dedicated supplement: docs/audits/2026-07-08-ops-deploy-ci-judging-t18-analysis.md.
Surfaces:
.github/workflows.Dockerfile.docker-compose.ymlanddocker-compose.production.yml.render.yaml.litellm-config.yamlandops/litellm.vitest.infra.config.tsandvitest.infra-suites.ts.benchmarks/harness.judging.
Current evidence update:
- YAML parse passes for Compose, Render, LiteLLM, and all workflow files.
- Docker CLI is available and Compose config expansion succeeds for development and production files, but the Docker Desktop engine is unavailable in this environment, so live infra tests were not run.
- Raw Compose config can print local ignored env secrets; use non-interpolated or sanitized output for shareable evidence.
- Only
.env.examplefiles are tracked among the checked env/key files; local secret-bearing files are ignored. - Render currently provisions Postgres/Redis but starts the local sidecar path.
- CI E2E is advisory, and no CI lane runs the 19 infra-dependent suites.
- Benchmark harness TypeScript passes; root-run benchmark tests pass 29 files / 325 tests; package-local benchmark tests fail by command shape.
- Current
judging/artifacts are historical, not the final July five-persona score evidence. - The focused T18 supplement also records the
apps/wwwGitHub Pages artifact mismatch, production Compose default credentials, and LiteLLM live-routing gap.
Acceptance:
- Secret-safe ops validation commands are documented and used.
- Docker/Render target and entrypoint choices are coherent with the product mode being claimed.
- CI blocking/advisory semantics are explicit; infra lane is run, added, or deferred with Docker-engine availability noted.
- Benchmark harness commands are fixed or documented.
- Current five-persona judging artifacts are regenerated after approved fixes land.
Judge impact:
- Engineer.
- Team admin.
- Release confidence for all personas.
R2-11: Browser Companion extension evidence
Source finding: P1-15 / T19.
Surfaces:
apps/browser-ext/manifest.json.apps/browser-ext/popup.html.apps/browser-ext/popup.js.apps/browser-ext/background.js.apps/browser-ext/content.js.packages/server/src/local/routes/browser-ext.ts.packages/server/src/local/cors-config.ts.
Current evidence update:
- Source inventory confirms
apps/browser-extis a Chrome MV3 extension surface, not an npm workspace. - Server exposes
/api/browser-ext/healthand CORS env gates for extension origins. - Direct sidecar save evidence proves selection-shaped and page-shaped Browser Companion frames can be created, duplicate detection works, and Memory UI renders the saved imported frame.
- A real unpacked Chromium extension run originally proved background save failed by default with generic
HTTP 500when the extension origin was not allowlisted. The current secure-default live smoke now proves content-script extraction from a normal page, MV3 no-Origin header handling, token bootstrap during save, background save throughchrome.runtime.sendMessage, and/api/memory/framesimported-frame confirmation underWAGGLE_BROWSER_EXT_IDS=<extension id>. - The direct popup keyboard/click live smoke now proves popup Tab order, visible Save selection focus, Enter-to-save selection, Save page click, saved feedback, Memory frame creation through the secure sidecar path, and
/api/memory/searchsource: importwhen supplied the active target tab that the native toolbar popup would receive from Chrome. Context-menu registration/handler behavior is regression-covered. - Native toolbar-bubble exposure, native context-menu clicks, packaged pairing, and any separately scored global-recall provenance shape are still unproven.
- Historical
/api/memory/framesversus/api/memory/searchsource/provenance disagreement is fixed for imported Browser Companion captures.
Acceptance:
- Connected/disconnected popup states are screenshot or test evidenced.
- Save selection and save page create Memory frames from popup keyboard/click interactions or have an approved deferral; native toolbar-bubble proof can be manual if automation cannot expose it.
- Native context-menu save creates a Memory frame or has an approved deferral.
- CORS/auth-denied/unpaired-extension state gives a clear setup path instead of a generic
HTTP 500or rawMISSING_TOKEN; focused coverage exists, with live screenshot evidence still optional for the judge packet. - Memory provenance remains consistent between frame list, search result, UI, and any separate global-recall result shape included in scoring.
- Popup keyboard/focus basics have live evidence; status announcement behavior is separately checked or deferred if scored.
- Browser Companion is either evidenced or explicitly deferred from the five-persona score.
Judge impact:
- Researcher.
- Solo founder.
- Mobile executive where browser capture is part of the scenario.
R2-12: State and failure bundle evidence
Source finding: P1-8 / T12.
Surfaces:
docs/audits/2026-07-08-ux-state-failure-scenario-matrix.md.- Five-persona scorecards.
- Routes and overlays exercised under account, tier, disclosure, model, data, offline, and viewport variants.
Acceptance:
- Each judge scorecard declares the exact state bundle it exercised.
- Account mode, billing tier, disclosure tier, model state, data state, offline/error state, and viewport are present in the evidence.
- Skipped state bundles have explicit deferral rationale before scoring.
Judge impact:
- All personas.
R2-13: Public launch funnel repair and evidence
Source finding: P0-L1 / T13.
Focused supplement: docs/audits/2026-07-08-launch-funnel-t13-analysis.md.
Surfaces:
apps/wwwhomepage.- Canonical
waggle-os.aiDNS/deployment. - Download CTA.
- GitHub Releases or replacement download/status page.
- Sign-in, sign-up, account.
- Team checkout and checkout cancel recovery.
- Legal/privacy/cookies/EU AI Act pages.
deploy-www.ymlor replacement deployment target.
Acceptance:
- Download CTA leads to valid Windows/macOS artifacts or a controlled availability/status page; mobile and unsupported OS labels are honest.
https://waggle-os.ai/andhttps://www.waggle-os.ai/resolve and serve the selected public deployment or redirect coherently.- Local production route/API smoke uses the correct host binding and serves the public launch, legal, auth, account, methodology, and checkout routes without 500s, timeouts, unexpected 404s, or Clerk redirect-loop spam.
- Launch funnel is verified with desktop/mobile route evidence, or explicitly deferred from the five-persona score.
- Signed-out Team checkout guides the user into auth/checkout recovery instead of a JSON-shaped error.
- Checkout cancel returns to a real pricing recovery state.
- Public legal/trust pages contain no placeholder launch text and no active Pro copy.
- Deployment target matches the app shape.
Current evidence:
- www tests, direct TypeScript, and Next build pass.
- Current external refresh cannot resolve
waggle-os.aiorwww.waggle-os.aifrom the audit environment; DNS reports non-existent domain/no A or CNAME. - Fresh localhost route/API smoke serves core routes, but
/pricing?checkout=cancelledstill 404s. - Fresh rendered Browser smoke under
output/playwright/www-t13-3491/captures desktop/mobile homepage, mobile menu, signed-out pricing error, route/API probes, and clean sampled console logs; it still reproduces broken Download and signed-out checkout recovery. - Public download currently points to GitHub Releases, where the repo has no releases.
- Current workflow uploads
apps/www/distwhile the app builds.next.
Judge impact:
- Solo founder.
- Team admin.
- Mobile executive.
R2-14: Desktop wrapper and release UX evidence
Source finding: P1-10 / T14.
Surfaces:
- Packaged Tauri launch.
- Sidecar readiness and failure recovery.
- Tray menu actions.
- Close-to-tray and global shortcut.
- Installer/signing expectations.
- Update notification or deliberate hidden/disabled update state.
Current evidence update:
- Static Tauri config/update/tray tests, app TypeScript, web typecheck, Rust
cargo check, sidecar resource preflight, app service E2E, release workflow ordering, and web-side Tauri binding tests now pass; Rust source directly handles tray Open/focus, close-to-tray,Ctrl+Shift+W, and Quit. - Settings routes through a tested
/settingsdesktop bridge; Pause Agents and About Waggle are hidden; remaining unconsumed native events are update/service status and still need visible UX or deferral. - This remains Phase 2/launch work unless a Phase 1 verification command directly needs a small supporting fix.
Acceptance:
- Installed app launch and service recovery are verified, or explicitly deferred from the five-persona score.
- Tray/update/service events are either consumed by UI, handled natively, or hidden until supported; Quit actually exits or is not shown as a supported command.
- Release channel expectations are clear for signed/trusted install.
Judge impact:
- All personas.
Phase 3: Performance, Cost Semantics, and Polish
Goal: improve speed, clarity, and polish after core trust/flow issues are under control.
R3-1: Initial payload and route loading
Source finding: P1-4 / T8.
Surfaces:
- App shell.
- Deep Settings/Marketplace/admin surfaces.
- Keep
shape-selection.tsimport hygiene guarded while reducing the remaining initial payload. - Large persona/logo assets.
Acceptance:
- Startup JS stays below the Vite 500 kB warning threshold.
- Deep apps, closed overlays, chat, and analytics load after core shell where feasible.
- Defeated dynamic import and oversized-JS warnings remain resolved or explicitly justified.
- Large persona/logo assets are optimized or deferred.
Judge impact:
- Mobile executive.
- Engineer.
- Solo founder first impression.
R3-2: Local model pricing semantics
Source finding: P1-6 / T9.
Surfaces:
packages/agent/src/cost-tracker.ts.- Usage & Cost UI.
- No-LLM/degraded-mode tests.
Acceptance:
- Local/unpriced models are labeled honestly.
- No standard audit warning estimates local model cost as paid-provider cost without explanation.
- Tests that claim no-LLM behavior actually force provider unavailability or are renamed.
Judge impact:
- Engineer.
- Team admin.
R3-3: Stale comments and legacy terminology
Source finding: P2-1.
Surfaces:
- Touched billing/tier files.
- Touched route/shortcut files.
- Touched Marketplace/MCP/skills copy files.
Acceptance:
- Comments in touched files reflect current Solo/Teams/Enterprise and route behavior.
- No unrelated cleanup outside touched files.
Judge impact:
- Indirect.
R3-4: Browser plugin DOM snapshot tooling
Source finding: P2-2.
Surfaces:
- Audit tooling, not product.
Acceptance:
- Keep Playwright CLI as the reliable audit path until Browser
domSnapshot()mismatch is fixed. - If Browser tooling is fixed, update the audit process and evidence packet.
Judge impact:
- Audit ergonomics only.
Re-Scoring Sequence
- Finish Phase 1 and update the correction register.
- Attach route, state/failure, launch-funnel, Browser Companion, desktop-wrapper, utility/admin, hook lifecycle, developer/substrate, and ops/deployment/judging evidence owners to the five scorecards.
- Run a dry five-persona scorecard pass.
- If any persona is capped by a Phase 2 item, execute only the relevant Phase 2 lane.
- Repeat scorecard pass.
- Execute Phase 3 only after trust, routing, accessibility, route evidence, state-bundle evidence, and any non-deferred launch/extension/desktop/utility/hook/developer/ops gates stop capping scores.
Approval Boundary
This roadmap is not a request to implement Phase 2/3 now. It exists so the remaining correction work is sequenced after Phase 1 and no P1/P2 item is lost.