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

## Purpose

Aggregator that unifies the Hathor narrative lane consoles — quest authoring,
dialogue tree authoring, story graph authoring, and narrative export — under one
route, fronted by a Capability Summary. It owns no `/v1` fetch of its own; each
embedded lane runs its own surface.

## Entry points

- **Quick-action link from `/studio/hathor/quest-authoring`** and breadcrumb
  parent (verify against that page's source)
- **Direct URL / bookmark** — yes; `alternates.canonical` set to
  `/studio/hathor/narrative`
- **Studio overview** — see
  [`../../studio-overview.md`](../../studio-overview.md)

## Layout regions

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

- **Breadcrumb panel** (`data-hathor-narrative-breadcrumbs`) — `<nav>` ol: Studio
  (link) / Hathor Quest Authoring (link) / Narrative (current)
- **Workspace** `<StudioHathorNarrativeWorkspace />`
  (`data-hathor-narrative-workspace`):
  - `WorkspaceHeading` `<h1>` — "Hathor Narrative Workspace"
  - Summary `<p data-hathor-narrative-summary>`
  - **Capability Summary** panel (`data-hathor-narrative-capability-summary`,
    `<h2>` "Capability Summary") listing `HATHOR_NARRATIVE_CAPABILITIES`
    (`data-hathor-narrative-capability`)
  - Four embedded lanes, each a `<section>` with an `<h2>` and a
    `WorkspaceSection`:
    - **Quest Authoring Lane** (`data-hathor-narrative-quest-lane`) →
      `<StudioHathorQuestAuthoringWorkspace />`
    - **Dialogue Tree Authoring Lane** (`data-hathor-narrative-dialogue-lane`) →
      `<StudioHathorDialogueTreeAuthoringWorkspace />`
    - **Story Graph Authoring Lane** (`data-hathor-narrative-story-graph-lane`) →
      `<StudioHathorStoryGraphAuthoringWorkspace />`
    - **Narrative Export Lane** (`data-hathor-narrative-export-lane`) →
      `<StudioHathorNarrativeExportWorkspace />`
- **Route Map panel** `data-hathor-narrative-route-map` — `<h2>` "Route Map"
  listing the 6 `STUDIO_HATHOR_NARRATIVE_ROUTE_MAP` entries
- **Quick-action lane** — five `Link.quickAction` anchors: Quest Authoring,
  Dialogue Tree Authoring, Story Graph Authoring, Narrative Export, Back to Studio
  workspace index

## States

States are owned by each embedded lane; the aggregator itself has no fetch.

- [ ] **Quest Authoring Lane** — see
      [`./studio-hathor-quest-authoring.md`](./studio-hathor-quest-authoring.md)
- [ ] **Dialogue Tree Authoring Lane** — see
      [`./studio-hathor-dialogue-tree-authoring.md`](./studio-hathor-dialogue-tree-authoring.md)
- [ ] **Story Graph Authoring Lane** — see
      [`./studio-hathor-story-graph-authoring.md`](./studio-hathor-story-graph-authoring.md)
- [ ] **Narrative Export Lane** — admin lane console (Live Export Estimator); see
      [`./studio-hathor-narrative-export.md`](./studio-hathor-narrative-export.md)

## Interactions

### Embedded lanes

- [ ] Each lane's own controls — walk per the per-lane doc

### Route Map panel

- [ ] **Route entries** — verify match with `STUDIO_HATHOR_NARRATIVE_ROUTE_MAP`
      (6 entries)

### Quick-action lane

- [ ] **"Open Hathor Quest Authoring workspace"** → `/studio/hathor/quest-authoring`
- [ ] **"Open Hathor Dialogue Tree Authoring workspace"** → `/studio/hathor/dialogue-tree-authoring`
- [ ] **"Open Hathor Story Graph Authoring workspace"** → `/studio/hathor/story-graph-authoring`
- [ ] **"Open Hathor Narrative Export workspace"** → `/studio/hathor/narrative-export`
- [ ] **"Back to Studio workspace index"** → `/studio`

## Data & contracts

- **Reads / Writes**: none at the aggregator level — delegated to the four
  embedded lane workspaces
- **Realtime**: none
- **Caching**: each embedded lane manages its own fetch lifecycle
- **Auth/role check**: per embedded lane; route gated signed-in + studio by the
  BFF proxy

## Cross-references

- Parent: [`../../studio-overview.md`](../../studio-overview.md)
- Shell:
  [`../../../shell/04-auth-session.md`](../../../shell/04-auth-session.md)
- Embedded lanes:
  [`./studio-hathor-quest-authoring.md`](./studio-hathor-quest-authoring.md),
  [`./studio-hathor-dialogue-tree-authoring.md`](./studio-hathor-dialogue-tree-authoring.md),
  [`./studio-hathor-story-graph-authoring.md`](./studio-hathor-story-graph-authoring.md),
  [`./studio-hathor-narrative-export.md`](./studio-hathor-narrative-export.md)
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioHathorNarrativeWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorNarrativeRouteMap.ts`

## Open questions / known gaps

- [ ] Hathor is `unconfirmed-v1` per `WALKTHROUGH/matrix/routes.csv`. Confirm
      whether the dedicated `/studio/hathor/` routes ship at V1 or are
      internal-only.
- [ ] The embedded Story Graph Authoring lane is still the older dense
      expert-mode template (see its per-lane doc); its presence inside this
      aggregator inherits that scaffolding.
