---
path: /studio/aja/distributed-workers
surface: studio
domain: aja
auth: signed-in + studio entitlement
source: apps/oshun/web/src/app/studio/aja/distributed-workers/page.tsx
status: walked
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)'
---

# Studio Aja · Distributed Workers

## Purpose

Aggregator workspace that composes five sibling Aja lane consoles into one
distributed-execution surface: Distributed Processing, Batch Operations, Batch
Inference, Job Lifecycle, and Queue Statistics. It owns no `/v1` fetch; live
data and controls come from the embedded leaves. The page adds a Capability
Summary, a breadcrumb, a Route Map, and a quick-action lane.

## Entry points

- **Direct URL / bookmark** — `/studio/aja/distributed-workers`.
- **Studio nav** — Domain-bridge studios section of `/studio`.
- **Breadcrumb parent** — `/studio/aja/distributed-processing`.
- **Quick-actions** — Distributed Processing, Batch Operations, Batch Inference,
  Job Lifecycle, Queue Statistics.

## Layout regions

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

- **Breadcrumb panel** (`data-aja-distributed-workers-breadcrumbs`):
  `<nav aria-label="Aja Distributed Workers breadcrumbs">` → `Studio` (link) /
  `Aja Distributed Processing` (link → `/studio/aja/distributed-processing`) /
  `Distributed Workers` (`aria-current="page"`).
- **Workspace** `<StudioAjaDistributedWorkersWorkspace />`:
  - `<h1>` "Aja Distributed Workers Workspace" + summary
    (`data-aja-distributed-workers-summary`).
  - Capability Summary (`data-aja-distributed-workers-capability-summary`,
    `<h2>`) — 4 cards (`data-aja-distributed-workers-capability=<id>`): Worker
    Control Plane, Diagnostics and Trace Observability,
    Security/Permission/Audit Controls, API Parity and Contract Assurance.
  - Distributed Processing Lane
    (`data-aja-distributed-workers-distributed-processing-lane`) → embeds
    `<StudioAjaDistributedProcessingWorkspace />`.
  - Batch Operations Lane
    (`data-aja-distributed-workers-batch-operations-lane`) → embeds
    `<StudioAjaBatchOperationsWorkspace />`.
  - Batch Inference Lane (`data-aja-distributed-workers-batch-inference-lane`) →
    embeds `<StudioAjaBatchInferenceWorkspace />`.
  - Job Lifecycle Lane (`data-aja-distributed-workers-job-lifecycle-lane`) →
    embeds `<StudioAjaJobLifecycleWorkspace />`.
  - Queue Statistics Lane (`data-aja-distributed-workers-queue-statistics-lane`)
    → embeds `<StudioAjaQueueStatisticsWorkspace />`.
- **Route Map panel** (`data-aja-distributed-workers-route-map`, `<h2>` "Route
  Map"): 6 `STUDIO_AJA_DISTRIBUTED_WORKERS_ROUTE_MAP` entries.
- **Quick-action lane**: five `Link.quickAction` anchors (no self-link).

## States

No own data fetch; runtime state is per embedded lane (each leaf runs its own
Loading / Unauthorized / Error / Ready lifecycle).

- [ ] **Loading** — per embedded lane.
- [ ] **Unauthorized** — per embedded lane (admin-scope 401/403).
- [ ] **Error** — per embedded lane.
- [ ] **Populated** — all five lanes render.
- [x] **Empty** — N/A; cards and lanes always render.

## Interactions

### Breadcrumb

- [ ] **"Studio"** → `/studio`
- [ ] **"Aja Distributed Processing"** → `/studio/aja/distributed-processing`
- [ ] **"Distributed Workers"** — `aria-current="page"`

### Workspace body

- [ ] **Capability cards** (4) — non-interactive.
- [ ] **Distributed Processing Lane** → embeds
      `StudioAjaDistributedProcessingWorkspace`.
- [ ] **Batch Operations Lane** → embeds `StudioAjaBatchOperationsWorkspace`
      (see `./studio-aja-batch-operations.md`).
- [ ] **Batch Inference Lane** → embeds `StudioAjaBatchInferenceWorkspace`.
- [ ] **Job Lifecycle Lane** → embeds `StudioAjaJobLifecycleWorkspace`.
- [ ] **Queue Statistics Lane** → embeds `StudioAjaQueueStatisticsWorkspace`.

### Route Map

- [ ] **Route entries** (6) — non-interactive listing.

### Quick-action lane

- [ ] **"Open Aja Distributed Processing workspace"** →
      `/studio/aja/distributed-processing`
- [ ] **"Open Aja Batch Operations workspace"** → `/studio/aja/batch-operations`
- [ ] **"Open Aja Batch Inference workspace"** → `/studio/aja/batch-inference`
- [ ] **"Open Aja Job Lifecycle workspace"** → `/studio/aja/job-lifecycle`
- [ ] **"Open Aja Queue Statistics workspace"** → `/studio/aja/queue-statistics`
- [ ] **"Back to Studio workspace index"** → `/studio`

## Data & contracts

- **Reads**: none at page level — delegated to the embedded leaves (e.g. Batch
  Operations reads `/v1/admin/aja/batch-operations`; the other lanes fetch their
  own catalogs on mount).
- **Writes**: none at page level; each leaf fires its own POST verbs.
- **Realtime**: none.
- **Caching**: client fetch on mount (`cache: 'no-store'`) per leaf; SSR shell.
- **Auth/role check**: BFF endpoints admin-scoped + fail-closed per lane; route
  gated signed-in + studio via proxy.

## Cross-references

- Parent: [`../../studio-overview.md`](../../studio-overview.md)
- Sibling (embedded as a lane):
  [`./studio-aja-batch-operations.md`](./studio-aja-batch-operations.md)
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioAjaDistributedWorkersWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioAjaDistributedWorkersRouteMap.ts`

## Open questions / known gaps

- [ ] Distributed Processing, Batch Inference, Job Lifecycle, and Queue
      Statistics lanes are not yet in this walkthrough sweep — link once those
      files are created.
