Context. surface studio · domain isis · route /studio/isis/text-to-audio · auth signed-in + studio entitlement (AAA-gated — text-to-audio is in AAA_ONLY_STUDIO_ROUTES) · source apps/oshun/web/src/app/studio/isis/text-to-audio/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); 2026-07-03 addendum: studio-isis-text-to-audio.spec.ts proved the direct route remains hard-blocked by the Studio Isis boundary, then drove the localhost-only lane-bypass route against the real local BFF, including the live text-to-audio manifest, compatible/incompatible output-package checks, loading/error/malformed/missing-entry/check-network-failure/unauthorized/ anonymous states, route-map articles, sibling quick-actions, and 44px automated hit-target checks for the select, submit, and quick-actions.
Purpose#
Admin lane console over the shared generation manifest, scoped to the
text-to-audio contract. It reads the generation-type manifest (prompt and
output-package requirements) and lets the operator check whether a candidate
output type is compatible with text-to-audio generation. Reads via
/v1/admin/isis/generation-manifest and checks via its /check-output verb;
admin-scoped and fail-closed.
Entry points#
- Sibling quick-action from
/studio/isis/text-to-speech - Studio index (
/studio) - Direct URL / bookmark (AAA entitlement required)
Layout regions#
page.tsx mounts <ShellLayout active="studio"> (no breadcrumb panel) and
three panels: the workspace, the Route Map, and sibling quick-actions.
- Header: shell header
- Workspace panel (
data-isis-text-to-audio-workspace):<h1>(WorkspaceHeading) "Isis Text-to-Audio Workspace"- Summary paragraph (
data-isis-text-to-audio-summary) - Manifest (
data-tta-manifest) with controls (data-tta-image-controls,data-tta-requires-prompt,data-tta-output-rule) - Compatibility check form (
data-tta-check-form) + result (data-tta-compatible)
- Route Map panel (
data-isis-text-to-audio-route-map):<h2>Route Map</h2>over the route map (5 entries) - Sibling quick-actions panel:
/studio/isis/text-to-speech,/studio
States#
- Loading —
data-tta-loading - Unauthorized — 401/403 admin-scope fail-closed;
data-tta-unauthorized - Error — non-OK / malformed;
data-tta-error; missingtext-to-audiomanifest entry is treated as fail-closed error, not a fabricated form - Ready (manifest + form) — manifest + check form render
- Result —
data-tta-compatible; check failure →data-tta-check-error
Interactions#
Compatibility check form (data-tta-check-form)#
- Output type (
data-tta-field-output,<select>) - Check compatibility (
data-tta-check-submit, submit; disabled while checking) —POST /v1/admin/isis/generation-manifest/check-output
Route Map#
- Route-map articles ×5
Sibling quick-actions#
- Open Isis Text-to-Speech workspace →
/studio/isis/text-to-speech - Back to Studio workspace index →
/studio
Data & contracts#
- Reads:
GET /v1/admin/isis/generation-manifest(generation-type manifest) - Writes:
POST /v1/admin/isis/generation-manifest/check-output(validate an output type against the contract) - Realtime: none
- Caching: client fetch on mount,
cache: 'no-store',buildBffAuthHeaders() - Auth/role check: admin-scoped, fail-closed (401/403); route AAA-gated
(
text-to-audioinAAA_ONLY_STUDIO_ROUTES) - Component sources:
apps/oshun/web/src/components/studio/StudioIsisTextToAudioWorkspace.tsxapps/oshun/web/src/components/studio/StudioIsisTextToAudioRouteMap.ts
E2E coverage#
apps/oshun/web/e2e/studio-isis-text-to-audio.spec.ts— proves direct/studio/isis/text-to-audiois still hard-blocked by the Studio Isis boundary, then drives the localhost-only?__oshunStudioIsisLaneE2E=1lane bypass in the real Next shell with browser requests forwarded to the real local BFF. Covered paths:- Admin lane-bypass navigation loads the live text-to-audio manifest,
prompt-required / image-controls-disabled contract flags, the audio
output-package rule, the
image/video/audio/3d/textselect options, route-map articles, sibling quick-actions, bearer-authenticated manifest request, and 44px hit-target checks for the select, submit, and quick-action controls. - The compatibility form posts live BFF requests for compatible
text-to-audio → audioand incompatibletext-to-audio → image, asserting both the user-visible result and exact browser POST bodies. - Loading, missing manifest entry, 503 service failure, malformed manifest, check network failure, non-admin unauthorized, and anonymous redirect-before-render states all fail closed without fabricating a checker or compatibility result.
- Admin lane-bypass navigation loads the live text-to-audio manifest,
prompt-required / image-controls-disabled contract flags, the audio
output-package rule, the
Cross-references#
- Studio overview:
../../studio-overview.md - AAA gating:
libs/isis/entitlements/src/studio-boundary.ts - Shares the manifest endpoint with:
studio-isis-image-generation.md - Sibling routes:
Open questions / known gaps#
- No breadcrumb on this route — navigation via sibling quick-actions
- Reads the shared
/v1/admin/isis/generation-manifest(same endpoint as Image Generation) filtered to the text-to-audio contract - Route-map sub-paths are declared but not yet implemented as separate pages