Context. surface studio · domain aja · route /studio/aja/depth-sensing · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/aja/depth-sensing/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 console that unifies the Aja spatial-capture lane consoles for depth sensing. It has no /v1 fetch of its own — it renders a capability summary plus five named lanes, each embedding a sibling leaf workspace (Depth Analysis, Multi-View Reconstruction, Pose Estimation, Segmentation, Ground Truth Comparison), so the operator can run all the depth-sensing primitives from one surface.
Entry points#
- Direct URL / bookmark —
/studio/aja/depth-sensing; metadata canonical to this path - Studio nav — Domain-bridge studios section of
/studio - Breadcrumb parent —
/studio/aja/depth-analysis(declared in the page.tsx breadcrumb<ol>) - Sibling quick-actions on this page: Depth Analysis, Multi-View Reconstruction, Pose Estimation, Segmentation, Back to Studio
- Operator surfacing — see
../../studio-overview.md
Layout regions#
page.tsx renders inside <ShellLayout active="studio">:
- Breadcrumb panel (
data-aja-depth-sensing-breadcrumbs):<nav aria-label="Aja Depth Sensing breadcrumbs">→Studio / Aja Depth Analysis / Depth Sensing - Workspace (
<StudioAjaDepthSensingWorkspace />, archetype: AGGREGATOR):<h1>(WorkspaceHeading) "Aja Depth Sensing Workspace"- Summary
<p data-aja-depth-sensing-summary>— unified depth-sensing surface - Capability Summary panel (
data-aja-depth-sensing-capability-summary,<h2>Capability Summary</h2>) — 4data-aja-depth-sensing-capabilitycards:sensing-control-plane,diagnostics-and-trace-observability,security-permission-audit-controls,api-parity-and-contract-assurance - Named lanes (each a
<h2>panel embedding a sibling viaWorkspaceSection):data-aja-depth-sensing-depth-analysis-lane→ "Depth Analysis Lane" →<StudioAjaDepthAnalysisWorkspace />data-aja-depth-sensing-multi-view-reconstruction-lane→ "Multi-View Reconstruction Lane" →<StudioAjaMultiViewReconstructionWorkspace />data-aja-depth-sensing-pose-estimation-lane→ "Pose Estimation Lane" →<StudioAjaPoseEstimationWorkspace />data-aja-depth-sensing-segmentation-lane→ "Segmentation Lane" →<StudioAjaSegmentationWorkspace />data-aja-depth-sensing-ground-truth-comparison-lane→ "Ground Truth Comparison Lane" →<StudioAjaGroundTruthComparisonWorkspace />
- Route Map panel (
data-aja-depth-sensing-route-map):<h2>Route Map</h2>listing 6 entries fromSTUDIO_AJA_DEPTH_SENSING_ROUTE_MAP(primary, streams, calibrations, reconstructions, parity, governance) - Quick-action panel: five
Link.quickActionanchors — Depth Analysis, Multi-View Reconstruction, Pose Estimation, Segmentation, Back to Studio
States#
The aggregator has no fetch of its own; loading / unauthorized / error / ready / result states are owned per embedded lane (each leaf GETs its own catalog on mount and renders its own admin-scope unauthorized / error / form / result blocks — see the individual sibling docs):
- Depth Analysis Lane —
<StudioAjaDepthAnalysisWorkspace /> - Multi-View Reconstruction Lane —
<StudioAjaMultiViewReconstructionWorkspace /> - Pose Estimation Lane —
<StudioAjaPoseEstimationWorkspace /> - Segmentation Lane —
<StudioAjaSegmentationWorkspace /> - Ground Truth Comparison Lane —
<StudioAjaGroundTruthComparisonWorkspace /> - Empty / Standalone PWA / offline — N/A at the aggregator level; shell is SSR, each lane is a client fetch on mount
Interactions#
Embedded lanes#
Each lane's form fields and submit are owned by the embedded leaf:
- Depth Analysis Lane — embeds
StudioAjaDepthAnalysisWorkspace - Multi-View Reconstruction Lane — embeds
StudioAjaMultiViewReconstructionWorkspace - Pose Estimation Lane — embeds
StudioAjaPoseEstimationWorkspace - Segmentation Lane — embeds
StudioAjaSegmentationWorkspace - Ground Truth Comparison Lane — embeds
StudioAjaGroundTruthComparisonWorkspace
Capability Summary#
- Capability cards (4 ×
<article>) — non-interactive descriptive copy
Route Map panel#
- Route entries (6 ×
<article>) — non-interactive path+purpose
Quick-action panel#
- "Open Aja Depth Analysis workspace" →
/studio/aja/depth-analysis - "Open Aja Multi-View Reconstruction workspace" →
/studio/aja/multi-view-reconstruction - "Open Aja Pose Estimation workspace" →
/studio/aja/pose-estimation - "Open Aja Segmentation workspace" →
/studio/aja/segmentation - "Back to Studio workspace index" →
/studio
Data & contracts#
- Reads / Writes: none at the aggregator level; delegated to the embedded
leaves, which GET their catalog on mount and POST their verb:
GET /v1/admin/aja/depth-analysisGET /v1/admin/aja/multi-view-reconstructionGET /v1/admin/aja/pose-estimation/POST /v1/admin/aja/pose-estimation/evaluateGET /v1/admin/aja/segmentationGET /v1/admin/aja/ground-truth-comparison/POST /v1/admin/aja/ground-truth-comparison/compare
- Realtime: none
- Caching: each embedded lane does a client
fetchon mount withcache: 'no-store'andbuildBffAuthHeaders(); SSR shell only - Auth/role check: each embedded BFF endpoint is admin-scoped + fail-closed (401/403 → that lane's unauthorized render); route behind the signed-in + studio proxy gate
Cross-references#
- Parent:
../../studio-overview.md - Shell:
../../../shell/04-auth-session.md - Embedded / sibling routes:
./studio-aja-depth-analysis.md(breadcrumb parent),./studio-aja-multi-view-reconstruction.md,./studio-aja-pose-estimation.md,./studio-aja-segmentation.md,./studio-aja-ground-truth-comparison.md(embedded but not in the quick-action lane) - Component sources:
apps/oshun/web/src/components/studio/StudioAjaDepthSensingWorkspace.tsxapps/oshun/web/src/components/studio/StudioAjaDepthSensingRouteMap.ts
Open questions / known gaps#
- Ground Truth Comparison is embedded as a lane but is not surfaced in the quick-action panel; confirm whether that omission is intentional
- Route-map sub-routes are advertised but have no
page.tsxin V1