# Oshun Studio Surface Inventory (YSD-0106)

Compiled 2026-07-18 at working-tree commit `21d024fcf2` by direct inspection of
`apps/oshun/web` and `libs/oshun/*`. Covers the eight dimensions YSD-0106 names:
routes, shared navigation, authentication, tenant context, Library persistence,
design tokens, responsive layouts, accessibility primitives.

## Routes (`apps/oshun/web/src/app/`)

- Top-level route groups include: `(workspace)/workspace`, `library`
  (`collection`, `collections`), `nisaba` (`notebook`, `notebooks`, `graph`,
  `compare`, `plan`, `scholar`, `manuscript`, `lexicon`, `daily`), `metis`,
  `studio`, `auth/verify-email`, `onboarding`, `billing`, `legal`, `messages`,
  `notifications`, `explore`, `activity`, `events`, `assistant`, `mobile`,
  `operator`, plus product-specific groups (`lilith`, `lilith-studio`,
  `mawu-studio`, `egbe-studio`, `atelier`, `arete`, `nyx`, `d`, `domains`).
  Error/loading/not-found boundaries exist at the root (`error.tsx`,
  `global-error.tsx`, `loading.tsx`, `not-found.tsx`).
- **`/studio` has 58 route directories.** Domain surfaces: `yemaya`, `aja`,
  `hathor`, `bellona`, `isis`, `neith`, `nous`, `tara`, `compose`, `generation`,
  `generation-gallery`, `authoring`, `project-obsidian`, `concordia-workbench`.
  Platform surfaces (directly reusable for the study workspace):
  `authentication-architecture`, `rbac-permission-policy`,
  `enterprise-tenant-isolation`, `real-time-collaboration-substrate`,
  `presence-cursor-systems`, `commenting-annotation-system`,
  `file-media-ingestion`, `asset-preview-pipeline`,
  `background-jobs-progress-ux`, `navigation-commands`,
  `workspace-context-switching`, `cross-domain-entity-model`,
  `search-discovery`, `notification-center`, `review-approval-workflows`,
  `data-retention-lifecycle-controls`, `audit-compliance-surfaces`,
  `accessibility-governance`, `internationalization-localization`,
  `design-language`, `color-system`, `typography`, `spacing-layout`,
  `component-primitives`, `complex-interactions`, `resilience-error-ux`,
  `performance-budgets`, `experimentation-feature-flags`,
  `security-hardening-program`, `session-device-management`.
- **`/studio/study` does not exist yet** — created by YSD-1002 after the
  YSD-0122 route decision.
- `apps/oshun/web/src/components/studio/` holds **1,464 components**; the
  YSD-0101/0102 caveat applies — many Studio panels are fixture-driven (verified
  example: `StudioHathorDirectorPerformanceReplaySystemPanel.tsx`) and each must
  be re-verified before being treated as a working primitive.

## Shared navigation

- `libs/oshun/navigation` — `customer-ia.ts`, `admin-ia.ts` (+bindings),
  `cross-domain-target.ts`, `current-domain-store.ts`,
  `assistant-continuity-journey.ts` (all with tests).
- `libs/oshun/shell-core` — `command-surface.ts`, `deep-links.ts`,
  `account-switcher.ts`, `current-domain-persistence.ts`, `auth-lifecycle.ts`,
  `activity-timeline.ts`.
- App components: `CommandPalette.tsx`, `DomainSwitcherEntryPanel.tsx`,
  `CrossDomainQuickActionsMenu.tsx`, `DeepLinkBuilder.tsx`,
  `DomainRouteExperience.tsx`, `DomainTransition.tsx`, `DomainStartupGate.tsx`,
  `DomainErrorBoundary.tsx`, `KeyboardShortcutHelp.tsx`, `FocusModeToggle.tsx`.
- Additional shells: `libs/oshun/shell-desktop`, `shell-wearable`,
  `shell-assistant`, `shell-routines`, `shell-achievements`.

## Authentication

- `libs/oshun/auth` — `auth-client.ts`, `customer-auth-model.ts`,
  `admin-access.ts`, `admin-operator-directory.ts`, plus customer
  consent/data-deletion/data-export/support-history stores (the deletion and
  export stores matter for YSD-3060+ deletion flows).
