Context. surface studio · domain isis · route /studio/isis/collection-management · auth signed-in + studio entitlement (segment not in AAA_ONLY_STUDIO_ROUTES — renders as-is) · source apps/oshun/web/src/app/studio/isis/collection-management/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 the generated-output gallery. It reads the gallery context,
lets the operator filter and multi-select outputs, and applies a bulk action
(tag add/remove, takedown with consent + reason), with per-invocation undo. Reads
the gallery via /v1/admin/isis/output-gallery and writes bulk actions to
/v1/admin/isis/output-gallery/bulk-actions; admin-scoped and fail-closed.
Entry points#
- Embedded as the "Collection Management Lane" inside
/studio/isis/outputs - Sibling quick-action from
/studio/isis/model-quality-assessment - 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-collection-management-workspace):<h1>(WorkspaceHeading) "Isis Collection Management Workspace"- Summary paragraph (
data-isis-collection-management-summary) - Filters: search (
data-gallery-search), Domain (data-gallery-domain-filter), Kind (data-gallery-kind-filter), Status (data-gallery-takendown-filter) - Output records list (
data-gallery-records,data-gallery-record=<id>withdata-gallery-record-select/data-gallery-record-takendown); empty statedata-gallery-records-empty - Bulk-action panel (
data-gallery-action-panel) and invocation history (data-gallery-invocations, eachdata-gallery-invocationwithdata-gallery-undo)
- Route Map panel (
data-isis-collection-management-route-map):<h2>Route Map</h2>over the route map (5 entries) - Sibling quick-actions panel:
/studio/isis/model-quality-assessment,/studio
States#
- Loading —
data-gallery-loading - Unauthorized — 401/403 admin-scope fail-closed;
data-gallery-unauthorized - Error — non-OK / malformed;
data-gallery-error - Ready (gallery) — records + filters + action panel render
- Empty — no records match filters;
data-gallery-records-empty - Result —
data-gallery-action-result(data-gallery-action-status); undo failure shown inline
Interactions#
Bulk-action panel (data-gallery-action-panel)#
- Action kind (
data-gallery-action-kind,<select>— e.g. tag / takedown) - Add tags (comma) (
data-gallery-add-tags) - Remove tags (comma) (
data-gallery-remove-tags) - Queue id (
data-gallery-queue-id) - Consent record id (
data-gallery-consent-id) - Reason (
data-gallery-reason) - Apply to selected (
data-gallery-action-submit) — disabled until ≥1 record selected;POST /v1/admin/isis/output-gallery/bulk-actions - Undo (
data-gallery-undo) —POST /v1/admin/isis/output-gallery/bulk-actions/{invocationId}/undo
Route Map#
- Route-map articles ×5
Sibling quick-actions#
- Open Isis Model Quality Assessment workspace →
/studio/isis/model-quality-assessment - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/admin/isis/output-gallery(gallery records + filter facets) - Writes:
POST /v1/admin/isis/output-gallery/bulk-actions(apply);POST /v1/admin/isis/output-gallery/bulk-actions/{invocationId}/undo - Realtime: none
- Caching: client fetch on mount,
cache: 'no-store',buildBffAuthHeaders() - Auth/role check: admin-scoped, fail-closed (401/403); route signed-in + studio entitlement
- Component sources:
apps/oshun/web/src/components/studio/StudioIsisCollectionManagementWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisCollectionManagementRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - Also embedded in:
studio-isis-outputs.md - Sibling routes:
Open questions / known gaps#
- No breadcrumb on this route — navigation via sibling quick-actions
- Also embedded as a lane inside the Outputs aggregator
- Route-map sub-paths are declared but not yet implemented as separate pages