---
path: /studio/hathor/workbench
surface: studio
domain: hathor
auth: signed-in + studio entitlement
source: apps/oshun/web/src/app/studio/hathor/workbench/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)'
---

# Studio Hathor · Workbench

## Purpose

Top-level aggregator for the Hathor world workbench: a Capability Summary plus
seven embedded lane workspaces — Dashboard, Worlds, World Editor, Characters,
Factions, Locations, and Timeline. The page itself issues no `/v1` fetch — each
embedded lane owns its own admin-scoped, fail-closed backend wiring.

## Entry points

- **Breadcrumb** — Studio › Hathor Workbench Dashboard › Workbench
- **Quick-action links** to workbench-dashboard, workbench-worlds,
  workbench-world-editor, workbench-timeline, and Back to Studio
- **Direct URL / bookmark** — yes; `alternates.canonical` set
- **Studio overview** — see
  [`../../studio-overview.md`](../../studio-overview.md)

## Layout regions

`page.tsx` renders inside `<ShellLayout active="studio">`:

- **Breadcrumb panel** (`data-hathor-workbench-breadcrumbs`): Studio → Hathor
  Workbench Dashboard → Workbench (current)
- **Workspace** `<section data-hathor-workbench-workspace>`:
  - `<h1>` (WorkspaceHeading) "Hathor Workbench Workspace"
  - Summary `<p data-hathor-workbench-summary>`
  - **Capability Summary** (`data-hathor-workbench-capability-summary`, `<h2>`):
    4 `data-hathor-workbench-capability` cards — dashboard-and-operations,
    world-and-editor-controls, entity-and-timeline-authoring, security-and-parity
  - **Workbench Dashboard Lane** (`data-hathor-workbench-dashboard-lane`, `<h2>`)
    → `<StudioHathorWorkbenchDashboardWorkspace />`
  - **Workbench Worlds Lane** (`data-hathor-workbench-worlds-lane`, `<h2>`) →
    `<StudioHathorWorkbenchWorldsWorkspace />`
  - **Workbench World Editor Lane** (`data-hathor-workbench-world-editor-lane`,
    `<h2>`) → `<StudioHathorWorkbenchWorldEditorWorkspace />`
  - **Workbench Characters Lane** (`data-hathor-workbench-characters-lane`,
    `<h2>`) → `<StudioHathorWorkbenchCharactersWorkspace />`
  - **Workbench Factions Lane** (`data-hathor-workbench-factions-lane`, `<h2>`) →
    `<StudioHathorWorkbenchFactionsWorkspace />`
  - **Workbench Locations Lane** (`data-hathor-workbench-locations-lane`, `<h2>`)
    → `<StudioHathorWorkbenchLocationsWorkspace />`
  - **Workbench Timeline Lane** (`data-hathor-workbench-timeline-lane`, `<h2>`) →
    `<StudioHathorWorkbenchTimelineWorkspace />`
- **Route Map panel** (`data-hathor-workbench-route-map`): `<h2>` "Route Map" + 6
  entries from `STUDIO_HATHOR_WORKBENCH_ROUTE_MAP`
- **Quick-action lane**: five `Link.quickAction` anchors (see Entry points)

## States

This page owns no fetch; each embedded lane carries its own
loading / unauthorized / error / ready / result states:

- [ ] **Workbench Dashboard Lane** — delegated to
      [`./studio-hathor-workbench-dashboard.md`](./studio-hathor-workbench-dashboard.md)
- [ ] **Workbench Worlds Lane** — delegated to the worlds workspace
- [ ] **Workbench World Editor Lane** — delegated to the world-editor workspace
- [ ] **Workbench Characters Lane** — delegated to the characters workspace
- [ ] **Workbench Factions Lane** — delegated to the factions workspace
- [ ] **Workbench Locations Lane** — delegated to the locations workspace
- [ ] **Workbench Timeline Lane** — delegated to
      [`./studio-hathor-workbench-timeline.md`](./studio-hathor-workbench-timeline.md)

## Interactions

### Embedded lanes

- [ ] **Dashboard / Worlds / World Editor / Characters / Factions / Locations /
      Timeline** — seven embedded `Studio*Workspace` lanes

### Route Map panel

- [ ] **6 route entries** — verify match with `STUDIO_HATHOR_WORKBENCH_ROUTE_MAP`

### Quick-action lane

- [ ] **"Open Hathor Workbench Dashboard workspace"** (→
      `/studio/hathor/workbench-dashboard`)
- [ ] **"Open Hathor Workbench Worlds workspace"** (→
      `/studio/hathor/workbench-worlds`)
- [ ] **"Open Hathor Workbench World Editor workspace"** (→
      `/studio/hathor/workbench-world-editor`)
- [ ] **"Open Hathor Workbench Timeline workspace"** (→
      `/studio/hathor/workbench-timeline`)
- [ ] **"Back to Studio workspace index"** (→ `/studio`)

## Data & contracts

- **Reads / Writes**: none at the aggregator level; embedded lanes own their
  `/v1/admin/hathor/*` fetches
- **Realtime**: none
- **Caching**: embedded client fetches use `cache: 'no-store'` +
  `buildBffAuthHeaders`
- **Auth/role check**: each embedded lane is admin-scoped fail-closed; route is
  behind the signed-in + studio proxy gate

## Cross-references

- Parent: [`../../studio-overview.md`](../../studio-overview.md)
- Shell:
  [`../../../shell/04-auth-session.md`](../../../shell/04-auth-session.md)
- Embedded / sibling lanes:
  [`./studio-hathor-workbench-dashboard.md`](./studio-hathor-workbench-dashboard.md),
  [`./studio-hathor-workbench-timeline.md`](./studio-hathor-workbench-timeline.md)
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchRouteMap.ts`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchDashboardWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldsWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldEditorWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchCharactersWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchFactionsWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchLocationsWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorkbenchTimelineWorkspace.tsx`

## Open questions / known gaps

- [ ] Hathor is `unconfirmed-v1` per `WALKTHROUGH/matrix/routes.csv`. Confirm
      whether the dedicated `/studio/hathor/*` admin lane consoles ship in V1.
- [ ] Route Map advertises `dashboard`, `worlds/`, `world-editor/`, `timeline/`,
      and `governance/` sub-routes; the seven embedded lanes have standalone
      sibling routes (`workbench-*`) rather than these nested paths — confirm the
      intended IA.
