--- phase: 04-marketplace-portal-navigation plan: 04 type: execute wave: 3 depends_on: ["04-02", "04-03"] files_modified: [] autonomous: false requirements: [MRKT-01, MRKT-02, MRKT-03, MRKT-04, PRTAL-02, PRTAL-03, PRTAL-05] must_haves: truths: - "A human confirms the marketplace, activation flows, tenant context switching, and sidebar navigation all work end-to-end in a running stack" artifacts: [] key_links: [] --- Human visual + functional verification of the complete Phase 4 experience: marketplace browsing/filtering, module activation/deactivation (admin + Super-Admin tenant context), module detail page, and sidebar navigation with search and live refresh. Purpose: Phase gate. Confirms the implemented slices satisfy the phase success criteria before the phase is marked complete. Output: Human sign-off (or a list of issues to feed gap-closure planning). ## Phase Goal **As a** Tessera user, **I want to** browse and activate modules in a marketplace and navigate to them from the sidebar, **so that** the platform's module experience is usable end-to-end. @$HOME/.claude/gsd-core/workflows/execute-plan.md @$HOME/.claude/gsd-core/templates/summary.md @.planning/phases/04-marketplace-portal-navigation/04-UI-SPEC.md @.planning/phases/04-marketplace-portal-navigation/04-01-SUMMARY.md @.planning/phases/04-marketplace-portal-navigation/04-02-SUMMARY.md @.planning/phases/04-marketplace-portal-navigation/04-03-SUMMARY.md Task 1: Ensure the stack is running and the full test suite is green - apps/web/package.json (test + dev scripts) - .planning/phases/04-marketplace-portal-navigation/04-01-SUMMARY.md - .planning/phases/04-marketplace-portal-navigation/04-02-SUMMARY.md - .planning/phases/04-marketplace-portal-navigation/04-03-SUMMARY.md Run the full web unit suite (`cd apps/web && pnpm vitest run`) and `pnpm type-check`. Ensure the Docker Compose stack (or local dev servers) is up so the portal is reachable for human verification — start it if it is not already running. Confirm the API is serving `/modules`, `/modules/active`, and `/tenants`. Report the portal URL for the human verifier. cd apps/web && pnpm vitest run 2>&1 | grep -qiE "passed" && pnpm type-check && echo SUITE_GREEN - `cd apps/web && pnpm vitest run` exits 0 - `cd apps/web && pnpm type-check` exits 0 - Portal is reachable and the marketplace route loads without console errors Full suite green, type-check clean, portal running and reachable. Phase 4 marketplace + portal navigation: `/marketplace` card grid with search/status/category filters, immediate activation with toast + confirm-dialog deactivation, Super-Admin tenant-context selector, `/marketplace/[slug]` detail page, and an enhanced sidebar (Next.js Link, usePathname active state, per-module links, search, live refresh). 1. Log in as a regular Admin. Visit `/marketplace`. CONFIRM: a responsive card grid of all modules appears, each card shows icon, name, description, a category badge, and a status badge (MRKT-01, MRKT-04). 2. Type part of a module name in the marketplace search. CONFIRM: the grid live-filters (debounced). Clear it with the X button. 3. Click the status tabs "Aktiviert" / "Verfuegbar" and a category chip. CONFIRM: the grid filters correctly and filters compose. With an impossible filter combo, CONFIRM the "Keine Ergebnisse" filtered-empty state appears. 4. On an available module, click "Modul aktivieren". CONFIRM: button becomes "Deaktivieren", status badge turns green "Aktiviert", and a success toast appears bottom-right (MRKT-02). 5. Look at the left sidebar WITHOUT reloading the page. CONFIRM: the just-activated module now appears under its category as a clickable link (MRKT-03, PRTAL-02, live refresh). 6. Click that module link in the sidebar. CONFIRM: it navigates client-side (no full-page flash), opens in the main content area, and the sidebar highlights it as active (PRTAL-03). 7. Type in the sidebar search field. CONFIRM: modules/categories filter; non-matching categories hide; "Keine Module gefunden" shows when nothing matches; clearing the search keeps previously expanded categories open (PRTAL-05). 8. Click "Deaktivieren" on an activated module in the marketplace. CONFIRM: a confirmation dialog appears with the module name; Abbrechen cancels with no change; Deaktivieren removes it (badge + sidebar update) with a toast. 9. Open a module detail page by navigating to `/marketplace/{slug}`. CONFIRM: full (untruncated) description, version, status, and a working activate/deactivate control; the "Zurueck zum Marktplatz" back link works. 10. Log in as a Super-Admin. Visit `/marketplace`. CONFIRM: a "Mandanten-Kontext" dropdown appears above the title. Switch to a different tenant. CONFIRM: card activation states refresh for that tenant; activating a module affects ONLY the selected tenant (verify by switching back). 11. Switch language DE/EN. CONFIRM: all marketplace and sidebar strings translate (no raw keys, no `[object Object]` descriptions). 12. Toggle light/dark theme. CONFIRM: cards, badges, toasts, and dialog all render correctly in both modes. Type "approved" if all checks pass, or describe the specific issues observed (these feed `/gsd-plan-phase --gaps`). No new symbols — verification-only plan. - Full web suite green and type-check clean (Task 1) - Human confirms all 12 verification steps (Task 2) - All phase success criteria from ROADMAP Phase 4 confirmed by a human in a running stack - Any defects captured for gap-closure planning Create `.planning/phases/04-marketplace-portal-navigation/04-04-SUMMARY.md` when done