Context. surface studio · domain isis · route /studio/isis/topaz-enhancement · auth signed-in + studio entitlement (AAA-gated — topaz-enhancement is in AAA_ONLY_STUDIO_ROUTES) · source apps/oshun/web/src/app/studio/isis/topaz-enhancement/page.tsx
Last walked. 2026-07-23 exact-production-BFF Playwright (desktop + mobile Chrome) — hard route boundary, exact/no-store catalog and plan contracts, adversarial authority rejection, 44px controls, responsive containment, and automated axe checks passed; live screen-reader and telemetry-delivery checks remain manual.
Purpose#
Admin lane console for a request-local film-aware upscaling-plan preview. The operator picks an upscale factor and supplies bounded frame metadata as JSON; the deterministic planner selects a source-defined model/backend and computes input/output pixel counts plus grain-analysis diagnostics. The route does not ingest frame assets, execute a GPU/provider, create an artifact, persist history, or authorize release.
Entry points#
- Sibling quick-action from
/studio/isis/rife-interpolation - Studio index (
/studio) - Direct URL / bookmark (AAA entitlement required)
Layout regions#
page.tsx mounts <ShellLayout active="studio"> (no breadcrumb panel) and
three panels: the workspace, the Route Map, and sibling quick-actions.
- Header: shell header
- Workspace panel (
data-isis-topaz-enhancement-workspace):<h1>(WorkspaceHeading) "Isis Topaz Enhancement Workspace"- Summary paragraph (
data-isis-topaz-enhancement-summary) - Exact request-only disposition (
data-topaz-disposition) - Backends (
data-topaz-backends,data-topaz-model) - Plan form (
data-topaz-plan-form) - Result with
data-topaz-model-selected,data-topaz-frame-count,data-topaz-input-pixels,data-topaz-output-pixels
- Route Map panel (
data-isis-topaz-enhancement-route-map):<h2>Route Map</h2>over one mounted route and four documented-contract-only shapes - Sibling quick-actions panel:
/studio/isis/rife-interpolation,/studio
States#
- Loading —
data-topaz-loading"Loading enhancement planner…" - Unauthorized — 401/403 admin-scope fail-closed;
data-topaz-unauthorized - Error — non-OK / malformed;
data-topaz-error - Ready (form) — backends + plan form render
- Validation — invalid frames JSON →
data-topaz-plan-invalid - Result — pixel counts after planning; plan failure →
data-topaz-plan-error
Interactions#
Plan form (data-topaz-plan-form)#
- Upscale factor (
data-topaz-field-factor,<select>) - Frames (JSON) (
data-topaz-field-frames, textarea) - Plan batch (
data-topaz-plan-submit, submit; disabled while planning) —POST /v1/admin/isis/topaz-enhancement/plan
Route Map#
- Route-map articles ×5; each exposes
mountedordocumented-contractstatus
Sibling quick-actions#
- Open Isis RIFE Interpolation workspace →
/studio/isis/rife-interpolation - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/admin/isis/topaz-enhancement(backends / models) - Writes:
POST /v1/admin/isis/topaz-enhancement/plan(plan a film-aware upscale batch) - Disposition:
request_local_non_authoritative_film_aware_upscaling_plan_preview; persistencenone; retentionrequest_only; caller-supplied frame metadata; source-defined model catalog; deterministic planner; no asset ingest, GPU or provider execution, artifact output, governance record, release authority, or authoritative state - Bounds: exactly 1–256 frames; unique trimmed frame ids of 1–128 characters; integer dimensions up to 2048×1556; nine finite normalized metrics in [0,1]; exact source/content-profile enums; factor 2 or 4; optional supported model/backend/strategy and 1–160-character batch name
- Successful contracts: GET has exactly nine catalog, bounds, and
disposition fields. POST has exactly
{ok, input, summary, grainAnalysis, disposition}with a normalized input echo. - Validation: the client requires exact catalog, disposition, input, summary, and grain-analysis shapes. It checks input echo, frame count, selected enums, grain-analysis consistency, normalized scores, and input/output pixel arithmetic; missing, extra, malformed, or authority-inflated successes fail closed.
- Realtime: none
- Caching: client fetches with
cache: 'no-store'; authenticated scoped BFF success and failure responses also emitcache-control: no-store - Auth/role check: admin-scoped, fail-closed (401/403); route AAA-gated
(
topaz-enhancementinAAA_ONLY_STUDIO_ROUTES) - Component sources:
apps/oshun/web/src/components/studio/StudioIsisTopazEnhancementWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisTopazEnhancementRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - AAA gating:
libs/isis/entitlements/src/studio-boundary.ts - Sibling routes:
Open questions / known gaps#
- No breadcrumb on this route — navigation via sibling quick-actions
- Scene, export, revision, and governance sub-paths are documented contract shapes only; no corresponding page or authority is mounted
- Real frame-asset ingestion, GPU/provider execution, generated-media artifacts, durable plan history, governance approval, and release remain unbound