---
path: /studio/isis/texture-enhancement
surface: studio
domain: isis
auth:
  signed-in + studio entitlement (AAA-gated — `texture-enhancement` is in
  `AAA_ONLY_STUDIO_ROUTES`)
source: apps/oshun/web/src/app/studio/isis/texture-enhancement/page.tsx
status: walked
last_walked:
  '2026-07-23 exact-production-BFF Playwright (desktop + mobile Chrome) — hard
  route boundary, exact durable disposition, authenticated
  write/reload/duplicate/spoof behavior, controlled 410/503 states, 44px touch
  targets, responsive containment, and automated axe checks passed; live
  screen-reader and telemetry-delivery checks remain manual.'
---

# Isis Texture Enhancement

## Purpose

Admin lane console that evaluates a texture-enhancement batch against its
quality gate. Each fixture gets a PSNR-like score; the batch passes only when
the worst fixture clears the threshold, so a single bad texture fails the whole
batch. The verdict, mean/min/max, and per-fixture scores come from the real
quality engine. This surface records durable internal review-package diagnostics
over operator-supplied fixture scores. It does not ingest texture assets, run an
upstream scorer or provider, create an artifact, or authorize release.

## Entry points

- Sibling quick-action card from `/studio/isis/auto-rigging`
- Studio index (`/studio`)
- Direct URL / bookmark

## Layout regions

`page.tsx` mounts `ShellLayout active="studio"` and three panels (no breadcrumb
panel).

- **Workspace panel** (`data-isis-texture-enhancement-workspace`):
  - `<h1>` "Isis Texture Enhancement Workspace" (`WorkspaceHeading`)
  - Summary paragraph (`data-texture-summary`)
  - Exact durable diagnostic disposition (`data-texture-disposition`)
  - The "Evaluate a batch" form (`data-texture-form`)
  - Evaluated-batch list (`data-texture-batches`, `<h2>`) of
    `data-texture-batch` cards carrying `data-texture-passing` /
    `data-texture-verdict`
- **Route map panel** (`data-isis-texture-enhancement-route-map`): `<h2>` "Route
  Map" enumerating `STUDIO_ISIS_TEXTURE_ENHANCEMENT_ROUTE_MAP`
- **Quick-actions panel**: `quickAction` links to `/studio/isis/auto-rigging`
  and "Back to Studio workspace index" → `/studio`

## States

- [ ] **Loading** — `data-texture-loading` "Loading texture batches…"
- [ ] **Unauthorized** — `data-texture-unauthorized` (admin-scope fail-closed on
      401/403)
- [ ] **Error** — `data-texture-error` on non-OK / malformed response
- [ ] **Storage unavailable** — load fails closed; a failed write reports that
      nothing was recorded (503)
- [ ] **Erased operator** — new evidence is refused with explicit account-erased
      guidance (410)
- [ ] **Ready (form)** — evaluate form + batch list render; empty list shows
      `data-texture-batches-empty`
- [ ] **Result** — `data-texture-result` with `data-texture-status` (`ok` /
      `error`)

## Interactions

### Evaluate a batch (`data-texture-form`)

- [ ] **Batch id** — `data-texture-batchid` text input
- [ ] **Threshold** — `data-texture-threshold` number input (step 0.1)
- [ ] **Fixtures (fixtureId:score, comma-separated)** — `data-texture-fixtures`
      text input; parsed preview shown in `data-texture-parsed`
- [ ] **Evaluate batch** — `data-texture-evaluate` submit; POSTs to
      `/v1/admin/isis/texture-quality`, validates the complete acknowledgement
      against the submitted id/threshold/fixture set, then prepends the
      committed result without depending on a reload

### Route map

- [ ] **Route-map articles** — non-interactive path + purpose entries
      distinguish one mounted diagnostic route from four documented-contract
      shapes for asset ingestion, artifacts, revisions, and governance

### Quick-actions

- [ ] **Open Isis Auto Rigging workspace** → `/studio/isis/auto-rigging`
- [ ] **Back to Studio workspace index** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/isis/texture-quality` (`TEXTURE_ENDPOINT`) on mount
  — exact `{ disposition, generatedAt, defaultThreshold, batches }`
- **Writes**: `POST /v1/admin/isis/texture-quality` — evaluate a batch — exact
  `{ ok, batch, disposition }`
- **Disposition**:
  `durable_internal_texture_quality_review_packages_recomputable_projection`;
  PostgreSQL persistence; authenticated-subject attribution; stored inputs
  recomputed and drift-checked; durable batch-id idempotency; durable redaction
  with a resurrection fence; canonical `review_package` retention for 2,555
  days; no texture-asset ingest, provider execution, artifact output, or release
  authority
- **Persistence**: normalized PostgreSQL batch + ordered fixture rows; reads
  recompute the versioned scorer projection and fail closed on drift
- **Attribution**: evaluator identity comes only from authenticated server
  context; caller-supplied authorship fields are rejected
- **Privacy / retention**: internal non-exportable `review_package` evidence;
  fixture ids must be opaque and must not contain customer ids, source assets,
  or personal information. Signed profile erasure pseudonymizes attribution;
  canonical seven-year retention later purges evidence unless held while the
  digest resurrection fence remains.
- **Realtime**: None
- **Validation**: the client requires exact disposition, batch, fixture, and
  report shapes; it rejects missing, extra, malformed, authority-inflated,
  incorrectly echoed, and arithmetically inconsistent successful responses
- **Caching**: client fetches with `cache: 'no-store'`; authenticated scoped BFF
  success and failure responses also emit `cache-control: no-store`
- **Auth**: admin-scoped fail-closed (401/403 → unauthorized state); AAA-gated
  studio route behind the signed-in + studio proxy gate
- **Component sources**:
  - `apps/oshun/web/src/components/studio/StudioIsisTextureEnhancementWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisTextureEnhancementRouteMap.ts`

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- Sibling routes:
  - [`studio-isis-auto-rigging.md`](./studio-isis-auto-rigging.md)
  - [`studio-isis-topaz-enhancement.md`](./studio-isis-topaz-enhancement.md)

## Open questions / known gaps

- [ ] Per-fixture scores are supplied as `fixtureId:score` text rather than
      computed from real texture assets here — confirm where the upstream PSNR
      scoring runs
- [ ] Texture-asset ingestion, provider/model execution, artifact creation,
      revision authority, governance approval, and release authority are not
      bound to this diagnostic-history surface
