# Matrix Full Physical QA And Modularization Plan

> **For agentic workers:** REQUIRED SUB-SKILL: Use `superpowers:executing-plans`. Do not claim completion without `superpowers:verification-before-completion`.

**Goal:** Exhaustively QA the ZoneGaze Matrix installed-plugin experience, close source-backed UI/functionality gaps, decouple plugin surfaces into reusable modules, validate from the merged `development` branch, and push `origin/development`.

**Integration branch:** `development`

**Task branch:** `codex/matrix-full-physical-qa-modularization`

**QA run folder:** `project-testing/project-test-zonegaze-matrix-011/`

**Resume docs:** `zonegaze/memory/matrix-plugin-completion/09-full-physical-qa-work-graph.md`, `10-interaction-inventory.md`, `11-qa-run-log.md`, and `12-module-boundary-ledger.md`.

## Phase 0: Baseline And Work Graph

- [x] Create isolated task worktree from synced `development`.
- [x] Record active processes, ports, and app state before QA.
- [x] Create QA artifact folder and initial run log.
- [x] Run baseline focused tests before code changes.
- [x] Keep `00-goal-status.md` current after each major phase.

## Phase 1: Interaction And Capability Inventory

- [x] Inventory sidebar routes, mobile navigation, Dashboard, Market, Settings, and installed plugin surfaces.
- [x] Inventory every visible button, tab, select, dropdown, text input, dialog, toggle, and runtime control.
- [x] Inventory plugin capabilities from product catalog, SDK manifests, host renderers, and extension packages.
- [x] Mark confirmed capabilities as `ui+function`, `ui-only`, `function-only`, `blocked-honest`, or `external-prerequisite`.
- [x] Convert confirmed inventory gaps into implementation tasks with source file owners.

## Phase 2: Physical QA Pass

- [x] Start the Matrix web/runtime app from the packaged task build at `http://127.0.0.1:3484/`. `127.0.0.1:4217/demo-website` remains blocked by a stale sibling runtime that this environment cannot signal.
- [x] Exercise fresh-state Dashboard, Market search, product expand/collapse, install progress, blocked states, donation card, and reinstall/uninstall.
- [x] Exercise sidebar navigation, mobile bottom bar, overflow menu, project actions, and settings visibility.
- [x] Exercise Whispr start/stop, permissions, transcript editing, quick notes, settings, history, dictionary, extensions, and unavailable native actions.
- [x] Exercise Flow project navigation and same-window plugin behavior.
- [x] Exercise Chat conversations, composer, context tab, settings tab, and persistence.
- [x] Exercise Joplin notebook/note/search/context/settings workflows and persistence.
- [x] Exercise Code start/stop/fullscreen/fallback states, including Electron bridge start/fullscreen/stop.
- [x] Exercise Open Design Studio, Automations, Design Systems, Plugins, Integrations, preview, and exports.
- [x] Exercise Exo prerequisite state, dashboard state, and unavailable runtime state; Exo runtime remains `blocked-honest` in the packaged app.
- [x] Capture screenshots, console errors, network/runtime logs, and pass/fail notes.

## Phase 3: UI/Functionality Gap Fixes

- [x] For each source-backed gap, write or extend a failing test first.
- [x] Implement missing UI for existing functionality.
- [x] Implement missing functionality for existing UI.
- [x] Make unsupported native/external actions explicit and non-destructive.
- [x] Re-run focused tests and update the QA run log after each fix group.

## Phase 4: Plugin Module Decoupling

- [x] Define stable Matrix plugin module exports for Chat, Joplin, Open Design, Whispr, Code, Exo, and Flow host adapters.
- [x] Move plugin host bindings behind module-owned entrypoints and a registry.
- [x] Keep product ids, catalog copy, and localStorage persistence compatible.
- [x] Add boundary tests that fail on direct extension-surface imports from the host shell.
- [x] Update module ledger with public API, owned files, and reusable-project notes.

## Phase 5: Regression, Package, Merge, Push

- [x] Run focused unit/component tests for changed files.
- [x] Run `npm --prefix flow/web run typecheck`.
- [x] Run `npm --prefix flow/web run build`.
- [x] Run broader project checks that are locally feasible, documenting any unavailable runtime.
- [x] Re-run full physical QA from the task branch.
- [x] Commit validated work on the task branch.
- [x] Merge into `development` without force-pushes.
- [x] Build/install/launch the merged app from `development`.
- [x] Re-run smoke and affected full QA from the packaged runtime because `127.0.0.1:4217/demo-website` remains occupied by an unrelated stale runtime.
- [x] Push `origin/development`.
- [x] Record final status, remaining worktrees, and any open blockers.

## Completion Bar

This task is complete only when the run log has evidence for every discovered screen/control, the inventory has no untriaged `ui-only` or `function-only` rows, plugin modules have host-boundary tests, local validation passes or has explicit accepted blockers, the merged `development` app has been relaunched, and `origin/development` has the final commit.
