---
path: /studio/aja/pose-lifting
surface: studio
domain: aja
auth: signed-in + studio entitlement
source: apps/oshun/web/src/app/studio/aja/pose-lifting/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 · Pose Lifting

## Purpose

Leaf lane console that wires the real `@aja/pose-lifting` `validatePose`
anthropometric validator. The operator enters a 3D keypoint set and the lane
checks whether the lifted pose is physically plausible — bone ratios, joint
angles, left/right symmetry, and proportions — the acceptance gate for monocular
2D→3D lifting, returning a verdict, overall score, and any constraint
violations.

## Entry points

- **Direct URL / bookmark** — `/studio/aja/pose-lifting`.
- **Studio nav** — Domain-bridge studios section of `/studio`.
- **Breadcrumb parent** — `/studio/aja/pose-estimation` (page breadcrumb).
- **Sibling quick-actions** — Pose Estimation, Depth Sensing, Multi-View
  Reconstruction, Motion Validation.

## Layout regions

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

- **Breadcrumb panel** (`data-aja-pose-lifting-breadcrumbs`):
  `<nav aria-label="Aja Pose Lifting breadcrumbs">` → `Studio` (link) /
  `Aja Pose Estimation` (link → `/studio/aja/pose-estimation`) /
  `Pose Lifting` (`aria-current="page"`).
- **Workspace** `<StudioAjaPoseLiftingWorkspace />`:
  - `<h1>` "Aja Pose Lifting Workspace" + summary (`data-aja-pl-summary`).
  - The validate form (states below).
- **Route Map panel** (`data-aja-pose-lifting-route-map`, `<h2>` "Route Map"):
  6 `STUDIO_AJA_POSE_LIFTING_ROUTE_MAP` entries — primary, jobs, baselines,
  evidence, parity, governance.
- **Quick-action lane**: five `Link.quickAction` anchors (no self-link).

## States

The lane fetches `GET /v1/admin/aja/pose-lifting` on mount.

- [ ] **Loading** — `data-aja-pl-loading` "Loading validator…".
- [ ] **Unauthorized** — `data-aja-pl-unauthorized` (401/403; default "Aja
      workspace scope required to view pose lifting.").
- [ ] **Error** — `data-aja-pl-error`.
- [ ] **Ready (form)** — `data-aja-pl-validate-form`.
- [ ] **Result** — `data-aja-pl-result` with `data-aja-pl-valid` (plausible +
      score), `data-aja-pl-violation-count`, and per-violation rows
      (`data-aja-pl-violation`).
- [ ] **Validation error** — `data-aja-pl-validate-error` (e.g. 'Enter at least
      one "joint:x,y,z" keypoint.').

## Interactions

### Validate form (`data-aja-pl-validate-form`)

- [ ] **Skeleton type** — select `data-aja-pl-field-skeleton` (catalog
      `skeletonTypes`; default `h36m`).
- [ ] **Keypoints — "joint:x,y,z; …"** — input `data-aja-pl-field-keypoints`.
- [ ] **Validate pose** — submit `data-aja-pl-validate-submit`; fires
      `POST /v1/admin/aja/pose-lifting/validate` with
      `{ skeletonType, keypoints }`.

### Route Map

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

### Quick-action lane

- [ ] **"Open Aja Pose Estimation workspace"** → `/studio/aja/pose-estimation`
- [ ] **"Open Aja Depth Sensing workspace"** → `/studio/aja/depth-sensing`
- [ ] **"Open Aja Multi-View Reconstruction workspace"** →
      `/studio/aja/multi-view-reconstruction`
- [ ] **"Open Aja Motion Validation workspace"** →
      `/studio/aja/motion-validation`
- [ ] **"Back to Studio workspace index"** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/aja/pose-lifting` (catalog: `skeletonTypes`,
  `constraintTypes`, `symmetryTolerance`).
- **Writes**: `POST /v1/admin/aja/pose-lifting/validate` →
  `{ isValid, overallScore, violationCount, byType, violations }`.
- **Realtime**: none.
- **Caching**: client fetch on mount (`cache: 'no-store'`); SSR shell.
- **Auth/role check**: BFF endpoint admin-scoped + fail-closed; route gated
  signed-in + studio via proxy.

## Cross-references

- Parent: [`../../studio-overview.md`](../../studio-overview.md)
- Siblings (quick-actions): `/studio/aja/pose-estimation`,
  `/studio/aja/depth-sensing`, `/studio/aja/multi-view-reconstruction`,
  `/studio/aja/motion-validation`
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioAjaPoseLiftingWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioAjaPoseLiftingRouteMap.ts`

## Open questions / known gaps

- [ ] Route Map lists `jobs`/`baselines`/`evidence`/`parity`/`governance` child
      routes that are not yet implemented as pages.
