Context. surface studio · domain hathor · route /studio/hathor/workbench-characters · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/hathor/workbench-characters/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#
Admin lane console for the @hathor/characters CGI character-packet validator.
The validate lane submits a world's CGI character packet and checks its export
readiness — every required character is present with appearance detail,
costume/visual-reference review flags are satisfied, and the CGI export metadata
is complete. Costume/appearance/character/export gaps are blocking; a missing
visual reference is a warning. Admin-scoped and fail-closed.
Entry points#
- Direct URL / bookmark —
/studio/hathor/workbench-characters;alternates.canonicalis set. - Quick-action from siblings — this page links to the Workbench World Editor lane; the Character Modeling route links here.
- Studio overview — see
../../studio-overview.md.
Layout regions#
page.tsx renders inside <ShellLayout active="studio">:
- Workspace (
StudioHathorWorkbenchCharactersWorkspace,data-hathor-workbench-characters-workspace):<h1>WorkspaceHeading— "Hathor Workbench Characters Workspace"- Summary
<p data-hathor-workbench-characters-summary> - The catalog state, then the packet form + result.
- Route Map panel (
<section data-hathor-workbench-characters-route-map>,<h2>Route Map</h2>): 5 entries fromSTUDIO_HATHOR_WORKBENCH_CHARACTERS_ROUTE_MAP(path + purpose). - Quick-action lane (
className="quickAction"Links): Workbench World Editor, Back to Studio workspace index.
States#
- Loading —
<p data-hathor-wbc-loading>"Loading character-packet validator…". - Unauthorized —
data-hathor-wbc-unauthorizedon 401/403 (admin-scope). - Error —
data-hathor-wbc-erroron a non-OK catalog response or network failure. - Ready (form) —
data-hathor-wbc-validate-formwith the packet textarea. - Result —
data-hathor-wbc-resultwithdata-hathor-wbc-validverdict,data-hathor-wbc-counts(characters / blocking / warnings), anddata-hathor-wbc-issuesrows (ordata-hathor-wbc-clean). - Validation error —
data-hathor-wbc-validate-errorfor malformed JSON, a non-object packet, or a failed POST.
Interactions#
-
data-hathor-wbc-packet(textarea,aria-label="packet json") — edit the CGI character packet JSON. -
data-hathor-wbc-validate-submit("Validate character packet") — parses the JSON, requires an object, then POSTs{ packet }; on 200 with a validresultrenders the verdict. - Route Map entries — verify against
STUDIO_HATHOR_WORKBENCH_CHARACTERS_ROUTE_MAP(5 entries). - Quick-action links — Workbench World Editor
(
/studio/hathor/workbench-world-editor), Back to Studio (/studio).
Data & contracts#
- Reads:
GET /v1/admin/hathor/workbench-characters(catalog:issueTypes). - Writes:
POST /v1/admin/hathor/workbench-characters/validatewith{ packet }. - Realtime: none.
- Caching: client fetch on mount,
cache: 'no-store',buildBffAuthHeaders(),AbortControlleron unmount. - Auth: admin-scoped, fail-closed (401/403 → unauthorized); route is behind the signed-in + studio proxy gate.
Cross-references#
- Parent:
../../studio-overview.md - Component sources:
apps/oshun/web/src/components/studio/StudioHathorWorkbenchCharactersWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchCharactersRouteMap.ts
- Siblings:
./studio-hathor-character-modeling.md(same/v1/admin/hathor/workbench-charactersvalidator),./studio-hathor-workbench-world-editor.md,./studio-hathor-workbench-locations.md
Open questions / known gaps#
- This route and
/studio/hathor/character-modelingmount different components against the same/v1/admin/hathor/workbench-charactersendpoint; confirm the canonical home. - Hathor is
unconfirmed-v1perWALKTHROUGH/matrix/routes.csv; confirm whether the dedicated/studio/hathor/*admin lanes ship V1 or are internal-only.