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>viaWorkspaceSection.
- Route Map panel (
data-aja-asset-storage-route-map,<h2>"Route Map"): 6STUDIO_AJA_ASSET_STORAGE_ROUTE_MAPentries (path + purpose). - Quick-action lane: six
Link.quickActionanchors (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#
Breadcrumb#
- "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-securityand 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#
- Parent:
../../studio-overview.md - Sibling routes (embedded as lanes):
- Component sources:
apps/oshun/web/src/components/studio/StudioAjaAssetStorageWorkspace.tsxapps/oshun/web/src/components/studio/StudioAjaAssetStorageRouteMap.ts
Open questions / known gaps#
- Output Retrieval and Output Package Contents lanes are not yet in this walkthrough sweep — link once those files are created.