Context. surface studio · domain yemaya · route /studio/yemaya/screenplay-tools · auth signed-in + studio entitlement · source apps/oshun/web/src/app/studio/yemaya/screenplay-tools/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 wired to the @yemaya/pre-production Fountain screenplay
parser — paste a Fountain script and get the typed element breakdown (scene
headings, action, character, dialogue, …) plus script statistics (scene count,
word counts, distinct characters / cast). Wired over
/v1/admin/yemaya/screenplay-tools; access is admin-scoped and fail-closed.
Entry points#
- No breadcrumb panel on this page.
- Reachable from sibling Yemaya routes that quick-action here (e.g.,
asset-organization,storyboard-creation). - Direct URL / bookmark (signed-in + studio entitlement).
Layout regions#
page.tsx renders ShellLayout active="studio" and:
- Workspace panel (
StudioYemayaScreenplayToolsWorkspace,data-yemaya-screenplay-tools-workspace):<h1>(WorkspaceHeading) "Yemaya Screenplay Tools Workspace".- Summary paragraph (
data-yemaya-screenplay-tools-summary). - The parse form (
data-yemaya-st-parse-form) renders directly once the catalog loads (no separate lane heading).
- Route Map panel (
data-yemaya-screenplay-tools-route-map):<h2>"Route Map" + five entries fromSTUDIO_YEMAYA_SCREENPLAY_TOOLS_ROUTE_MAP. - Quick-action panel: two
quickActionlinks.
States#
- Loading —
data-yemaya-st-loading"Loading parser…" until the GET catalog resolves. - Unauthorized —
data-yemaya-st-unauthorized"Access restricted." on a 401/403 (Yemaya admin scope required). - Error —
data-yemaya-st-error"Could not load screenplay tools." on a non-OK / malformed catalog response. - Ready (form) — the Fountain-screenplay form renders once the catalog loads.
- Result —
data-yemaya-st-resultwith a stats line (data-yemaya-st-stats, scene count · word count · cast); submit-side validation surfaces indata-yemaya-st-parse-error.
Interactions#
Parse form#
- "Fountain screenplay" —
<textarea data-yemaya-st-field-source>(aria-label "fountain screenplay"). - "Parse screenplay" —
<button data-yemaya-st-parse-submit>; submitting POSTs the source to/v1/admin/yemaya/screenplay-tools/parseand renders the typed element breakdown + script statistics.
Route map#
data-yemaya-screenplay-tools-route-map — five non-interactive entries:
-
/studio/yemaya/screenplay-tools— primary workspace -
/studio/yemaya/screenplay-tools/drafts/[draftId] -
/studio/yemaya/screenplay-tools/coverage/[coverageMatrixId] -
/studio/yemaya/screenplay-tools/revisions/[revisionId] -
/studio/yemaya/screenplay-tools/governance/[policyId]
Quick actions#
- "Open Yemaya Asset Organization workspace" →
/studio/yemaya/asset-organization. - "Back to Studio workspace index" →
/studio.
Data & contracts#
- Reads:
GET /v1/admin/yemaya/screenplay-tools(catalog: parser metadata) on mount. - Writes:
POST /v1/admin/yemaya/screenplay-tools/parse(Fountain source → typed elements + statistics). - Realtime: none.
- Caching: client
fetchon mount withcache: 'no-store';buildBffAuthHeaders(). - Auth/role check: admin-scoped, fail-closed (401/403 → unauthorized state); signed-in + studio entitlement enforced by the proxy/middleware.
Cross-references#
- Studio overview:
studio-overview.md - Workspace source:
apps/oshun/web/src/components/studio/StudioYemayaScreenplayToolsWorkspace.tsx - Route map source:
apps/oshun/web/src/components/studio/StudioYemayaScreenplayToolsRouteMap.ts - Sibling lane (parse + export):
studio-yemaya-storyboard-creation.md - Feature spec:
V1/features.md
Open questions / known gaps#
- The route-map dynamic children (drafts / coverage / revisions / governance)
are sitemap-only — confirm whether any are backed by
page.tsxfiles yet.