---
path: /studio/aja/quality-presets
surface: studio
domain: aja
auth: signed-in + studio entitlement
source: apps/oshun/web/src/app/studio/aja/quality-presets/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 · Quality Presets

## Purpose

Leaf lane console that wires the real `@aja/motion-quality` QA-pipeline config
builders. The operator picks an acceptance preset (default / strict / relaxed)
and a motion category, and the lane resolves the quality thresholds, enabled
checks, critical auto-reject checks, and the borderline review threshold a clip
is graded against.

## Entry points

- **Direct URL / bookmark** — `/studio/aja/quality-presets`.
- **Studio nav** — Domain-bridge studios section of `/studio`.
- **Embedded** — appears as the Quality Presets Lane inside
  `/studio/aja/svc-motion-pipeline`.
- **Sibling quick-action** — "Open Aja Per-Stage Configuration workspace"
  (`/studio/aja/per-stage-configuration`).

## Layout regions

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

- **Workspace** `<StudioAjaQualityPresetsWorkspace />`:
  - `<h1>` "Aja Quality Presets Workspace" + summary
    (`data-aja-quality-presets-summary`).
  - Capability Summary panel
    (`data-aja-quality-presets-capability-summary`, `<h2>`) — static
    descriptive block.
  - Quality Preset Operations Lane
    (`data-aja-quality-presets-operations-lane`, `<h2>`) — the form; includes
    `data-aja-qp-kind-summary` (catalog `summary`).
- **Route Map panel** (`data-aja-quality-presets-route-map`, `<h2>` "Route
  Map"): 5 `STUDIO_AJA_QUALITY_PRESETS_ROUTE_MAP` entries — primary, scenes,
  exports, revisions, governance.
- **Quick-action lane**: two `Link.quickAction` anchors. No breadcrumb panel.

## States

The lane fetches `GET /v1/admin/aja/quality-presets` on mount (and preselects
the first preset + last category).

- [ ] **Loading** — `data-aja-qp-loading` "Loading quality presets…".
- [ ] **Unauthorized** — `data-aja-qp-unauthorized` (401/403; default "Aja
      workspace scope required to resolve quality presets.").
- [ ] **Error** — `data-aja-qp-error`.
- [ ] **Ready (form)** — `data-aja-qp-form`.
- [ ] **Result** — `data-aja-qp-result` with `data-aja-qp-headline`,
      `data-aja-qp-thresholds`, `data-aja-qp-gates`, `data-aja-qp-checks`, and
      `data-aja-qp-critical`.
- [ ] **Validation error** — `data-aja-qp-resolve-error` (e.g. "Select a preset
      and category.").

## Interactions

### Resolve form (`data-aja-qp-form`)

- [ ] **Preset** — select `data-aja-qp-preset` (catalog `presets`).
- [ ] **Motion category** — select `data-aja-qp-category` (catalog
      `categories`).
- [ ] **Resolve preset** — submit `data-aja-qp-submit`; fires
      `POST /v1/admin/aja/quality-presets/resolve` with `{ preset, category }`.

### Route Map

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

### Quick-action lane

- [ ] **"Open Aja Per-Stage Configuration workspace"** →
      `/studio/aja/per-stage-configuration`
- [ ] **"Back to Studio workspace index"** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/aja/quality-presets` (catalog: `kind`, `summary`,
  `presets`, `categories`).
- **Writes**: `POST /v1/admin/aja/quality-presets/resolve` →
  `{ name, category, thresholds, autoReject, flagForReview, borderlineThreshold,
  criticalChecks, enabledBasicChecks, enabledPerceptualChecks,
  enabledAccuracyChecks }`.
- **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)
- Aggregator that embeds this lane:
  [`./studio-aja-svc-motion-pipeline.md`](./studio-aja-svc-motion-pipeline.md)
- Sibling (quick-action):
  [`./studio-aja-per-stage-configuration.md`](./studio-aja-per-stage-configuration.md)
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioAjaQualityPresetsWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioAjaQualityPresetsRouteMap.ts`

## Open questions / known gaps

- [ ] Route Map lists `scenes`/`exports`/`revisions`/`governance` child routes
      that are not yet implemented as pages.
