Status: Accepted
Date: 2026-03-24
Authors: OSHUN Product, OSHUN Design, OSHUN Web Engineering
Reviewers: Tara, Operations, Trust and Safety, Governance leads
Supersedes: N/A
Superseded by: N/A
Context and Problem Statement#
ADR-0055 and ADR-0056 now define the customer shell relationships for web and mobile. The remaining structural ambiguity was above that layer: the PRD says OSHUN has one customer shell and one admin shell, but the implementation still blurred them together.
In practice, /studio routes existed, but they were rendered inside customer
shell chrome and even surfaced from customer Explore as if Studio were simply
another discovery destination.
That ambiguity created several risks:
- customer navigation implied that operator tooling was part of ordinary member wayfinding
- admin routes inherited customer chrome, assistant entry, and customer shell expectations they do not actually satisfy
- the product lacked one explicit rule for how account/session continuity, evidence continuity, and shell separation should coexist
- future admin and customer IA work had no authoritative shared contract to reference
The PRD already states the intended end-state:
- customer and admin are one platform, not isolated products
- admin web is the canonical operator cockpit
- admin mobile is the urgent operations companion
- review, moderation, support, privacy, persona ops, model ops, and incidents must unify under one admin shell and one shared evidence model
Decision Drivers#
- Boundary clarity: customer and admin must be connected without being flattened into one nav.
- Role fit: member continuity and operator cockpit work have different jobs, density, and wayfinding needs.
- Shared foundation: account, identity, entitlements, notifications, evidence lineage, and audit context must carry across shells.
- Governed handoff: cross-shell transitions should be explicit, role-sensitive, and context-preserving.
- Implementation leverage: the current web app needs a shell-separation seam that can upgrade many Studio pages at once.
Considered Options#
Option 1: Keep Studio inside the customer shell#
Description: continue rendering /studio inside customer shell nav and
customer overlays.
Pros:
- Lowest short-term implementation cost.
Cons:
- Violates the PRD's separate-shell model.
- Makes operator work look like ordinary customer discovery.
- Prevents admin chrome, admin orientation, and role-appropriate controls from becoming explicit.
Option 2: Fork Studio into a fully separate app immediately#
Description: move admin routes into a totally separate deployed app before defining the shared contract.
Pros:
- Hard physical separation.
Cons:
- Over-rotates on deployment shape before the shared product contract is clear.
- Does not answer how identity, context, evidence, and handoff should behave.
- Adds migration cost before the shell relationship itself is modeled.
Option 3: Keep one platform app surface for now, but define two explicit shells with governed handoffs (Chosen)#
Description: publish one shared customer/admin shell contract, keep the web
implementation in the same codebase, but make /studio render distinct admin
shell chrome and require explicit operator handoff from the customer shell.
Pros:
- Matches the PRD's one-platform / two-shell model.
- Lets current
/studioroutes become a real admin shell immediately. - Preserves shared identity and evidence continuity without flattening nav.
- Creates a reusable contract for docs, QA, and future admin-mobile work.
Cons:
- Requires deliberate documentation so "same app codebase" is not mistaken for "same shell".
- Leaves later admin-shell visual-thesis and deep information-design work for subsequent tasks.
Decision Outcome#
Chosen option: Option 3.
Normative Platform-Shell Rule#
OSHUN has two sibling shells inside one platform:
Customer ShellAdmin Shell
They share platform foundations, but they do not share primary navigation or surface semantics.
Shared-Foundation Rule#
Customer and admin share:
- one account and session model
- shared entitlements, notifications, and identity posture
- shared object references, evidence lineage, and audit-linked context
Shared foundation does not mean shared nav chrome.
Customer-Shell Rule#
The customer shell is the member-facing continuity product across web and mobile. It owns contemplation, discovery, saved continuity, and member governance surfaces.
Customer navigation must not inline operator queues, governance workspaces, or Studio cockpit surfaces as if they were ordinary member destinations.
Admin-Shell Rule#
The admin shell is the operator cockpit. It owns queues, approvals, investigations, policy controls, evidence review, and operational reliability surfaces.
Admin routes must render dedicated operator wayfinding and context rather than inherit customer shell chrome.
Runtime-Fit Rule#
- Customer web is the broad dashboard and deep workspace runtime for members.
- Customer mobile is the continuity-first companion.
- Admin web is the canonical operator cockpit.
- Admin mobile is the urgent operations companion, not the parity target for the full cockpit.
Handoff Rule#
The normative cross-shell handoffs are:
Customer -> Admin: explicit, role-gated operator access that preserves the relevant subject or artifact context and switches into admin navigation.Admin -> Customer: deliberate return or preview handoff that drops admin chrome while keeping only the minimal member-facing context.
Customer-Entry Rule#
Customer surfaces may advertise that operator tooling exists, but they should route access through a governed entry point such as profile/operator access, not embed admin workspace links into discovery content.
Contract Publication#
The shared shell-boundary model lives in
libs/oshun/navigation/src/platform-shells.ts.
The current web admin-shell resolution and nav grouping live in
apps/oshun/web/src/navigation/shells.ts.
Scope Boundaries#
- This ADR defines the relationship between customer and admin shells.
- It does not finish the full admin-shell redesign or visual-thesis work;
later tasks such as
V1-AWEB-093still deepen that surface. - It does not define every admin mobile route; it only defines admin mobile as the urgent companion role in the shared shell model.
Architecture Implications#
/studioroutes should render admin shell chrome rather than customer shell navigation.- customer
Exploreshould stop presenting Studio as a peer discovery area - operator access should be exposed through an explicit customer-shell handoff surface
- docs, tests, and route helpers should distinguish customer shell behavior from admin shell behavior
Acceptance Criteria#
V1-UX-005 is complete only when all criteria below are true:
- A canonical ADR defines the customer/admin shell relationship.
- Shared navigation code publishes the same platform-shell boundary model.
- The web implementation renders
/studioinside explicit admin shell chrome. - Customer surfaces no longer present Studio as ordinary discovery navigation.
- Operator access is exposed through an explicit customer-shell handoff.
- Tests verify customer/admin shell resolution and the governed handoff path.
Related Decisions#
docs/adr/ADR-0019-oshun-studio-information-architecture.mddocs/adr/ADR-0061-oshun-web-shell-relationship-model.mddocs/adr/ADR-0062-oshun-mobile-shell-relationship-model.md
References#
docs/releases/v1/specs/web-app-admin-v1-prd.mdlibs/oshun/navigation/src/platform-shells.tsapps/oshun/web/src/navigation/shells.tsapps/oshun/web/src/components/ShellLayout.tsx