---
path: /studio/isis/automated-quality-scoring
surface: studio
domain: isis
auth:
  signed-in + studio entitlement; Studio Isis production boundary hard-blocks
  this route. Automated lane verification uses the explicit localhost-only E2E
  bypass.
source: apps/oshun/web/src/app/studio/isis/automated-quality-scoring/page.tsx
status: walked
last_walked:
  '2026-07-23 automated desktop Chromium + Pixel 7 mobile walk — production
  hard-block, localhost-only lane entry, deterministic fixture report, GET-only
  refresh, filtering, denied and malformed fail-closed states, route status,
  touch targets, responsive containment, and applicable axe verified'
---

# Isis Automated Quality Scoring

## Purpose

Admin read model that runs the source-defined golden-output perceptual
regression suite over its built-in deterministic fixture dataset. It reports the
suite-local threshold verdict, pass rate, expectation accuracy, mean perceptual
score, failed thresholds, and per-case validity-vs-expectation with breaches. It
does not accept customer assets, persist runs, or authorize a production
release. Initial load and refresh both use `GET /v1/admin/isis/quality-scoring`;
admin-scoped and fail-closed.

## Entry points

- Embedded as a lane inside `/studio/isis/anomaly-detection`
- Sibling quick-action from `/studio/isis/artifact-detection`
- 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-automated-quality-scoring-workspace`):
  - `<h1>` (`WorkspaceHeading`) "Isis Automated Quality Scoring Workspace"
  - Summary paragraph (`data-isis-automated-quality-scoring-summary`) and exact
    `deterministic_fixture_regression_read_model` disposition
    (`data-isis-automated-quality-scoring-disposition`)
  - Fixture-suite verdict (`data-quality-gate=passed|failed`), expectation
    accuracy, failed thresholds (`data-quality-failed-thresholds`), report
    refresh (`data-quality-rerun`), a case filter, and the per-case list
    (`data-quality-cases`, `data-quality-case=<id>` with
    `data-quality-case-expectation`); empty state `data-quality-cases-empty`
- **Route Map panel** (`data-isis-automated-quality-scoring-route-map`):
  `<h2>Route Map</h2>` over one `mounted-read-model` entry and four
  `documented-contract` entries
- **Sibling quick-actions panel**: `/studio/isis/retention-policies`, `/studio`

## States

- [ ] **Loading** — `data-quality-loading` "Running quality regression…"
- [ ] **Unauthorized** — 401/403 admin-scope fail-closed;
      `data-quality-unauthorized`
- [ ] **Error** — non-OK / malformed; `data-quality-error` ("Could not run
      quality scoring.") with explicit `data-quality-retry`
- [ ] **Ready (fixture verdict + cases)** — a fully validated report is present
- [ ] **Result** — refresh re-reads the report (`data-quality-rerun`)

## Interactions

### Gate + cases

- [ ] **Refresh fixture report** (`data-quality-rerun`) — re-evaluates the
      deterministic built-in suite through `GET`; disabled while refreshing
- [ ] **Retry report** (`data-quality-retry`) — retries a failed `GET`
- [ ] **Filter cases** (`data-quality-filter`, `<select>`: all / expectation-met
      / expectation-unmet)
- [ ] Per-case rows (`data-quality-case=<id>`, `data-quality-case-expectation`)

### Route Map

- [ ] **Mounted read model** ×1
- [ ] **Documented route shapes without pages or authority** ×4

### Sibling quick-actions

- [ ] **Open Isis Retention Policies workspace** →
      `/studio/isis/retention-policies`
- [ ] **Back to Studio workspace index** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/isis/quality-scoring` (regression report: summary +
  per-case results)
- **Writes**: none; `POST /v1/admin/isis/quality-scoring` is not registered and
  returns 404
- **Realtime**: none
- **Caching**: client fetch on mount, `cache: 'no-store'`,
  `buildBffAuthHeaders()`
- **Validation**: the browser requires report version/timestamps, finite summary
  metrics, integer/count consistency, string-only failure arrays, and every
  rendered case field before accepting a response
- **Auth/role check**: BFF admin-scoped and fail-closed (401/403); the web route
  is signed-in and then production-hard-blocked by the Studio Isis boundary
- **Component sources**:
  - `apps/oshun/web/src/components/studio/StudioIsisAutomatedQualityScoringWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisAutomatedQualityScoringRouteMap.ts`

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- Parent lane:
  [`studio-isis-anomaly-detection.md`](./studio-isis-anomaly-detection.md)
- Sibling routes:
  - [`studio-isis-artifact-detection.md`](./studio-isis-artifact-detection.md)
  - [`studio-isis-retention-policies.md`](./studio-isis-retention-policies.md)
  - [`studio-isis-content-safety.md`](./studio-isis-content-safety.md)

## Open questions / known gaps

- [ ] No breadcrumb on this route — navigation via sibling quick-actions
- [ ] Route-map sub-paths (`/scenes`, `/exports`, `/revisions`, `/governance`)
      are documented shapes only, with no pages, persisted records, exports,
      rollback, governance decisions, approvals, or release signoff
- [ ] The built-in fixture suite is not customer-asset evaluation, durable run
      history, signed evidence, or production release authority
