---
path: /studio/isis/lineage-graph
surface: studio
domain: isis
auth: signed-in + studio entitlement (NOT AAA-gated)
source: apps/oshun/web/src/app/studio/isis/lineage-graph/page.tsx
status: walked
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)'
---

# Isis Lineage Graph

## Purpose

Read-only admin lane console over the §24.10 provenance DAG. For any generated
output it shows the provenance parents (what it was derived from), the
derivative children, and the full descendant reach — the set a takedown would
cascade to. The graph and per-output neighborhood are read live from the lineage
service.

## Entry points

- Sibling quick-action card from `/studio/isis/provenance-tracking`
- Studio index (`/studio`)
- Direct URL / bookmark

## Layout regions

`page.tsx` mounts `ShellLayout active="studio"` and three panels (no breadcrumb
panel).

- **Workspace panel** (`data-isis-lineage-graph-workspace`):
  - `<h1>` "Isis Lineage Graph Workspace" (`WorkspaceHeading`)
  - Summary paragraph (`data-isis-lineage-graph-summary`)
  - Graph summary (`data-lineage-summary`): output count, edge count,
    generatedAt
  - Two-column body: output picker (`data-lineage-outputs`, `<h2>`) of
    `data-lineage-output={id}` buttons, and neighborhood detail
    (`data-lineage-detail`, `<h2>`) with `data-lineage-parents`,
    `data-lineage-children`, `data-lineage-descendants`
- **Route map panel** (`data-isis-lineage-graph-route-map`): `<h2>` "Route Map"
  enumerating `STUDIO_ISIS_LINEAGE_GRAPH_ROUTE_MAP`
- **Quick-actions panel**: `quickAction` links to
  `/studio/isis/provenance-tracking` and "Back to Studio workspace index" →
  `/studio`

## States

- [ ] **Loading** — `data-lineage-loading` "Loading lineage graph…"
- [ ] **Unauthorized** — `data-lineage-unauthorized` (admin-scope fail-closed on
      401/403)
- [ ] **Error** — `data-lineage-error` on non-OK / malformed response
- [ ] **Ready** — graph summary + output picker render; selecting an output
      loads its neighborhood
- [ ] **Neighborhood** — `data-lineage-detail` shows parents / children /
      descendants (descendants empty → "no downstream derivatives")

## Interactions

### Output navigation

- [ ] **Output buttons** — `data-lineage-output={id}` (active marked
      `data-lineage-output-active`); click fetches that output's neighborhood
      via `GET /v1/admin/isis/output-lineage/{outputId}`
- [ ] **Descendant rows** — `data-lineage-descendant={id}` (read-only takedown
      reach)

### Route map

- [ ] **Route-map articles** — non-interactive path + purpose entries

### Quick-actions

- [ ] **Open Isis Provenance Tracking workspace** →
      `/studio/isis/provenance-tracking`
- [ ] **Back to Studio workspace index** → `/studio`

## Data & contracts

- **Reads**: `GET /v1/admin/isis/output-lineage` (`LINEAGE_ENDPOINT`) on mount
  — graph (outputs + edges); `GET /v1/admin/isis/output-lineage/{outputId}` on
  selection — neighborhood (parents/children/descendants)
- **Writes**: None (read-only provenance view)
- **Realtime**: None
- **Caching**: client `fetch`, `cache: 'no-store'`, `buildBffAuthHeaders()`
- **Auth**: admin-scoped fail-closed (401/403 → unauthorized state); route
  behind the signed-in + studio proxy gate
- **Component sources**:
  - `apps/oshun/web/src/components/studio/StudioIsisLineageGraphWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioIsisLineageGraphRouteMap.ts`

## Cross-references

- Studio overview: [`../../studio-overview.md`](../../studio-overview.md)
- Sibling routes:
  - [`studio-isis-provenance-tracking.md`](./studio-isis-provenance-tracking.md)
  - [`studio-isis-output-registry.md`](./studio-isis-output-registry.md)
  - [`studio-isis-model-comparison.md`](./studio-isis-model-comparison.md)

## Open questions / known gaps

- [ ] Read-only — initiating a takedown that cascades over the descendant reach
      happens elsewhere; this view only previews the reach
- [ ] Output picker is the full graph node set; confirm how very large DAGs
      paginate / scope
