Context. surface studio · domain aja · route /studio/aja/input-video-support · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/aja/input-video-support/page.tsx
Last walked. 2026-07-04 focused real-dev-infra Playwright route walk — anonymous redirect, Aja-admin catalog, exact chunk plans through the real BFF, validation, malformed/transport failures, loading/403/503/malformed catalog states, pending controls, route-map + quick-action affordances, mobile/touch/axe, and direct BFF auth/schema gates. Evidence: WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md §284.
Purpose#
Admin lane console for planning video chunking. Its operations lane wires the
@aja/video-chunking VideoSplitter via /v1/admin/aja/input-video-support:
plan how an input video is split into overlapping processing chunks for the
distributed motion pipeline — frame ranges, time ranges, seam overlap, priority
— and report whether the plan covers the full range with no gaps.
Entry points#
- Direct URL / bookmark —
/studio/aja/input-video-support; metadata setsalternates.canonical - Linked from
/studioDomain-bridge studios section (Aja sub-area) - Quick action — "Open Yemaya Documentation Playground workspace"
(
/studio/yemaya/documentation-playground)
Layout regions#
page.tsx renders inside <ShellLayout active="studio">:
- Workspace
StudioAjaInputVideoSupportWorkspace—<h1>"Aja Input Video Support Workspace" + summary (data-aja-input-video-support-summary), then the Chunk Planning Operations Lane (<h2 data-aja-ivs-lane-heading>) - Route Map panel (
data-aja-input-video-support-route-map,<h2>) — 5 entries fromSTUDIO_AJA_INPUT_VIDEO_SUPPORT_ROUTE_MAP - Quick-action lane (
data-aja-input-video-support-quick-actions) — intentional cross-domain documentation adjacency plus Studio index:/studio/yemaya/documentation-playground,/studio
States#
- Loading —
data-aja-ivs-loading"Loading video-chunking engine…" whileGET /v1/admin/aja/input-video-supportis in flight - Unauthorized (gated) —
data-aja-ivs-unauthorizedon 401/403; admin scope message ("Aja workspace scope required to plan video chunking.") - Error —
data-aja-ivs-erroron non-OK / malformed / network failure - Ready (form) —
data-aja-ivs-formonce the catalog loads (with the engine summarydata-aja-ivs-engine-summary), strict catalog counts, and chunking/blending strategy spans - Result —
data-aja-ivs-result(-headlinechunk count + valid/gaps,-chunkslist per chunk, stable chunk row attributes) after a successful POST; validation/planner error indata-aja-ivs-plan-error - Offline — SSR shell; lane error state when
fetchunavailable - Standalone PWA — desktop layout;
quickActionanchors wrap - Empty — N/A; catalog is constant
Interactions#
Chunk Planning Operations Lane#
- Total frames (
<input data-aja-ivs-frames type="number">) — positive integer - FPS (
<input data-aja-ivs-fps type="number">) — positive number - Chunk seconds (
<input data-aja-ivs-target type="number">) — optionaltargetDurationSeconds - Overlap seconds (
<input data-aja-ivs-overlap type="number">) — optionaloverlapDurationSeconds - "Plan chunks" (
<button data-aja-ivs-submit>) — POSTs{ totalFrames, fps, targetDurationSeconds?, overlapDurationSeconds? }to/v1/admin/aja/input-video-support/plan; locked withdata-aja-ivs-submit-state="planning"while the real request is pending
Route Map panel#
- 5 entries (
<article data-aja-input-video-support-route-map-entry>) perpath+purpose— non-interactive, exact path ordering asserted
Quick-action lane#
- "Open Yemaya Documentation Playground workspace" →
/studio/yemaya/documentation-playground - "Back to Studio workspace index" →
/studio
Data & contracts#
- Reads:
GET /v1/admin/aja/input-video-support(catalog:summary,chunkingStrategies,blendingStrategies,defaultConfig) on mount,cache: 'no-store',buildBffAuthHeaders(); the client now fails closed unless all 5 chunking strategies and all 6 blending strategies are present - Writes:
POST /v1/admin/aja/input-video-support/plan - Realtime: none
- Caching: client fetch on mount (no-store); SSR shell
- Auth/role check: BFF endpoints admin-scoped, fail-closed (401/403 → unauthorized render); route gated signed-in + studio via the proxy
Verification evidence#
apps/oshun/web/e2e/studio-aja-input-video-support.spec.tsruns against the real Next Studio shell and local BFF, forwarding browser bearer auth rather than mocking the chunking contract.- The spec covers anonymous redirect, Aja-admin catalog load, exact seeded 900-frame / edited 1500-frame chunk plans, local validation with no POST, malformed result, transport failure, loading / 503 / malformed / non-admin states, pending form locking, mobile no-overflow + 44px controls, scoped axe, and direct BFF 401/403/400/200 gates.
Cross-references#
- Parent:
../../studio-overview.md - Sibling routes (quick action crosses domains):
/studio/yemaya/documentation-playground - Component sources:
apps/oshun/web/src/components/studio/StudioAjaInputVideoSupportWorkspace.tsxapps/oshun/web/src/components/studio/StudioAjaInputVideoSupportRouteMap.ts
Open questions / known gaps#
- The single quick action crosses into the Yemaya domain (documentation-playground) rather than a sibling Aja route — confirmed as the intentional documentation adjacency by the 2026-07-04 route-level Playwright coverage, which asserts the exact href alongside the Studio index action