# Route Contract: Workspace Switch Semantic Fix **Feature**: 121-workspace-switch-fix | **Date**: 2026-03-07 ## Intent-level contract ### Switch workspace - **Surface**: admin context bar - **Label**: `Switch workspace` - **Canonical target**: `ChooseWorkspace::getUrl(panel: 'admin').'?choose=1'` - **Meaning**: enter the explicit workspace chooser flow ### Manage workspaces - **Surface**: existing administrative navigation / chooser management affordance - **Canonical target**: workspace management resource index - **Meaning**: create, view, and edit workspace records ## Before / After ### Before ```text Context bar "Switch workspace" -> /admin/workspaces -> lands on workspace management CRUD index ``` ### After ```text Context bar "Switch workspace" -> /admin/choose-workspace?choose=1 -> lands on chooser flow ``` ## Invariants 1. Workspace chooser remains the canonical manual-switch surface. 2. `?choose=1` remains the explicit forced-chooser signal for intentional switching. 3. Workspace management remains separately reachable and semantically distinct. 4. Choosing a workspace continues to use existing `WorkspaceIntendedUrl` / `WorkspaceRedirectResolver` behavior. 5. No new routes, middleware rules, or authorization rules are introduced. ## Verification expectations - Response rendering for a real admin page containing the context bar must show the chooser target. - Existing chooser behavior tests remain green. - Workspace management navigation remains reachable through its existing destination.