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

## Purpose

Aggregator surface that composes Hathor's narrative-and-world publishing lanes:
a Capability Summary plus the embedded Narrative API and World API workspaces.
The page itself issues no `/v1` fetch — each embedded lane owns its own
admin-scoped, fail-closed backend wiring.

## Entry points

- **Breadcrumb** — Studio › Hathor Narrative API › Event Publisher
- **Quick-action links** to narrative-api, world-api, narrative-export,
  world-configuration, 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-event-publisher-breadcrumbs`): nav ol with
  Studio → Hathor Narrative API → Event Publisher (current)
- **Workspace** `<section data-hathor-event-publisher-workspace>`:
  - `<h1>` (WorkspaceHeading) "Hathor Event Publisher Workspace"
  - Summary `<p data-hathor-event-publisher-summary>`
  - **Capability Summary** (`data-hathor-event-publisher-capability-summary`,
    `<h2>`): 4 `data-hathor-event-publisher-capability` cards —
    publisher-orchestration, narrative-payload-lane, world-state-delivery-lane,
    security-and-parity
  - **Narrative API Lane** (`data-hathor-event-publisher-narrative-api-lane`,
    `<h2>`) → embeds `<StudioHathorNarrativeApiWorkspace />`
  - **World API Lane** (`data-hathor-event-publisher-world-api-lane`, `<h2>`) →
    embeds `<StudioHathorWorldApiWorkspace />`
- **Route Map panel** (`data-hathor-event-publisher-route-map`): `<h2>` "Route
  Map" + 6 entries from `STUDIO_HATHOR_EVENT_PUBLISHER_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:

- [ ] **Narrative API Lane** — delegated to
      [`./studio-hathor-narrative-api.md`](./studio-hathor-narrative-api.md)
      (itself an aggregator of export / structure / theory lanes)
- [ ] **World API Lane** — delegated to the World API workspace

## Interactions

### Embedded lanes

- [ ] **Narrative API Lane** — `<StudioHathorNarrativeApiWorkspace />`
- [ ] **World API Lane** — `<StudioHathorWorldApiWorkspace />`

### Route Map panel

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

### Quick-action lane

- [ ] **"Open Hathor Narrative API workspace"** (→ `/studio/hathor/narrative-api`)
- [ ] **"Open Hathor World API workspace"** (→ `/studio/hathor/world-api`)
- [ ] **"Open Hathor Narrative Export workspace"** (→
      `/studio/hathor/narrative-export`)
- [ ] **"Open Hathor World Configuration workspace"** (→
      `/studio/hathor/world-configuration`)
- [ ] **"Back to Studio workspace index"** (→ `/studio`)

## Data & contracts

- **Reads / Writes**: none at the aggregator level; the embedded Narrative API
  and World API lanes own their `/v1/admin/hathor/*` fetches
- **Realtime**: none
- **Caching**: aggregator renders embedded client workspaces; embedded fetches
  use `cache: 'no-store'` + `buildBffAuthHeaders`
- **Auth/role check**: each embedded lane is admin-scoped fail-closed; the 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-narrative-api.md`](./studio-hathor-narrative-api.md),
  [`./studio-hathor-narrative-export.md`](./studio-hathor-narrative-export.md)
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioHathorEventPublisherWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorEventPublisherRouteMap.ts`
  - `apps/oshun/web/src/components/studio/StudioHathorNarrativeApiWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorWorldApiWorkspace.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.
- [ ] The aggregator composes two child workspaces (one of which, Narrative API,
      is itself an aggregator), so the lane tree nests two deep — confirm this is
      intended IA rather than an accidental double-wrap.
- [ ] Route Map advertises `topics/`, `streams/`, `deliveries/`, `parity/`, and
      `governance/` sub-routes with no `page.tsx` yet.
