V1 Web PWA · Surface walkthrough

Isis Civitai Integration

A per-surface walkthrough of the V1 Web PWA studio surface: layout, states, interactions, data, and cross-references.

walked
8sections3 minread

On this page

Context. surface studio · domain isis · route /studio/isis/civitai-integration · auth signed-in + studio entitlement (segment not in AAA_ONLY_STUDIO_ROUTES — renders as-is) · source apps/oshun/web/src/app/studio/isis/civitai-integration/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 §24.2 intake-review console for Civitai asset candidates: it reads the live intake-review context and renders the rights/license/safety review queue plus the searchable-candidate pool with full governance metadata (license tag, NSFW posture, lineage, content labels, recommended sampler config, compatibility notes), the position of each queued entry along the canonical promotion pipeline, and the decision history that moved it there. Reads flow through /v1/admin/isis/civitai-intake and decisions through /v1/admin/isis/civitai-intake/decisions; it is admin-scoped and fails closed — without the Isis scope the operator gets a governance message and no candidate data.

Entry points#

  • Sibling quick-action from /studio/isis/model-registry
  • 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-civitai-integration-workspace):
    • <h1> (WorkspaceHeading) "Isis Civitai Integration Workspace"
    • Summary paragraph (data-isis-civitai-integration-summary)
    • Promotion-pipeline rail (data-civitai-pipeline-rail) with per-stage data-civitai-pipeline-stage and data-civitai-pipeline-current; off-pipeline terminal queues (data-civitai-terminal-state)
    • Review queue (<h2>) — data-civitai-review-queue of data-civitai-review-row (active row data-civitai-review-row-active); empty state data-civitai-review-queue-empty; queue filter data-civitai-queue-filter
    • Candidate detail (<h2>) — data-civitai-review-detail with NSFW badge (data-civitai-nsfw-badge), decision history (data-civitai-history / data-civitai-history-entry), and the Decision form (data-civitai-decision-form)
    • Searchable candidate pool (<h2>) — data-civitai-search-pool of data-civitai-search-candidate; search input data-civitai-search-input, asset filter data-civitai-asset-filter; empty state data-civitai-search-pool-empty
  • Route Map panel (data-isis-civitai-integration-route-map): <h2>Route Map</h2> over STUDIO_ISIS_CIVITAI_INTEGRATION_ROUTE_MAP (5 entries)
  • Sibling quick-actions panel: /studio/isis/model-registry, /studio

States#

  • Loadingdata-civitai-loading
  • Unauthorized — 401/403 admin-scope fail-closed; data-civitai-unauthorized (governance message, no candidate data)
  • Error — non-OK or malformed response; data-civitai-error
  • Ready — context present; review queue + candidate detail + search pool render; selecting a row populates the detail/decision form
  • Result — after a decision POST, data-civitai-decision-result (data-civitai-decision-status)

Interactions#

Review queue / pool#

  • Review row (data-civitai-review-row) — selects the active candidate
  • Queue filter (data-civitai-queue-filter, <select>)
  • Search input (data-civitai-search-input) + asset filter (data-civitai-asset-filter)
  • Search candidate (data-civitai-search-candidate) — selectable pool entries

Decision form (data-civitai-decision-form)#

  • Decision kind (data-civitai-decision-kind, <select>)
  • Note (data-civitai-decision-note, text)
  • Conditions (data-civitai-decision-conditions)
  • Recipe (data-civitai-decision-recipe)
  • Record decision (data-civitai-decision-submit) — POST /v1/admin/isis/civitai-intake/decisions

Route Map#

  • Route-map articles ×5

Sibling quick-actions#

  • Open Isis Model Registry workspace/studio/isis/model-registry
  • Back to Studio workspace index/studio

Data & contracts#

  • Reads: GET /v1/admin/isis/civitai-intake (review-queue context: rows, candidate pool, pipeline stages, decision history)
  • Writes: POST /v1/admin/isis/civitai-intake/decisions (record a rights/license/safety decision; advances the candidate along the @isis/ai-providers/civitai-intake REVIEW_QUEUES state machine)
  • 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/StudioIsisCivitaiIntegrationWorkspace.tsx
    • apps/oshun/web/src/components/studio/StudioIsisCivitaiIntegrationRouteMap.ts

Cross-references#

Open questions / known gaps#

  • No breadcrumb on this route — navigation is via sibling quick-actions
  • This intake console is a distinct review/decision shape (queue + pipeline rail + decision history), not the single-form lane used by most Isis surfaces; image/LoRA intake here is separate from the model-governance-3d domain