{ "schemaVersion": 1, "id": "workspace-control-plane", "title": "Workspace control-plane owner and non-owner review", "baseUrl": "${WEB_UX_BASE_URL}", "locale": "en-US", "timezone": "UTC", "colorScheme": "light", "reducedMotion": "reduce", "redact": { "selectors": ["[data-web-ux-redact]", "input[type=password]"], "text": [] }, "personas": [ { "id": "owner", "label": "Workspace owner", "auth": { "kind": "storage-state", "path": "${XDG_STATE_HOME}/yoi/web-ux/auth/owner.json" }, "login": { "path": "/", "successUrl": "/w/" } }, { "id": "non-owner", "label": "Authenticated non-owner", "auth": { "kind": "storage-state", "path": "${XDG_STATE_HOME}/yoi/web-ux/auth/non-owner.json" }, "login": { "path": "/", "successUrl": "/w/" } } ], "viewports": [ { "label": "desktop", "width": 1440, "height": 1000, "deviceScaleFactor": 1 }, { "label": "narrow", "width": 900, "height": 900, "deviceScaleFactor": 1 } ], "routes": [ { "id": "workspace-home", "label": "Workspace overview", "path": "/w/${WORKSPACE_ID}", "goal": "Orient the user and expose the highest-value Workspace actions without internal authority noise.", "dataState": "Dogfood Workspace with current Runtime and Ticket data.", "ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 }, "capturePoints": [{ "id": "initial", "label": "Initial viewport", "fullPage": true }] }, { "id": "tickets", "label": "Ticket lanes", "path": "/w/${WORKSPACE_ID}/tickets", "goal": "Scan actionable Ticket lanes and reach the primary authoring action in the initial viewport.", "dataState": "Planning, ready, queued, in-progress, and completed Tickets from the selected Workspace.", "ready": { "kind": "selector", "selector": "main", "timeoutMs": 30000 }, "capturePoints": [{ "id": "initial", "label": "Loaded Ticket lanes", "fullPage": true }] }, { "id": "workers", "label": "Workers", "path": "/w/${WORKSPACE_ID}/workers", "goal": "Find current Worker state and the new-Worker action without exposing transport internals as the primary content.", "dataState": "Current Workspace Worker projection with mixed lifecycle states.", "ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 }, "capturePoints": [{ "id": "initial", "label": "Worker list", "fullPage": true }] }, { "id": "settings", "label": "Workspace settings", "path": "/w/${WORKSPACE_ID}/settings", "goal": "Reach the relevant Workspace settings area without presenting owner-only destinations as usable actions to a non-owner.", "dataState": "Current permission projection for the selected Workspace.", "ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 }, "capturePoints": [{ "id": "initial", "label": "Workspace settings", "fullPage": true }] }, { "id": "repositories", "label": "Repository settings", "path": "/w/${WORKSPACE_ID}/settings/repositories", "goal": "Review repository access as an owner and verify non-owner composition does not expose unusable owner actions.", "dataState": "Workspace repository catalog projected through current permissions.", "ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 }, "capturePoints": [{ "id": "initial", "label": "Repository settings", "fullPage": true }] }, { "id": "repository-access", "label": "Repository access", "path": "/w/${WORKSPACE_ID}/settings/repository-access", "goal": "Review credential and host-trust bindings as an owner and verify non-owner composition fails closed without secret material.", "dataState": "Configured repository access bindings projected without credential bytes.", "ready": { "kind": "selector", "selector": "main", "timeoutMs": 20000 }, "capturePoints": [ { "id": "initial", "label": "Repository access settings", "fullPage": true } ] } ] }