V1 Web PWA · Surface walkthrough

Studio Aja · Asset Storage

A per-surface walkthrough of the V1 Web PWA studio surface: layout, states, interactions, data, and cross-references.

walked
8sections3 minread

On this page

Context. surface studio · domain aja · route /studio/aja/asset-storage · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/aja/asset-storage/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#

Aggregator workspace that composes five sibling Aja lane consoles into one asset-lifecycle surface. It owns no /v1 fetch of its own; the live data and controls come from the embedded leaves (Output Retrieval, Output Package Contents, Distributed Processing, Data Retention, Content Security). The page adds a Capability Summary, a breadcrumb, a Route Map, and a quick-action lane.

Entry points#

  • Direct URL / bookmark/studio/aja/asset-storage (metadata canonical).
  • Studio nav — Domain-bridge studios section of /studio.
  • Breadcrumb parent/studio/aja/output-retrieval (page breadcrumb).
  • Quick-actions — reachable from sibling routes that list this page.

Layout regions#

page.tsx renders inside <ShellLayout active="studio">:

  • Breadcrumb panel (data-aja-asset-storage-breadcrumbs): <nav aria-label="Aja Asset Storage breadcrumbs">Studio (link) / Aja Output Retrieval (link → /studio/aja/output-retrieval) / Asset Storage (aria-current="page").
  • Workspace <StudioAjaAssetStorageWorkspace />:
    • <h1> "Aja Asset Storage Workspace" + summary (data-aja-asset-storage-summary).
    • Capability Summary (data-aja-asset-storage-capability-summary, <h2>) — 4 cards (data-aja-asset-storage-capability=<id>): Asset Lifecycle Orchestration, Storage Observability and Diagnostics, Security and Retention Governance, Parity and Delivery Assurance.
    • Output Retrieval Lane (data-aja-asset-storage-output-retrieval-lane, <h2>) → embeds <StudioAjaOutputRetrievalWorkspace />.
    • Output Package Contents Lane (data-aja-asset-storage-output-package-lane) → embeds <StudioAjaOutputPackageContentsWorkspace />.
    • Distributed Processing Lane (data-aja-asset-storage-distributed-processing-lane) → embeds <StudioAjaDistributedProcessingWorkspace />.
    • Data Retention Lane (data-aja-asset-storage-data-retention-lane) → embeds <StudioAjaDataRetentionWorkspace />.
    • Content Security Lane (data-aja-asset-storage-content-security-lane) → embeds <StudioAjaContentSecurityWorkspace />.
    • Embedded titles demote to <h2>/<h3> via WorkspaceSection.
  • Route Map panel (data-aja-asset-storage-route-map, <h2> "Route Map"): 6 STUDIO_AJA_ASSET_STORAGE_ROUTE_MAP entries (path + purpose).
  • Quick-action lane: six Link.quickAction anchors (no self-link).

States#

This page has no own data fetch; runtime state is per embedded lane (each leaf runs its own Loading / Unauthorized / Error / Ready-form lifecycle).

  • Loading — per embedded lane (the leaves fetch their catalog on mount).
  • Unauthorized — per embedded lane (admin-scope 401/403 render).
  • Error — per embedded lane.
  • Populated — all five lanes render their controls + results.
  • Empty — N/A; capability cards and lanes always render.

Interactions#

  • "Studio"/studio
  • "Aja Output Retrieval"/studio/aja/output-retrieval
  • "Asset Storage"aria-current="page"

Workspace body#

  • Capability cards (4) — non-interactive.
  • Output Retrieval Lane → embeds StudioAjaOutputRetrievalWorkspace.
  • Output Package Contents Lane → embeds StudioAjaOutputPackageContentsWorkspace.
  • Distributed Processing Lane → embeds StudioAjaDistributedProcessingWorkspace.
  • Data Retention Lane → embeds StudioAjaDataRetentionWorkspace.
  • Content Security Lane → embeds StudioAjaContentSecurityWorkspace (see ./studio-aja-content-security.md).

Route Map#

  • Route entries (6) — non-interactive listing.

Quick-action lane#

  • "Open Aja Output Retrieval workspace"/studio/aja/output-retrieval
  • "Open Aja Output Package Contents workspace"/studio/aja/output-package-contents
  • "Open Aja Distributed Processing workspace"/studio/aja/distributed-processing
  • "Open Aja Data Retention workspace"/studio/aja/data-retention
  • "Open Aja Content Security workspace"/studio/aja/content-security
  • "Back to Studio workspace index"/studio

Data & contracts#

  • Reads: none at page level — delegated to the embedded leaves. Embedded endpoints (GET on mount): /v1/admin/aja/content-security and the distributed-processing / data-retention / output-retrieval / output-package-contents leaves' own endpoints.
  • Writes: none at page level; each leaf fires its own POST /v1/admin/aja/<slug>/<verb>.
  • Realtime: none.
  • Caching: client fetch on mount (cache: 'no-store') inside each leaf; SSR shell.
  • Auth/role check: BFF endpoints admin-scoped + fail-closed (401/403 → unauthorized render per lane); route gated signed-in + studio via proxy.

Cross-references#

Open questions / known gaps#

  • Output Retrieval and Output Package Contents lanes are not yet in this walkthrough sweep — link once those files are created.