V1 Web PWA · Surface walkthrough

Studio Hathor · Event Publisher

A per-surface walkthrough of the V1 Web PWA studio surface: layout, states, interactions, data, and cross-references.

walked
8sections2 minread

On this page

Context. surface studio · domain hathor · route /studio/hathor/event-publisher · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/hathor/event-publisher/page.tsx

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)

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

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 (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#

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.