Context. surface studio · domain yemaya · route /studio/yemaya/project-workspaces · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/yemaya/project-workspaces/page.tsx
Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body re-derived 2026-06-03 from current source (lane-console architecture)
Purpose#
Admin lane console wired to the @yemaya/projects workspace Zod schemas — it
lists the supported workspace plans and member roles, then validates a
create-workspace payload against the real CreateWorkspaceSchema before
creation. Wired over /v1/admin/yemaya/project-workspaces; access is
admin-scoped and fail-closed.
Entry points#
- No breadcrumb panel on this page.
- Reachable from sibling Yemaya routes that quick-action here (e.g.,
project-creation-and-types,team-collaboration). - Direct URL / bookmark (signed-in + studio entitlement).
Layout regions#
page.tsx renders ShellLayout active="studio" and:
- Workspace panel (
StudioYemayaProjectWorkspacesWorkspace,data-yemaya-project-workspaces-workspace):<h1>(WorkspaceHeading) "Yemaya Project Workspaces Workspace".- Summary paragraph (
data-yemaya-project-workspaces-summary). - Workspace Creation Operations Lane
(
data-yemaya-project-workspaces-operations-lane,<h2>): a plans panel (data-yemaya-pw-plans, supported plans + member roles) and the validation form (data-yemaya-pw-form).
- Route Map panel (
data-yemaya-project-workspaces-route-map):<h2>"Route Map" + five entries fromSTUDIO_YEMAYA_PROJECT_WORKSPACES_ROUTE_MAP. - Quick-action panel: two
quickActionlinks.
States#
- Loading —
data-yemaya-pw-loading"Loading workspace plans…" until the GET catalog resolves. - Unauthorized —
data-yemaya-pw-unauthorized"Access restricted." on a 401/403 (Yemaya admin scope required). - Error —
data-yemaya-pw-error"Could not load the workspace plans." on a non-OK / malformed catalog response. - Ready (form) — the plans panel + create-workspace form render once the catalog loads.
- Result —
data-yemaya-pw-resultwith a verdict (data-yemaya-pw-verdict) and the issue list; submit-side validation surfaces indata-yemaya-pw-validate-error.
Interactions#
Workspace Creation Operations Lane#
- "Create-workspace payload (JSON)" —
<textarea data-yemaya-pw-workspace>(aria-label "create workspace json"). - "Validate payload" —
<button data-yemaya-pw-submit>; submitting POSTs the payload to/v1/admin/yemaya/project-workspaces/validateand renders the valid/invalid verdict +CreateWorkspaceSchemaissues.
Route map#
data-yemaya-project-workspaces-route-map — five non-interactive entries:
-
/studio/yemaya/project-workspaces— primary workspace -
/studio/yemaya/project-workspaces/templates/[templateId] -
/studio/yemaya/project-workspaces/types/[typeId] -
/studio/yemaya/project-workspaces/revisions/[revisionId] -
/studio/yemaya/project-workspaces/governance/[gateId]
Quick actions#
- "Open Yemaya Project Creation and Types workspace" →
/studio/yemaya/project-creation-and-types. - "Back to Studio workspace index" →
/studio.
Data & contracts#
- Reads:
GET /v1/admin/yemaya/project-workspaces(catalog: workspace plans- member roles) on mount.
- Writes:
POST /v1/admin/yemaya/project-workspaces/validate(create-workspace payload →CreateWorkspaceSchemavalidation result). - Realtime: none.
- Caching: client
fetchon mount withcache: 'no-store';buildBffAuthHeaders(). - Auth/role check: admin-scoped, fail-closed (401/403 → unauthorized state); signed-in + studio entitlement enforced by the proxy/middleware.
Cross-references#
- Studio overview:
studio-overview.md - Workspace source:
apps/oshun/web/src/components/studio/StudioYemayaProjectWorkspacesWorkspace.tsx - Route map source:
apps/oshun/web/src/components/studio/StudioYemayaProjectWorkspacesRouteMap.ts - Feature spec:
V1/features.md
Open questions / known gaps#
- The route-map dynamic children (templates / types / revisions / governance)
are sitemap-only — confirm whether any are backed by
page.tsxfiles yet.