Context. surface studio · domain aja · route /studio/aja/noise-reduction · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/aja/noise-reduction/page.tsx
Last walked. 2026-07-02 cleanup-lane console addendum — Playwright real-dev-infra coverage now proves signed-in render, route-map contract, quick-action href order, ready signal-analysis form, 44 px submit target, nonnumeric-signal client guard with no POST, real BFF signal-statistics result, fail-closed loading/unauthorized/malformed-catalog states, mobile no-overflow, and direct BFF 401/403/400/200 gates. Spec: apps/oshun/web/e2e/studio-aja-cleanup-lane-consoles.spec.ts.' '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#
Leaf lane console that wraps the real @aja/motion-processing analyzeSignal
DSP. The operator submits a motion signal and the lane returns the deterministic
statistics that drive noise-reduction filtering: mean, std, min/max range, the
FFT dominant frequency, and the signal-to-noise ratio (SNR).
Entry points#
- Direct URL / bookmark —
/studio/aja/noise-reduction. - Studio nav — Domain-bridge studios section of
/studio. - Sibling quick-action — "Open Aja Blend Shape Retargeting workspace"
(
/studio/aja/blend-shape-retargeting) and "Back to Studio workspace index" are the two quick-actions on this page.
Layout regions#
page.tsx renders inside <ShellLayout active="studio">:
- Workspace
<StudioAjaNoiseReductionWorkspace />:<h1>"Aja Noise Reduction Workspace" + summary (data-aja-noise-reduction-summary).- The analyze form lane (states below).
- Route Map panel (
data-aja-noise-reduction-route-map,<h2>"Route Map"): 5STUDIO_AJA_NOISE_REDUCTION_ROUTE_MAPentries (path + purpose) — primary, scenes, exports, revisions, governance. - Quick-action lane: two
Link.quickActionanchors (Blend Shape Retargeting, Back to Studio). No self-link. No breadcrumb panel on this route.
States#
The lane fetches GET /v1/admin/aja/noise-reduction on mount.
- Loading —
data-aja-nr-loading"Loading signal analysis…". - Unauthorized —
data-aja-nr-unauthorized(rendered on a 401/403; the admin-scope message defaults to "Aja workspace scope required to view noise reduction."). - Error —
data-aja-nr-error(non-2xx, malformed body, or network). - Ready (form) —
data-aja-nr-analyze-formwith the two inputs. - Result —
data-aja-nr-resultwithdata-aja-nr-mean,data-aja-nr-std, range,data-aja-nr-dominant,data-aja-nr-snr. - Validation error —
data-aja-nr-analyze-error(e.g. "Signal must contain at least one number." or a server-reported reason).
Interactions#
Analyze form (data-aja-nr-analyze-form)#
- Signal (comma-separated samples) — input
data-aja-nr-field-signal(default2, 4, 6, 8, 6, 4, 2, 0). - Sample rate (Hz, optional) — input
data-aja-nr-field-rate(default30). - Analyze — submit
data-aja-nr-analyze-submit; firesPOST /v1/admin/aja/noise-reduction/analyzewith{ signal, sampleRate }and renders the analysis or the error block.
Route Map#
- Route entries (5) — non-interactive listing.
Quick-action lane#
- "Open Aja Blend Shape Retargeting workspace" →
/studio/aja/blend-shape-retargeting - "Back to Studio workspace index" →
/studio
E2E coverage#
apps/oshun/web/e2e/studio-aja-cleanup-lane-consoles.spec.tscovers signed-in shell render, ready signal-analysis form defaults, nonnumeric-signal client guard with noPOST, real BFF signal-statistics output (mean: 4,std: 2.449489742783178, dominant frequency and SNR fields), route-map count, exact quick-action hrefs, 44 px submit target, loading / unauthorized / malformed-catalog fail-closed states, mobile no-overflow, and direct BFF auth/schema/happy-path gates.
Data & contracts#
- Reads:
GET /v1/admin/aja/noise-reduction(catalog:analysisFields). - Writes:
POST /v1/admin/aja/noise-reduction/analyze→{ sampleCount, mean, std, min, max, dominantFrequency, snr }. - Realtime: none.
- Caching: client fetch on mount (
cache: 'no-store'); SSR shell. - Auth/role check: BFF endpoint admin-scoped + fail-closed (401/403 → unauthorized render); route gated signed-in + studio via proxy.
Cross-references#
- Parent:
../../studio-overview.md - Sibling (quick-action):
/studio/aja/blend-shape-retargeting - Component sources:
apps/oshun/web/src/components/studio/StudioAjaNoiseReductionWorkspace.tsxapps/oshun/web/src/components/studio/StudioAjaNoiseReductionRouteMap.ts
Known downstream boundaries#
- Route-map sub-routes are descriptive contracts; implementation status of those child pages is tracked separately from this leaf console.