# V1 Studio Surface — Comprehensive Gap Analysis (2026-05-30)

This is the entire-surface analysis of the operator/creator **Studio** workspace
layer for Oshun V1, the dominant remaining gap toward "every feature and flow
and journey fully and correctly implemented." It is evidence-backed: every
number below comes from a census of the actual component files, not estimates.
It complements the prior backend/engine audits
([`V1_INDEPENDENT_REVERIFICATION_2026-05-30.md`](V1_INDEPENDENT_REVERIFICATION_2026-05-30.md),
[`V1_PRODUCTION_READINESS_GAP_ANALYSIS_2026-05-30.md`](V1_PRODUCTION_READINESS_GAP_ANALYSIS_2026-05-30.md))
and the deploy-tier map
([`V1_DEPLOYMENT_REQUIREMENTS.md`](V1_DEPLOYMENT_REQUIREMENTS.md)).

## Method

Census of every `apps/oshun/web/src/components/studio/Studio*Workspace.tsx`
component (the unit a `/studio/.../page.tsx` route renders), classified three
ways by static inspection:

- **WIRED** — issues a real backend call (`fetch` / `buildBffAuthHeaders` / a
  `/v1/...` endpoint) and renders that data.
- **BREADCRUMB** — ≤30 lines, renders only the shared
  `StudioHathorEconomyModelingLaneCard` navigational card; zero domain content.
- **STATIC** — larger hand-written content (route-maps, capability lists,
  governance copy) but **no backend call** — it _looks_ built yet is wired to
  nothing.

## Headline census

| Status                              | Count   | Meaning                                                                                                               |
| ----------------------------------- | ------- | --------------------------------------------------------------------------------------------------------------------- |
| Total `Studio*Workspace` components | **469** | the full studio surface                                                                                               |
| WIRED (any `/v1/` call)             | 19      | …but 5 only call `/v1/auth/validate-context` (an auth shell, not a feature backend) → **~14 genuinely feature-wired** |
| BREADCRUMB (pure stub)              | 202     | render only the lane card                                                                                             |
| STATIC (fabricated, unwired)        | 248     | substantial copy, **no backend**                                                                                      |

**~450 of 469 studio components are not wired to a real backend.** The earlier
"~234" figure counted only components that render the lane card; the true
surface (including the 248 fabricated-static pages that embed it indirectly or
not at all) is larger.

## Per-domain matrix

| Domain                       | WIRED | BREADCRUMB | STATIC | TOTAL |
| ---------------------------- | ----- | ---------- | ------ | ----- |
| Aja (mocap/animation)        | 1     | 54         | 43     | 98    |
| Isis (generation)            | 10    | 56         | 22     | 88    |
| Bellona (Meta Quest)         | 1     | 1          | 80     | 82    |
| Yemaya (production)          | 1     | 49         | 29     | 79    |
| Hathor (narrative/NPC)       | 5     | 42         | 27     | 74    |
| Other (ApiGateway/Tara/misc) | 1     | 0          | 47     | 48    |

Notable shape: **Bellona is 80/82 STATIC** (hand-written Meta Quest feature
pages, none wired); **Aja is the largest pure-breadcrumb domain** (54); **Isis
is the most-wired** (the generation backends exist).

## What IS genuinely wired (14 feature pages)

Pre-existing: `HathorQuestAuthoring`, `HathorStoryGraphAuthoring`,
`HathorTimelineModeling`, `HathorWorldConfiguration` (the §Hathor studio record
routes), `ApiGatewayBffComposition` (the studio workflow-composition routes).

Built this program (Isis, 9, each with a real backend + tests):
`CivitaiIntegration` (intake review + decisions), `ComfyuiNodes` (node registry

- deprecation), `LoRATraining` (§24.5 lifecycle), `ModelMerging` (provenance
  bundles), `CollectionManagement` (output-gallery bulk curation),
  `GPUWorker­Architecture` (RunPod ops + secret rotation), `TextToSpeech` (§24.7
  voice-clone lifecycle), `JobManagement` (generation queue list/retry),
  `LineageGraph` (provenance DAG).

Auth-shell-only (call `/v1/auth/validate-context`, no feature backend):
`AjaApiEndpoints`, `BellonaClient`, `HathorClient`, `IsisGenerationApi`,
`YemayaApi`.

## Gap taxonomy (the ~450)

1. **Pure breadcrumbs (202)** — `[domain] route with dense expert-mode controls`
   placeholder text + the lane card. No domain logic, no data. Converting each =
   build the page's real feature **and its backend** (most have none), per the
   standing directive (full QuestAuthoring-density, build the backend too).

2. **Fabricated static (248)** — these are the subtler gap: they pass a naive
   "is there code here?" check (hundreds of LOC of capability cards, route-maps,
   governance copy) but render **invented constants, not real data**. Example
   already corrected: `TextToSpeech` was 504 LOC of static governance sections
   embedding the breadcrumb; it is now wired to the real clone-workflow backend.
   The other 247 (esp. all of Bellona) remain fabricated-static.

## Non-page V1 systems — status (cross-ref prior audits)

These are **real and reachable** (verified in prior turns; not part of the 450):
domain engines + the takedown/DSAR/crisis cascades; the Isis generation gate +
async job queue + per-provider adapters; messaging transports + LTI 1.3 verify +
SCORM 1.2/2004 RTE + the reminder planner/worker/delivery **and now the 4
producers**; the abuse-protection durable limiter; the agentic-studio
kill-switch/budget guard **and now its real full-mutation tool catalog**; the
Living-Scenes render→watermark→PSE→C2PA→durable-share pipeline.

## Irreducible externals (not source code)

Documented in `V1_DEPLOYMENT_REQUIREMENTS.md`: trained AI-video model weights +
GPU endpoint; live Twilio/SES/FCM/Meta + Suno/RunPod/Meshy credentials;
per-tenant LMS connector registrations; the reminder/worker cron host; expanded
editorial corpus; the C2PA signing key. Each has ready in-repo code that
consumes it and a functioning in-repo default without it.

## Production-readiness verdict

- **Backend / safety / governance / generation / messaging layers:**
  production-real and reachable. The algorithmic, security, protocol, and
  pipeline gaps the earlier audits flagged are closed.
- **Operator/creator Studio frontend:** **~3% wired** (14 feature pages of 469).
  This is the dominant remaining in-repo gap. It is **not** blocked on missing
  engineering primitives — most pages need a straightforward read/mutate backend
  over an existing domain lib + the page itself, on the proven pattern. It is
  blocked on **volume**: ~450 pages × (backend + page + tests) is a multi-week,
  per-page program.

## Definition of done (per user decision #11)

Done = all **in-repo** code complete: all studio pages + their backends, plus
the now-complete reminder producers + agentic catalog; externals documented
(above), not blockers. Against that bar, the studio surface is the open item,
quantified here at **~450 unwired components**.

## Recommended sequence (the executing pattern)

Per the standing directive: one verified page per turn — read the page's `V1/`
feature, build the full-density workspace **and its backend** (mirror the
admin-isis pattern: store + admin-scoped fail-closed route + lib algorithm where
one exists), rewrite the breadcrumb-enshrining tests onto real behavior,
commit + push both refs. Priority order in flight: remaining **Isis** (most have
or are near a backend) → **Aja** → **Yemaya** → **Hathor** → **Bellona**.
Highest-leverage targets next: Isis pages with existing libs (ContentSafety,
ModelRegistry, ProvenanceTracking, CostTracking) before the net-new-backend
Aja/Yemaya domains.
