Context. surface studio · domain isis · route /studio/isis/3d-post-processing · 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
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)
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>) ofdata-pipeline-classcards (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" enumeratingSTUDIO_ISIS_3D_POST_PROCESSING_ROUTE_MAP - Quick-actions panel:
quickActionlinks to/studio/isis/multi-provider-3d-generationand "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-erroron non-OK / malformed response - Ready (form) — class list + author form render
- Result —
data-pipeline-resultwithdata-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-classidtext input - Display name —
data-pipeline-displaynametext input - Fixture set —
data-pipeline-fixturetext input - Cost class —
data-pipeline-costselect (options from responsecostClasses) - Step toggles —
data-pipeline-step-toggle={step}checkboxes (one peravailableStepsentry); order is fixed - Author class —
data-pipeline-authorsubmit; 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
fetchon 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.tsxapps/oshun/web/src/components/studio/StudioIsis3DPostProcessingRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - Sibling routes:
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