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

## Purpose

Aggregator that unifies the Hathor domain-model lane consoles — character,
location, faction, and timeline modeling — under one route, fronted by a
Capability Summary. It owns no `/v1` fetch of its own; each embedded lane runs
its own admin computation.

## Entry points

- **Quick-action link from `/studio/hathor/character-modeling`** — "Open Hathor
  Domain Models workspace" (verify against that page's source)
- **Breadcrumb** from `/studio/hathor/character-modeling`
- **Direct URL / bookmark** — yes; `alternates.canonical` set to
  `/studio/hathor/domain-models`
- **Studio overview** — see
  [`../../studio-overview.md`](../../studio-overview.md)

## Layout regions

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

- **Breadcrumb panel** (`data-hathor-domain-models-breadcrumbs`) — `<nav>` ol:
  Studio (link) / Hathor Character Modeling (link) / Domain Models (current)
- **Workspace** `<StudioHathorDomainModelsWorkspace />`
  (`data-hathor-domain-models-workspace`):
  - `WorkspaceHeading` `<h1>` — "Hathor Domain Models Workspace"
  - Summary `<p data-hathor-domain-models-summary>`
  - **Capability Summary** panel (`data-hathor-domain-models-capability-summary`,
    `<h2>` "Capability Summary") listing
    `HATHOR_DOMAIN_MODELS_CAPABILITIES` (`data-hathor-domain-models-capability`)
  - Four embedded lanes, each a `<section>` with an `<h2>` and a
    `WorkspaceSection`:
    - **Character Modeling Lane** (`data-hathor-domain-models-character-lane`) →
      `<StudioHathorCharacterModelingWorkspace />`
    - **Location Modeling Lane** (`data-hathor-domain-models-location-lane`) →
      `<StudioHathorLocationModelingWorkspace />`
    - **Faction Modeling Lane** (`data-hathor-domain-models-faction-lane`) →
      `<StudioHathorFactionModelingWorkspace />`
    - **Timeline Modeling Lane** (`data-hathor-domain-models-timeline-lane`) →
      `<StudioHathorTimelineModelingWorkspace />`
- **Route Map panel** `data-hathor-domain-models-route-map` — `<h2>` "Route Map"
  listing the 6 `STUDIO_HATHOR_DOMAIN_MODELS_ROUTE_MAP` entries
- **Quick-action lane** — five `Link.quickAction` anchors: Character Modeling,
  Location Modeling, Faction Modeling, Timeline Modeling, Back to Studio
  workspace index

## States

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

- [ ] **Character Modeling Lane** — see
      [`./studio-hathor-character-modeling.md`](./studio-hathor-character-modeling.md)
- [ ] **Location Modeling Lane** — leaf console (GET
      `/v1/admin/hathor/workbench-locations` + POST `/assess`); see
      [`./studio-hathor-location-modeling.md`](./studio-hathor-location-modeling.md)
- [ ] **Faction Modeling Lane** — leaf console (GET
      `/v1/admin/hathor/workbench-factions` + POST `/score`); see
      [`./studio-hathor-faction-modeling.md`](./studio-hathor-faction-modeling.md)
- [ ] **Timeline Modeling Lane** — see
      [`./studio-hathor-timeline-modeling.md`](./studio-hathor-timeline-modeling.md)

## Interactions

### Embedded lanes

- [ ] Each lane's own form/submit — walk per the per-lane doc

### Route Map panel

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

### Quick-action lane

- [ ] **"Open Hathor Character Modeling workspace"** → `/studio/hathor/character-modeling`
- [ ] **"Open Hathor Location Modeling workspace"** → `/studio/hathor/location-modeling`
- [ ] **"Open Hathor Faction Modeling workspace"** → `/studio/hathor/faction-modeling`
- [ ] **"Open Hathor Timeline Modeling workspace"** → `/studio/hathor/timeline-modeling`
- [ ] **"Back to Studio workspace index"** → `/studio`

## Data & contracts

- **Reads / Writes**: none at the aggregator level — delegated to the four
  embedded lane consoles, each admin-scoped (`/v1/admin/hathor/...`)
- **Realtime**: none
- **Caching**: each embedded lane fetches its own catalog on mount, `no-store`
- **Auth/role check**: admin-scoped per lane, fail-closed on 401/403; 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-character-modeling.md`](./studio-hathor-character-modeling.md),
  [`./studio-hathor-location-modeling.md`](./studio-hathor-location-modeling.md),
  [`./studio-hathor-faction-modeling.md`](./studio-hathor-faction-modeling.md),
  [`./studio-hathor-timeline-modeling.md`](./studio-hathor-timeline-modeling.md)
- Component sources:
  - `apps/oshun/web/src/components/studio/StudioHathorDomainModelsWorkspace.tsx`
  - `apps/oshun/web/src/components/studio/StudioHathorDomainModelsRouteMap.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.
