Context. surface studio · domain isis · route /studio/isis/texture-enhancement · 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
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.
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>) ofdata-texture-batchcards carryingdata-texture-passing/data-texture-verdict
- Route map panel (
data-isis-texture-enhancement-route-map):<h2>"Route Map" enumeratingSTUDIO_ISIS_TEXTURE_ENHANCEMENT_ROUTE_MAP - Quick-actions panel:
quickActionlinks to/studio/isis/auto-riggingand "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-erroron 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-resultwithdata-texture-status(ok/error)
Interactions#
Evaluate a batch (data-texture-form)#
- Batch id —
data-texture-batchidtext input - Threshold —
data-texture-thresholdnumber input (step 0.1) - Fixtures (fixtureId:score, comma-separated) —
data-texture-fixturestext input; parsed preview shown indata-texture-parsed - Evaluate batch —
data-texture-evaluatesubmit; 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; canonicalreview_packageretention 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_packageevidence; 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 emitcache-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.tsxapps/oshun/web/src/components/studio/StudioIsisTextureEnhancementRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - Sibling routes:
Open questions / known gaps#
- Per-fixture scores are supplied as
fixtureId:scoretext 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