---
path: /studio/isis/3d-post-processing
surface: studio
domain: isis
auth:
  signed-in + studio entitlement (AAA-gated — segment `3d-post-processing` in
  `AAA_ONLY_STUDIO_ROUTES`)
source: apps/oshun/web/src/app/studio/isis/3d-post-processing/page.tsx
status: walked
last_walked:
  '2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data
  (2xx), console/page-errors, expected content, screenshot verified; live
  screen-reader, touch, offline, and telemetry-delivery checks pending a manual
  AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md; body
  re-derived 2026-06-03 from current source (lane-console architecture)'
---

# Isis 3D Post-Processing

## Purpose

Admin lane console for authoring approved 3D post-processing pipeline classes.
An operator chains post-process steps in a fixed order; the real builder rejects
forbidden step pairs and duplicate steps and stamps a class hash. Ad-hoc chains
are not permitted at runtime — only registered classes.

## Entry points

- Sibling quick-action card from `/studio/isis/multi-provider-3d-generation`
- Studio index (`/studio`)
- Direct URL / bookmark

## Layout regions

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

- **Workspace panel** (`data-isis-3d-post-processing-workspace`):
  - `<h1>` "Isis 3D Post-Processing Workspace" (`WorkspaceHeading`)
  - Summary paragraph (`data-isis-3d-post-processing-summary`)
  - Registered-classes list (`data-pipeline-classes`, `<h2>`) of
    `data-pipeline-class` cards (steps + hash)
  - The "Author a pipeline class" form (`data-pipeline-author-form`)
- **Route map panel** (`data-isis-3d-post-processing-route-map`): `<h2>` "Route
  Map" enumerating `STUDIO_ISIS_3D_POST_PROCESSING_ROUTE_MAP`
- **Quick-actions panel**: `quickAction` links to
  `/studio/isis/multi-provider-3d-generation` and "Back to Studio workspace
  index" → `/studio`

## States

- [ ] **Loading** — `data-pipeline-loading` "Loading pipeline classes…"
- [ ] **Unauthorized** — `data-pipeline-unauthorized` (admin-scope fail-closed
      on 401/403)
- [ ] **Error** — `data-pipeline-error` on non-OK / malformed response
- [ ] **Ready (form)** — class list + author form render
- [ ] **Result** — `data-pipeline-result` with `data-pipeline-status` (`ok` /
      `error`); validation messages cover incompatible-steps, invalid-steps,
      duplicate-class

## Interactions

### Author a pipeline class (`data-pipeline-author-form`)

- [ ] **Class id** — `data-pipeline-classid` text input
- [ ] **Display name** — `data-pipeline-displayname` text input
- [ ] **Fixture set** — `data-pipeline-fixture` text input
- [ ] **Cost class** — `data-pipeline-cost` select (options from response
      `costClasses`)
- [ ] **Step toggles** — `data-pipeline-step-toggle={step}` checkboxes (one per
      `availableSteps` entry); order is fixed
- [ ] **Author class** — `data-pipeline-author` submit; POSTs to
      `/v1/admin/isis/3d-post-processing`, then reloads the class list

### Route map

- [ ] **Route-map articles** — non-interactive path + purpose entries

### Quick-actions

- [ ] **Open Isis Multi-Provider 3D Generation workspace** →
      `/studio/isis/multi-provider-3d-generation`
- [ ] **Back to Studio workspace index** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/isis/3d-post-processing` (`PIPELINE_ENDPOINT`) on
  mount — registered classes + availableSteps + costClasses
- **Writes**: `POST /v1/admin/isis/3d-post-processing` — author a pipeline class
- **Realtime**: None
- **Caching**: client `fetch` on mount, `cache: 'no-store'`,
  `buildBffAuthHeaders()`
- **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/StudioIsis3DPostProcessingWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsis3DPostProcessingRouteMap.ts`

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- Sibling routes:
  - [`studio-isis-multi-provider-3d-generation.md`](./studio-isis-multi-provider-3d-generation.md)
  - [`studio-isis-texture-enhancement.md`](./studio-isis-texture-enhancement.md)
  - [`studio-isis-3d-editing.md`](./studio-isis-3d-editing.md)

## Open questions / known gaps

- [ ] The forbidden-pair list (e.g. `rife-interpolation` + `auto-rigging`) is
      enforced server-side; this view surfaces the rejection but does not list
      every forbidden pair up front
- [ ] Fixture-set references are free-text ids — confirm where fixture sets are
      registered / validated
