V1 Web PWA · Surface walkthrough

Lilith Studio · release bridge

A per-surface walkthrough of the V1 Web PWA customer surface: layout, states, interactions, data, and cross-references.

walked
8sections3 minread

On this page

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 three data-release-stage-item rows — draft, editorial candidate (current), release edition.
  • Evidence gates panel (aria-label="Release evidence gates"): four data-release-gate rows — policy, taxonomy, provenance, version-history.
  • Route continuity panel (aria-label="Release route links"): four internal links carrying data-release-route-link — Lilith shell, provenance hub, versioning lane, review workflow.
  • Embedded provenance inspector: <LilithProvenanceInspector /> with surfaceId="release-bridge" and the release-bridge provenance asset from LILITH_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 by lilith-studio-shell-smoke.spec.ts.
  • Non-editorial access denied — inherited from lilith-studio/layout.tsx; covered at shell level by lilith-studio-shell-smoke.spec.ts and sub-route level by lilith-scene-editor-smoke.spec.ts.
  • Current stage — root data-release-stage="editorial-candidate" and the matching stage row has data-current="true".
  • Rollback pointer — root data-rollback-pointer="draft".
  • Evidence passed / ready — policy, taxonomy, and provenance gates are passed; version-history is ready.
  • 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 LilithProvenanceInspectordata-testid="lilith-provenance-inspector-release-bridge", one release asset, default data-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_ASSETS from apps/oshun/web/src/app/lilith-studio/LilithStudioShell.tsx
  • 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.tsx via hasLilithStudioAccess() requiring admin:* or studio: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.tsx
    • apps/oshun/web/src/app/lilith-studio/release/LilithStudioReleaseBridge.tsx
    • apps/oshun/web/src/app/lilith-studio/LilithProvenanceInspector.tsx
  • E2E evidence:
    • apps/oshun/web/e2e/lilith-studio-shell-smoke.spec.ts
    • apps/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.