Context. surface studio · domain isis · route /studio/isis/artifact-detection · auth signed-in + studio entitlement (segment not in AAA_ONLY_STUDIO_ROUTES — renders as-is) · source apps/oshun/web/src/app/studio/isis/artifact-detection/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 3D quality operations: it logs per-asset defect reports
against the 3d-quality-gates review queue and groups them by provider, model
version, and failure codes, surfacing a recurrent-failure cluster once
occurrences and distinct assets cross the escalation thresholds (a systematic
artifact, not one-off noise). All reads and writes flow through
/v1/admin/isis/artifact-detection; it is admin-scoped and fails closed.
Entry points#
- Sibling quick-action from
/studio/isis/automated-quality-scoring - Studio index (
/studio) - Direct URL / bookmark
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-artifact-detection-workspace):<h1>(WorkspaceHeading) "Isis Artifact Detection Workspace"- Summary paragraph (
data-artifact-summary) - Recurrent-failure cluster list (
data-artifact-clusters, threshold annotation fromresponse.thresholds), each clusterdata-artifact-cluster=<fingerprint>withdata-artifact-cluster-count; empty statedata-artifact-clusters-empty - Defect-report form (
data-artifact-form) - Defect-report list (
data-artifact-reports), eachdata-artifact-report=<queueItemId>
- Route Map panel (
data-isis-artifact-detection-route-map):<h2>Route Map</h2>overSTUDIO_ISIS_ARTIFACT_DETECTION_ROUTE_MAP(5 entries) - Sibling quick-actions panel:
/studio/isis/automated-quality-scoring,/studio
States#
- Loading —
outcome === null;data-artifact-loading"Loading artifact detection…" - Unauthorized — 401/403 admin-scope fail-closed;
data-artifact-unauthorized("Isis workspace scope required to view artifact detection.") - Error — non-OK or malformed response;
data-artifact-error - Ready (form) —
responsepresent; cluster list + form + reports render - Result — after a log POST,
data-artifact-result(data-artifact-status=ok|error); duplicate queue-item id → "A defect with that queue-item id already exists."
Interactions#
Defect-report form (data-artifact-form)#
- Queue-item id (
data-artifact-queueid, text input) - Asset id (
data-artifact-assetid, text input) - Failure code (
data-artifact-failurecode,<select>populated fromresponse.failureCodes) - Provider (
data-artifact-provider, text input; defaultstripo-comfy) - Model version (
data-artifact-modelversion, text input; defaultstripo-2.1) - Log defect (
data-artifact-log) — disabled until all fields present;POST /v1/admin/isis/artifact-detection, then reloads the catalog
Route Map#
- Route-map articles ×5 (primary,
/scenes/[sceneId],/exports/[exportId],/revisions/[revisionId],/governance/[policyId])
Sibling quick-actions#
- Open Isis Automated Quality Scoring workspace →
/studio/isis/automated-quality-scoring - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/admin/isis/artifact-detection(reports, clusters, thresholds, failureCodes, severities, benchmarkCategories) - Writes:
POST /v1/admin/isis/artifact-detection(log a defect report; returns{ ok, clusters }) - Realtime: none
- Caching: client fetch on mount,
cache: 'no-store',buildBffAuthHeaders() - Auth/role check: admin-scoped, fail-closed (401/403); route gated on signed-in + studio entitlement
- Component sources:
apps/oshun/web/src/components/studio/StudioIsisArtifactDetectionWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisArtifactDetectionRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - Sibling routes:
Open questions / known gaps#
- No breadcrumb on this route — navigation is via sibling quick-actions
- Route-map sub-paths (
/scenes,/exports,/revisions,/governance) are declared but not yet implemented as separate pages