- App side: `apps/oshun/web/src/auth/`, `src/lib/auth-session.ts`
  (`OSHUN_SESSION_COOKIE_NAME='oshun-session'`,
  `OSHUN_ACCESS_TOKEN_COOKIE_NAME='oshun-access'`, `WebAuthUser` with
  `plan: 'free'|'pro'|'premium'`, linked accounts), route `auth/verify-email`.
- `apps/oshun/bff` is the client-facing API composition layer (the workspace BFF
  routes belong here or follow its pattern).

## Tenant context

- `libs/oshun/tenant-console` (tenant administration), `apps/oshun/tenant-admin`
  app, Studio surface `studio/enterprise-tenant-isolation`.
- Persistence is tenant-scoped: oshun Prisma projections carry `tenantId` with
  tenant-scoped uniqueness (e.g.
  `NisabaAnnotation @@unique([tenantId, contractSchema, sourceRecordId])`);
  `libs/shared/live-media/src/identifiers.ts` provides a UUID-branded
  `TenantIdSchema` reusable in new contracts.

## Library persistence

- Routes: `/library` with `collection/` and `collections/`.
- `libs/oshun/persistence/prisma/schema.prisma` —
  `model LibraryLibraryCollection` (line 1594) backs shared Library collections;
  the same schema holds the cross-domain Nisaba projections (`NisabaNotebook`,
  `NisabaStudyPlan`, `NisabaAnnotation`, `NisabaConceptGraphNode`) that give the
  shell its Nisaba continuity.
- Nisaba surfaces already mounted in the shell (`/nisaba/notebook(s)`, `/graph`,
  `/compare`, `/plan`, `/scholar`) prove the Library/notebook continuity path
  the proposal relies on.

## Design tokens

- `libs/oshun/design-tokens` — shared token package (`tokens.ts` + tests).
- `apps/oshun/web/src/design-system/tokens.ts` — app-level tokens (+ a
  `lilith/tokens.ts` product variant, `__tests__/tokens.test.ts`).
- `libs/oshun/design-language` and Studio documentation routes
  (`design-language`, `color-system`, `typography`, `spacing-layout`,
  `component-primitives`) document the system.

## Responsive layouts

- `apps/oshun/web/src/design-system/tokens.ts:329-344` exports `breakpoints`
  (`sm/md/lg/xl`), `BreakpointKey`, and `mediaQueries` (min-width queries) — the
  responsive baseline the YSD-1015 test matrix should reference.
- `apps/oshun/web/src/mobile` route group plus `admin-mobile`, `mobile`,
  `wearable` apps define the smaller-form-factor surfaces.

## Accessibility primitives

- `apps/oshun/web/src/components/AccessibilityShell.tsx` — the shell-level
  accessibility wrapper.
- `FocusModeToggle.tsx`, `KeyboardShortcutHelp.tsx`, `LanguageSwitcher.tsx`;
  Studio governance surface `studio/accessibility-governance`.
- `libs/oshun/i18n` + `apps/oshun/web/src/i18n` for locale support;
  `studio/internationalization-localization` documents the i18n system.
- Iris owns accessibility policy (YSD-0162); these shell primitives are the
  Oshun-side implementation hooks the workspace must compose with.

## Adjacent shell capabilities worth reusing

- `apps/oshun/web/src/offline` + `libs/oshun/offline` (offline behavior,
  YSD-7/17 relevance), `src/observability`, `src/notifications`,
  `src/performance`, `src/experimentation`, `CookieConsentBanner.tsx`,
  `CustomerShellStatusBannerStack.tsx`, `DomainDegradation.tsx` (degraded-state
  UX pattern for YSD-2007 responses), `apps/oshun/clipper-extension` (browser
  clipper — reuse candidate for YSD-5011).

## Gaps for the study workspace

1. No `/studio/study` route (YSD-1002; blocked on YSD-0122 route decision).
2. No study-specific navigation entry in the customer IA (`Study` global nav
   item per proposal §3.3/§8.1).
3. Studio yemaya/aja/hathor panels are fixture-driven until re-verified — the
   1,464-component surface is a design-reference library, not a primitive
   library.
