---
path: /studio/isis/rife-interpolation
surface: studio
domain: isis
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
status: walked
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.'
---

# Isis RIFE Interpolation

## 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

- [x] **Loading** — `data-isis-rife-loading`
- [x] **Unauthorized** — 401/403 admin-scope fail-closed;
      `data-isis-rife-unauthorized`
- [x] **Error** — non-OK or malformed catalog; `data-isis-rife-error`
- [x] **Ready (form)** — catalog present; source/target fps selects populated
      from `catalog.sourceFps` / `catalog.targetFps`
- [x] **Result** — after a plan POST, `data-isis-rife-result` shows
      `data-isis-rife-conversion` (the up-conversion), `data-isis-rife-frames`
      (per-pair interpolated frames), and `data-isis-rife-inference` (estimate);
      the request-only boundary remains visible and plan failures surface in
      `data-isis-rife-plan-error`

## Interactions

### Plan form (`data-isis-rife-plan-form`)

- [x] **Source fps** (`data-isis-rife-field-source`, `<select>` from
      `catalog.sourceFps`)
- [x] **Target fps** (`data-isis-rife-field-target`, `<select>` from
      `catalog.targetFps`)
- [x] **Source frames** (`data-isis-rife-field-frames`, text input)
- [x] **Plan interpolation** (`data-isis-rife-plan-submit`, submit) —
      `POST /v1/admin/isis/rife-interpolation/plan`

### Route Map

- [x] **Route-map articles** ×5

### Sibling quick-actions

- [x] **Open Isis NVIDIA RTX Processing workspace** →
      `/studio/isis/nvidia-rtx-processing`
- [x] **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`; persistence
  `none`; retention `request_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 - 1` and
  `generatedFrames = (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 emit `cache-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.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisRifeInterpolationRouteMap.ts`

## Automated coverage

- `apps/oshun/web/e2e/studio-isis-rife-interpolation.spec.ts` passed 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.tsx`
  covers ready/unauthorized/malformed catalog behavior.
- `apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationWorkspace.integration.test.tsx`
  covers write success, unsupported conversions, client frame-count validation,
  pending state, and malformed successful write handling.
- `apps/oshun/web/src/components/__tests__/StudioIsisRifeInterpolationPage.test.tsx`
  and `StudioIsisRifeInterpolationRouteMap.test.ts` keep the shell/page contract
  and route-map content covered.

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- AAA gating: `libs/isis/entitlements/src/studio-boundary.ts`
- Sibling routes:
  - [`studio-isis-nvidia-rtx-processing.md`](./studio-isis-nvidia-rtx-processing.md)
  - [`studio-isis-ai-video-generation.md`](./studio-isis-ai-video-generation.md)

## Open questions / known gaps

- [x] 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
