Context. surface studio · domain isis · route /studio/isis/job-management · auth signed-in + studio entitlement (NOT AAA-gated) · source apps/oshun/web/src/app/studio/isis/job-management/page.tsx
Last walked. 2026-07-01 real-infra Playwright route journey — Studio-boundary hard-block, localhost lane bypass, live /v1/generation/jobs list/process/retry, filters, job detail, loading/empty/error/malformed/unauthorized/anonymous states, route map, quick-actions, 44px hit targets, and shared axe gate. Evidence: apps/oshun/web/e2e/studio-isis-job-management.spec.ts and WALKTHROUGH/results/v1-real-infra-run-2026-06-22.md#256-2026-07-01-studio-isis-job-management-coverage
Purpose#
Admin lane console for the generation job queue. It reads the live queue, lets
the operator filter and inspect a job's request / result / error, drain the
queue with a worker tick, and re-queue a failed job. Reads the queue via
/v1/generation/jobs and acts via /v1/generation/jobs/process and per-job
/v1/generation/jobs/{jobId}/retry; admin-scoped, fail-closed
(provider_not_configured when creds are absent).
Entry points#
- Sibling quick-action from
/studio/isis/job-submission - 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-job-management-workspace):<h1>(WorkspaceHeading) "Isis Job Management Workspace"- Summary paragraph (
data-isis-job-management-summary) and per-status counts (data-jobs-status-count) for queued / running / complete / failed / blocked / needs_review - Filters: search (
data-jobs-search), Status (data-jobs-status-filter), Kind (data-jobs-kind-filter) - Job list (
data-jobs-list,data-jobs-rowwithdata-jobs-row-status); empty statedata-jobs-list-empty - Job detail (
data-jobs-detail,data-jobs-detail-result/data-jobs-detail-error) - Process-queue button (
data-jobs-process) and action result (data-jobs-action-result,data-jobs-action-status)
- Route Map panel (
data-isis-job-management-route-map):<h2>Route Map</h2>over the route map (5 entries) - Sibling quick-actions panel:
/studio/isis/job-submission,/studio
States#
- Loading —
data-jobs-loading - Unauthorized — 401/403 admin-scope fail-closed;
data-jobs-unauthorized("Isis workspace scope required to manage the generation queue.") - Error — non-OK / malformed;
data-jobs-error - Ready (queue) — list + filters + detail render
- Empty — no jobs match filters;
data-jobs-list-empty - Result — process/retry result (
data-jobs-action-result)
Interactions#
Queue actions#
- Status / Kind filters (
data-jobs-status-filter,data-jobs-kind-filter; "All" + per-value options) and search (data-jobs-search) - Process queue (
data-jobs-process) — posts{ max: 25 }to/v1/generation/jobs/process(worker tick) - Re-queue this job (
data-jobs-retry) — posts to/v1/generation/jobs/{jobId}/retryfor the selected job - Selecting a row populates the detail panel ("Select a job to inspect its request, result, and error.")
Route Map#
- Route-map articles ×5
Sibling quick-actions#
- Open Isis Job Submission workspace →
/studio/isis/job-submission - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/generation/jobs(live queue) - Writes:
POST /v1/generation/jobs/process;POST /v1/generation/jobs/{jobId}/retry - 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 (not AAA-gated)
- Component sources:
apps/oshun/web/src/components/studio/StudioIsisJobManagementWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisJobManagementRouteMap.ts
Cross-references#
- Studio overview:
../../studio-overview.md - Sibling routes:
Automated coverage#
apps/oshun/web/e2e/studio-isis-job-management.spec.tsdrives the direct hard-block, localhost-only lane bypass, live BFF list/process/retry, filters, selected detail, route-map, quick-actions, loading/empty/error/malformed, unauthorized, anonymous redirect, 44px hit targets, and shared axe gate.apps/oshun/bff/src/generation/jobs-route.test.tscovers the generation job route contract, including admin gating, status filters, fail-closedprovider_not_configured, release-gateblocked/needs_reviewoutcomes, retry success, retry 409, and unknown-job 404.
Open questions / known gaps#
- No breadcrumb on this route — navigation via sibling quick-actions
- This lane targets the live
/v1/generation/jobsqueue (not an/v1/admin/isis/...catalog) — fails closed when the provider is not configured - Route-map sub-paths are declared but not yet implemented as separate pages
- Manual AT, real touch-device, offline replay, and telemetry-delivery passes remain product-hardening items beyond this automated route journey