Context. surface studio · domain isis · route /studio/isis/rife-interpolation · auth signed-in + studio entitlement boundary; admin-scoped BFF data; direct legacy route hard-blocked outside the localhost E2E lane bypass · source apps/oshun/web/src/app/studio/isis/rife-interpolation/page.tsx
Last walked. 2026-07-23 exact-production-BFF Playwright (desktop Chromium + Pixel 7 mobile Chrome) — hard route boundary, signed-JWT scope enforcement, exact/no-store catalog and plan contracts, adversarial authority rejection, bounded input, responsive touch containment, and applicable axe checks passed; live screen-reader and telemetry-delivery checks remain manual.
Purpose#
Admin lane console for a request-local, non-authoritative RIFE interpolation
plan preview. It applies the deterministic @isis/video-enhancement
RifeNeuralFrameInterpolationPlanner to caller-supplied rates and a synthetic
uniform frame count, returning arithmetic, a source-defined model/backend
selection, and an inference estimate. It does not ingest actual frame assets,
execute a GPU/provider, produce an artifact, persist history, record governance,
or authorize release.
Entry points#
- Sibling quick-action from
/studio/isis/nvidia-rtx-processing - 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-rife-interpolation-workspace):<h1>(WorkspaceHeading) "Isis RIFE Interpolation Workspace"- Summary paragraph (
data-isis-rife-summary) - Plan form (
data-isis-rife-plan-form)
- Route Map panel (
data-isis-rife-interpolation-route-map):<h2>Route Map</h2>over one mounted planner and four documented-contract-only shapes - Sibling quick-actions panel:
/studio/isis/nvidia-rtx-processing,/studio
States#
- Loading —
data-isis-rife-loading - Unauthorized — 401/403 admin-scope fail-closed;
data-isis-rife-unauthorized - Error — non-OK or malformed catalog;
data-isis-rife-error - Ready (form) — catalog present; source/target fps selects populated
from
catalog.sourceFps/catalog.targetFps - Result — after a plan POST,
data-isis-rife-resultshowsdata-isis-rife-conversion(the up-conversion),data-isis-rife-frames(per-pair interpolated frames), anddata-isis-rife-inference(estimate); the request-only boundary remains visible and plan failures surface indata-isis-rife-plan-error
Interactions#
Plan form (data-isis-rife-plan-form)#
- Source fps (
data-isis-rife-field-source,<select>fromcatalog.sourceFps) - Target fps (
data-isis-rife-field-target,<select>fromcatalog.targetFps) - Source frames (
data-isis-rife-field-frames, text input) - Plan interpolation (
data-isis-rife-plan-submit, submit) —POST /v1/admin/isis/rife-interpolation/plan
Route Map#
- Route-map articles ×5
Sibling quick-actions#
- Open Isis NVIDIA RTX Processing workspace →
/studio/isis/nvidia-rtx-processing - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/admin/isis/rife-interpolation, exactly{generatedAt, sourceFps, targetFps, inputBounds, disposition} - Writes:
POST /v1/admin/isis/rife-interpolation/plan, accepting exactly{sourceFps, targetFps, frameCount}and returning exactly{ok, input, plan, disposition}on success - Disposition:
request_local_non_authoritative_rife_interpolation_plan_preview; persistencenone; retentionrequest_only; caller-supplied rates and synthetic uniform frame count; source-defined model catalog; deterministic planner; no frame-asset ingest, GPU/provider execution, artifact output, governance record, release authority, or authoritative state - Bounds: source fps 24 or 30; target fps 48, 60, or 120; integer frame count 2–10,000 inclusive
- Validation: the client requires exact catalog, disposition, input echo,
and ten-field plan shapes; allows only the six source-defined RIFE models and
four backends; and independently verifies
pairCount = frameCount - 1andgeneratedFrames = (frameCount - 1) × (ceil(targetFps/sourceFps) - 1). Missing, extra, malformed, incorrectly echoed, arithmetically inconsistent, or authority-inflated successes fail closed. Client validation suppresses submissions above 10,000 frames. - Realtime: none
- Caching: client fetches with
cache: 'no-store'; authenticated scoped BFF success and failure responses also emitcache-control: no-store - Auth/role check: direct legacy Studio route is hard-blocked by the Studio boundary; the localhost-only E2E lane bypass exercises the signed-in Studio shell and forwards admin-scoped BFF calls fail-closed (401/403)
- Component sources:
apps/oshun/web/src/components/studio/StudioIsisRifeInterpolationWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisRifeInterpolationRouteMap.ts
Automated coverage#
apps/oshun/web/e2e/studio-isis-rife-interpolation.spec.tspassed 8/8 with one worker and zero retries against the exact production BFF artifact, disposable PostgreSQL with all 32 migrations, isolated Redis, and signed production JWTs. Desktop Chromium covers the hard route boundary, exact direct/no-store catalog and plan contracts, exact conversions, unsupported and invalid inputs, pending and client validation, malformed/failure/network states, scope denial, anonymous redirect, route status, 44px controls, and applicable axe checks. Pixel 7 mobile Chrome covers responsive containment, touch targets, live catalog, and a visible exact result.apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationWorkspace.test.tsxcovers ready/unauthorized/malformed catalog behavior.apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationWorkspace.integration.test.tsxcovers write success, unsupported conversions, client frame-count validation, pending state, and malformed successful write handling.apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationPage.test.tsxandStudioIsisRifeInterpolationRouteMap.test.tskeep the shell/page contract and route-map content covered.
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 is via sibling quick-actions
- Frame-asset ingest, GPU/provider execution, generated artifacts, durable history, governance approval, and release remain unbound
- Four scene, export, revision, and governance shapes are documented-contract-only; no corresponding authority is mounted
- Manual screen-reader, real touch-device, offline-mode, and telemetry delivery passes remain pending outside the automated Playwright checks