Context. surface studio · domain hathor · route /studio/hathor/workbench-factions · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/hathor/workbench-factions/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 that scores a board of factions across power, military,
governments, and stability — the same workbench-factions admin backend the
faction-modeling lane consumes, surfaced here as a tabular scoreboard. The
operator submits a JSON faction array and the lane returns a per-faction table.
Entry points#
- Quick-action link from
/studio/hathor/workbench-characters(verify against that page's source) - Direct URL / bookmark — yes;
alternates.canonicalset to/studio/hathor/workbench-factions - Studio overview — see
../../studio-overview.md
Layout regions#
page.tsx renders inside <ShellLayout active="studio">:
- Workspace
<StudioHathorWorkbenchFactionsWorkspace />(data-hathor-workbench-factions-workspace):WorkspaceHeading<h1>— "Hathor Workbench Factions Workspace"- Summary
<p data-hathor-workbench-factions-summary> - The scoring form lane (loading / unauthorized / error / form / result)
- Route Map panel
data-hathor-workbench-factions-route-map—<h2>"Route Map" listing the 5STUDIO_HATHOR_WORKBENCH_FACTIONS_ROUTE_MAPentries (catalog / alliances / revisions / governance child paths) - Quick-action lane — two
Link.quickActionanchors: Workbench Characters, Back to Studio workspace index
States#
- Loading —
data-hathor-wf-loadingwhile the GET catalog request is in flight - Unauthorized (admin-scope 401/403) —
data-hathor-wf-unauthorized - Error —
data-hathor-wf-error - Ready (form) —
data-hathor-wf-typesenum hint + factions textarea + submit - Result —
data-hathor-wf-resultwithdata-hathor-wf-summary-lineanddata-hathor-wf-table(per-factiondata-hathor-wf-rowcarryingdata-hathor-wf-power/data-hathor-wf-military/data-hathor-wf-governments/data-hathor-wf-stability) - Validation error —
data-hathor-wf-score-error
Interactions#
Faction scoring lane#
- Factions — factions textarea (
data-hathor-wf-factions), JSON array - Submit —
<button data-hathor-wf-submit>"Score factions" → POSTSCORE_ENDPOINT
Route Map panel#
- Route entries — verify match with
STUDIO_HATHOR_WORKBENCH_FACTIONS_ROUTE_MAP(5 entries)
Quick-action lane#
- "Open Hathor Workbench Characters workspace" →
/studio/hathor/workbench-characters - "Back to Studio workspace index" →
/studio
Data & contracts#
- Reads:
GET /v1/admin/hathor/workbench-factions(WF_ENDPOINT) — the faction-type catalog - Writes:
POST /v1/admin/hathor/workbench-factions/score(SCORE_ENDPOINT) with the faction array - Realtime: none
- Caching: client
fetchon mount,cache: 'no-store',buildBffAuthHeaders() - Auth/role check: admin-scoped, fail-closed on 401/403; route additionally gated signed-in + studio by the BFF proxy
Cross-references#
- Parent:
../../studio-overview.md - Shell:
../../../shell/04-auth-session.md - Sibling routes:
./studio-hathor-workbench-characters.md,./studio-hathor-faction-modeling.md - Component sources:
apps/oshun/web/src/components/studio/StudioHathorWorkbenchFactionsWorkspace.tsxapps/oshun/web/src/components/studio/StudioHathorWorkbenchFactionsRouteMap.ts
Open questions / known gaps#
- This lane and
faction-modelingshare the same/v1/admin/hathor/workbench-factionsbackend. Confirm whether both routes are meant to ship, and how the two presentations differ for operators. - Hathor is
unconfirmed-v1perWALKTHROUGH/matrix/routes.csv. Confirm whether the dedicated/studio/hathor/lane consoles ship at V1 or are internal-only.