Context. surface studio · domain yemaya · route /studio/yemaya/team-collaboration · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/yemaya/team-collaboration/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 that runs the team permission resolver — it resolves each
member's effective permissions from a role-definition map (with recursive role
inheritance) and flags roster issues (unknown roles, members with no roles). The
RBAC lane is wired to the live resolver over
/v1/admin/yemaya/team-collaboration; 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-workspaces), and from thecommunityaggregator that embeds this lane. - Direct URL / bookmark (signed-in + studio entitlement).
Layout regions#
page.tsx renders ShellLayout active="studio" and:
- Workspace panel (
StudioYemayaTeamCollaborationWorkspace,data-yemaya-team-collaboration-workspace):<h1>(WorkspaceHeading) "Yemaya Team Collaboration Workspace".- Summary paragraph (
data-yemaya-team-collaboration-summary). - Team RBAC Resolution Lane (
data-yemaya-tc-lane-heading,<h2>): the catalog-loaded form (data-yemaya-tc-form).
- Route Map panel (
data-yemaya-team-collaboration-route-map):<h2>"Route Map" + five entries fromSTUDIO_YEMAYA_TEAM_COLLABORATION_ROUTE_MAP. - Quick-action panel: two
quickActionlinks.
States#
- Loading —
data-yemaya-tc-loading"Loading team RBAC resolver…" until the GET catalog resolves. - Unauthorized —
data-yemaya-tc-unauthorized"Access restricted." on a 401/403 (Yemaya admin scope required). - Error —
data-yemaya-tc-error"Could not load the team RBAC resolver." on a non-OK / malformed catalog response. - Ready (form) — engine summary (
data-yemaya-tc-engine-summary) + the roles/members form render once the catalog loads. - Result —
data-yemaya-tc-resultwith a headline (data-yemaya-tc-headline) + per-member effective permissions and roster issues; submit-side validation surfaces indata-yemaya-tc-resolve-error.
Interactions#
Team RBAC Resolution Lane#
- "Roles + members (JSON)" —
<textarea data-yemaya-tc-payload>(aria-label "team rbac payload json"), prefilled with a sample role map. - "Resolve permissions" —
<button data-yemaya-tc-submit>; submitting POSTs the roles + members to/v1/admin/yemaya/team-collaboration/resolveand renders each member's effective permissions + flagged roster issues.
Route map#
data-yemaya-team-collaboration-route-map — five non-interactive entries:
-
/studio/yemaya/team-collaboration— primary workspace -
/studio/yemaya/team-collaboration/threads/[threadId] -
/studio/yemaya/team-collaboration/assignments/[assignmentId] -
/studio/yemaya/team-collaboration/revisions/[revisionId] -
/studio/yemaya/team-collaboration/governance/[gateId]
Quick actions#
- "Open Yemaya Project Workspaces workspace" →
/studio/yemaya/project-workspaces. - "Back to Studio workspace index" →
/studio.
Data & contracts#
- Reads:
GET /v1/admin/yemaya/team-collaboration(catalog: summary + role metadata) on mount. - Writes:
POST /v1/admin/yemaya/team-collaboration/resolve(roles + members → effective permissions + roster issues). - 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/StudioYemayaTeamCollaborationWorkspace.tsx - Route map source:
apps/oshun/web/src/components/studio/StudioYemayaTeamCollaborationRouteMap.ts - Embedded by:
studio-yemaya-community.md(Team Collaboration Lane) - Feature spec:
V1/features.md
Open questions / known gaps#
- The route-map dynamic children (threads / assignments / revisions /
governance) are sitemap-only — confirm whether any are backed by
page.tsxfiles yet.