Context. surface studio · domain hathor · route /studio/hathor/workbench · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/hathor/workbench/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#
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.canonicalset - Studio overview — see
../../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>): 4data-hathor-workbench-capabilitycards — 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 fromSTUDIO_HATHOR_WORKBENCH_ROUTE_MAP - Quick-action lane: five
Link.quickActionanchors (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 - 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
Interactions#
Embedded lanes#
- Dashboard / Worlds / World Editor / Characters / Factions / Locations /
Timeline — seven embedded
Studio*Workspacelanes
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 - Shell:
../../../shell/04-auth-session.md - Embedded / sibling lanes:
./studio-hathor-workbench-dashboard.md,./studio-hathor-workbench-timeline.md - Component sources:
apps/oshun/web/src/components/studio/StudioHathorWorkbenchWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchRouteMap.tsapps/oshun/web/src/components/studio/StudioHathorWorkbenchDashboardWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldsWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchWorldEditorWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchCharactersWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchFactionsWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchLocationsWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchTimelineWorkspace.tsx
Open questions / known gaps#
- Hathor is
unconfirmed-v1perWALKTHROUGH/matrix/routes.csv. Confirm whether the dedicated/studio/hathor/*admin lane consoles ship in V1. - Route Map advertises
dashboard,worlds/,world-editor/,timeline/, andgovernance/sub-routes; the seven embedded lanes have standalone sibling routes (workbench-*) rather than these nested paths — confirm the intended IA.