Context. surface customer · domain lilith · route /lilith-studio/release · auth signed-in + studio:editorial · source apps/oshun/web/src/app/lilith-studio/release/page.tsx
Last walked. 2026-06-28 automated release-bridge walk (Playwright Chromium against real dev infra) — validated the release bridge route under the Lilith Studio editorial gate, release stage attributes, rollback pointer, evidence gate statuses, route-continuity links, and embedded provenance bundle for prov:lilith-studio:release-bridge:v3-shell. Evidence: apps/oshun/web/e2e/lilith-studio-shell-smoke.spec.ts and apps/oshun/web/e2e/lilith-provenance-inspector-smoke.spec.ts.
Purpose#
Operational release-readiness page for the V3 Lilith Studio shell. It closes the
previous shell-route gap where the surface grid advertised
/lilith-studio/release but no route existed. The page keeps draft,
editorial-candidate, release-edition, rollback, evidence-gate, and provenance
posture visible before V3 authoring work is promoted out of the studio.
Entry points#
- Lilith Studio shell "Release bridge" surface tab → "Open Release bridge"
- Direct URL / bookmark — yes, signed-in editorial only
- Route-continuity link from the page back to
/lilith-studio
Layout regions#
page.tsx exports metadata and renders <LilithStudioReleaseBridge />. The
route is wrapped by apps/oshun/web/src/app/lilith-studio/layout.tsx, which
owns the shared ShellLayout active="studio" and studio:editorial access
gate.
- Header: eyebrow "Lilith Studio / Release bridge", h1 "Release posture", one-sentence operational summary.
- Branch state panel (
aria-label="Release stages"): ordered list of threedata-release-stage-itemrows — draft, editorial candidate (current), release edition. - Evidence gates panel (
aria-label="Release evidence gates"): fourdata-release-gaterows — policy, taxonomy, provenance, version-history. - Route continuity panel (
aria-label="Release route links"): four internal links carryingdata-release-route-link— Lilith shell, provenance hub, versioning lane, review workflow. - Embedded provenance inspector:
<LilithProvenanceInspector />withsurfaceId="release-bridge"and the release-bridge provenance asset fromLILITH_STUDIO_SHELL_PROVENANCE_ASSETS.
States#
- Loading — client component; no network fetch; route renders once the shared shell hydrates.
- Editorial access granted — shell layout renders the release bridge for
studio:editorial. Covered bylilith-studio-shell-smoke.spec.ts. - Non-editorial access denied — inherited from
lilith-studio/layout.tsx; covered at shell level bylilith-studio-shell-smoke.spec.tsand sub-route level bylilith-scene-editor-smoke.spec.ts. - Current stage — root
data-release-stage="editorial-candidate"and the matching stage row hasdata-current="true". - Rollback pointer — root
data-rollback-pointer="draft". - Evidence passed / ready — policy, taxonomy, and provenance gates are
passed; version-history isready. - Offline — pure client surface should render once cached; cold offline navigation is not separately asserted.
- Standalone PWA — inherits Lilith Studio shell safe-area behavior; not separately asserted for this route.
Interactions#
Route continuity#
- Lilith shell (
data-release-route-link="/lilith-studio") →/lilith-studio - Provenance hub (
data-release-route-link="/lilith-studio/provenance") →/lilith-studio/provenance - Versioning lane
(
data-release-route-link="/studio/hathor/entity-version-management") →/studio/hathor/entity-version-management - Review workflow
(
data-release-route-link="/studio/review-approval-workflows") →/studio/review-approval-workflows
Release state#
- Three stage rows (
data-release-stage-item) — read-only; draft, editorial candidate, release edition. - Four evidence gates (
data-release-gate) — read-only; policy, taxonomy, provenance, version-history.
Provenance#
- Embedded
LilithProvenanceInspector—data-testid="lilith-provenance-inspector-release-bridge", one release asset, defaultdata-open-provenance-id=prov:lilith-studio:release-bridge:v3-shell, bundle includes"surfaceId": "release-bridge".
Data & contracts#
- Reads:
- local constants in
LilithStudioReleaseBridge.tsx LILITH_STUDIO_SHELL_PROVENANCE_ASSETSfromapps/oshun/web/src/app/lilith-studio/LilithStudioShell.tsx
- local constants in
- Writes: none; route is read-only release posture.
- Realtime: none.
- Caching: client bundle only; no BFF fetch.
- Auth/role check: inherited from
lilith-studio/layout.tsxviahasLilithStudioAccess()requiringadmin:*orstudio:editorial.
Cross-references#
- Parent shell:
lilith-studio.md - Provenance hub:
lilith-studio-provenance.md - Component sources:
apps/oshun/web/src/app/lilith-studio/release/page.tsxapps/oshun/web/src/app/lilith-studio/release/LilithStudioReleaseBridge.tsxapps/oshun/web/src/app/lilith-studio/LilithProvenanceInspector.tsx
- E2E evidence:
apps/oshun/web/e2e/lilith-studio-shell-smoke.spec.tsapps/oshun/web/e2e/lilith-provenance-inspector-smoke.spec.ts
Open questions / known gaps#
- Release bridge is currently read-only posture; confirm whether future publish/rollback actions should POST to a release queue or remain in V1 Studio's versioning lane.
- Cold offline and standalone PWA safe-area behavior are inherited but not asserted specifically for this route.